# ~*~ encoding: utf-8 ~*~ require File.expand_path(File.join(File.dirname(__FILE__), 'helper')) require File.expand_path '../../lib/gollum/views/page', __FILE__ context "Precious::Views::Page" do setup do @path = cloned_testpath('examples/empty.git') @wiki = Gollum::Wiki.new(@path) end teardown do FileUtils.rm_rf(@path) end test "breadcrumbs guard against malicious input" do malicious_path = '' + "\n # 3", commit_details) page = @wiki.page(title) @view = Precious::Views::Page.new @view.instance_variable_set :@page, page @view.instance_variable_set :@content, page.formatted_data @view.instance_variable_set :@h1_title, true # Test page_header_from_content(@content) assert @view.page_header, "1 & 2" end test "page header uses filename when h1_title is false" do title = "H1" contents = <<~TEXT # First H1 header # Second H1 header TEXT @wiki.write_page(title, :markdown, contents, commit_details) page = @wiki.page(title) @view = Precious::Views::Page.new @view.instance_variable_set :@page, page @view.instance_variable_set :@content, page.formatted_data @view.instance_variable_set :@h1_title, false assert_equal @view.page_header, "H1" end test "page header uses filename when h1_title is true" do contents = <<~TEXT # First H1 header # Second H1 header TEXT @wiki.write_page("H1", :markdown, contents, commit_details) page = @wiki.page("H1") @view = Precious::Views::Page.new @view.instance_variable_set :@page, page @view.instance_variable_set :@content, page.formatted_data @view.instance_variable_set :@h1_title, true assert_equal @view.page_header, "First H1 header" end test "metadata is rendered into a table" do title = 'metadata test' @wiki.write_page(title, :markdown, "---\nsome: metadata\nhere: for you\n---\n# Some markdown\nIn this doc") page = @wiki.page(title) @view = Precious::Views::Page.new @view.instance_variable_set :@page, page assert_equal @view.rendered_metadata, <<-EOS
some here
metadata for you
EOS end test "allow numbered headings based on metadata" do title = 'header enumeration test' @wiki.write_page(title, :markdown, "---\nheader_enum: true\n---\n# Some markdown\nIn this doc") page = @wiki.page(title) @view = Precious::Views::Page.new @view.instance_variable_set :@page, page assert_equal @view.header_enum?, true assert_equal @view.header_enum_style, 'decimal' title = 'header_enum test2' @wiki.write_page(title, :markdown, "---\nheader_enum: 'lower-roman'\n---\n# Some markdown\nIn this doc") page = @wiki.page(title) @view = Precious::Views::Page.new @view.instance_variable_set :@page, page assert_equal @view.header_enum?, true assert_equal @view.header_enum_style, 'lower-roman' # With invalid style title = 'header_enum test3' @wiki.write_page(title, :markdown, "---\nheader_enum: 'roman'\n---\n# Some markdown\nIn this doc") page = @wiki.page(title) @view = Precious::Views::Page.new @view.instance_variable_set :@page, page assert_equal @view.header_enum?, true assert_equal @view.header_enum_style, 'decimal' end test 'page has sha id' do title = 'test' @wiki.write_page(title, :markdown, 'Test' + "\n # 3", commit_details) page = @wiki.page(title) @view = Precious::Views::Page.new @view.instance_variable_set :@page, page assert_equal "594e928cc5dcb6d833dfb86bb36076fd4a84eea7", @view.id end test "breadcrumbs" do @wiki.write_page('subdir/BC Test 1', :markdown, 'Test', commit_details) page = @wiki.page('subdir/BC Test 1') @view = Precious::Views::Page.new @view.instance_variable_set :@page, page @view.instance_variable_set :@content, page.formatted_data assert_equal @view.breadcrumb, "" # No breadcrumb on unnested page @wiki.write_page('BC Test 2', :markdown, 'Test', commit_details) page = @wiki.page('BC Test 2') @view = Precious::Views::Page.new @view.instance_variable_set :@page, page @view.instance_variable_set :@content, page.formatted_data assert_equal @view.breadcrumb, '' end test "body_side is 'right' by default" do @view = Precious::Views::Page.new assert_equal @view.body_side, "right" end test "body_side is 'left' if bar_side side is 'right'" do @view = Precious::Views::Page.new @view.instance_variable_set :@bar_side, :right assert_equal @view.body_side, "left" end test "links to pages containing ?" do @view = Precious::Views::Page.new assert_equal @view.page_route("Page?"), '/Page%3F' end end