* Add a test for template filter * Add a test for template filter with page parameter * Passing page as a parameter to template filter
This commit is contained in:
+3
-2
@@ -29,9 +29,10 @@ module Gollum
|
|||||||
@@filters[pattern] = replacement
|
@@filters[pattern] = replacement
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.apply_filters(data)
|
def self.apply_filters(wiki_page, data)
|
||||||
@@filters.each do |pattern, replacement|
|
@@filters.each do |pattern, replacement|
|
||||||
data.gsub!(pattern, replacement.call)
|
params = replacement.parameters.length == 0 ? nil : wiki_page
|
||||||
|
data.gsub!(pattern, replacement.call(*params))
|
||||||
end
|
end
|
||||||
data
|
data
|
||||||
end
|
end
|
||||||
|
|||||||
+3
-3
@@ -369,7 +369,7 @@ module Precious
|
|||||||
@name = wikip.name
|
@name = wikip.name
|
||||||
@ext = wikip.ext
|
@ext = wikip.ext
|
||||||
@path = wikip.path
|
@path = wikip.path
|
||||||
@template_page = load_template(@path) if settings.wiki_options[:template_page]
|
@template_page = load_template(wikip, @path) if settings.wiki_options[:template_page]
|
||||||
@allow_uploads = wikip.wiki.allow_uploads
|
@allow_uploads = wikip.wiki.allow_uploads
|
||||||
@upload_dest = find_upload_dest(wikip.fullpath)
|
@upload_dest = find_upload_dest(wikip.fullpath)
|
||||||
|
|
||||||
@@ -661,9 +661,9 @@ module Precious
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def load_template(path)
|
def load_template(wiki_page, path)
|
||||||
template_page = wiki_page(::File.join(path, '_Template')).page || wiki_page('/_Template').page
|
template_page = wiki_page(::File.join(path, '_Template')).page || wiki_page('/_Template').page
|
||||||
template_page ? Gollum::TemplateFilter.apply_filters(template_page.text_data) : nil
|
template_page ? Gollum::TemplateFilter.apply_filters(wiki_page, template_page.text_data) : nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_wiki_page(wiki, page, content, commit, name = nil, format = nil)
|
def update_wiki_page(wiki, page, content, commit, name = nil, format = nil)
|
||||||
|
|||||||
@@ -344,6 +344,45 @@ EOF
|
|||||||
Precious::App.set(:wiki_options, { :template_page => false })
|
Precious::App.set(:wiki_options, { :template_page => false })
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "create with template filter without parameter" do
|
||||||
|
Precious::App.set(:wiki_options, { :template_page => true })
|
||||||
|
|
||||||
|
# arrange
|
||||||
|
now = Time.parse('2022-04-16')
|
||||||
|
Gollum::TemplateFilter.add_filter("{{today}}", & -> () { now.strftime("%Y-%m-%d") })
|
||||||
|
template_content = "# Daily Log, {{today}}"
|
||||||
|
|
||||||
|
@wiki.write_page("daily-logs/_Template",
|
||||||
|
:markdown,
|
||||||
|
template_content)
|
||||||
|
# act
|
||||||
|
get "/gollum/create/daily-logs/test"
|
||||||
|
# assert
|
||||||
|
assert last_response.ok?
|
||||||
|
assert_match("# Daily Log, 2022-04-16", last_response.body)
|
||||||
|
|
||||||
|
Precious::App.set(:wiki_options, { :template_page => false })
|
||||||
|
end
|
||||||
|
|
||||||
|
test "create with template filter with parameter" do
|
||||||
|
Precious::App.set(:wiki_options, { :template_page => true })
|
||||||
|
|
||||||
|
# arrange
|
||||||
|
Gollum::TemplateFilter.add_filter("{{page_name}}", & -> (page) { page.name })
|
||||||
|
template_content = "# Daily Log, {{page_name}}"
|
||||||
|
|
||||||
|
@wiki.write_page("daily-logs/_Template",
|
||||||
|
:markdown,
|
||||||
|
template_content)
|
||||||
|
# act
|
||||||
|
get "/gollum/create/daily-logs/2022-04-16"
|
||||||
|
# assert
|
||||||
|
assert last_response.ok?
|
||||||
|
assert_match("# Daily Log, 2022-04-16", last_response.body)
|
||||||
|
|
||||||
|
Precious::App.set(:wiki_options, { :template_page => false })
|
||||||
|
end
|
||||||
|
|
||||||
test "edit returns nil for non-existant page" do
|
test "edit returns nil for non-existant page" do
|
||||||
# post '/edit' fails. post '/edit/' works.
|
# post '/edit' fails. post '/edit/' works.
|
||||||
page = 'not-real-page'
|
page = 'not-real-page'
|
||||||
|
|||||||
Reference in New Issue
Block a user