1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
|
# encoding: UTF-8
unless defined? ASCIIDOCTOR_PROJECT_DIR
$: << File.dirname(__FILE__); $:.uniq!
require 'test_helper'
end
context 'Preamble' do
test 'title and single paragraph preamble before section' do
input = <<-EOS
= Title
Preamble paragraph 1.
== First Section
Section paragraph 1.
EOS
result = render_string(input)
assert_xpath '//p', result, 2
assert_xpath '//*[@id="preamble"]', result, 1
assert_xpath '//*[@id="preamble"]//p', result, 1
assert_xpath '//*[@id="preamble"]/following-sibling::*//h2[@id="_first_section"]', result, 1
assert_xpath '//*[@id="preamble"]/following-sibling::*//p', result, 1
end
test 'title of preface is blank by default in DocBook output' do
input = <<-EOS
= Document Title
:doctype: book
Preface content.
== First Section
Section content.
EOS
result = render_string input, :backend => :docbook
assert_xpath '//preface/title', result, 1
title_node = xmlnodes_at_xpath '//preface/title', result, 1
assert_equal '', title_node.text
end
test 'preface-title attribute is assigned as title of preface in DocBook output' do
input = <<-EOS
= Document Title
:doctype: book
:preface-title: Preface
Preface content.
== First Section
Section content.
EOS
result = render_string input, :backend => :docbook
assert_xpath '//preface/title[text()="Preface"]', result, 1
end
test 'title and multi-paragraph preamble before section' do
input = <<-EOS
= Title
Preamble paragraph 1.
Preamble paragraph 2.
== First Section
Section paragraph 1.
EOS
result = render_string(input)
assert_xpath '//p', result, 3
assert_xpath '//*[@id="preamble"]', result, 1
assert_xpath '//*[@id="preamble"]//p', result, 2
assert_xpath '//*[@id="preamble"]/following-sibling::*//h2[@id="_first_section"]', result, 1
assert_xpath '//*[@id="preamble"]/following-sibling::*//p', result, 1
end
test 'should not wrap content in preamble if document has title but no sections' do
input = <<-EOS
= Title
paragraph
EOS
result = render_string(input)
assert_xpath '//p', result, 1
assert_xpath '//*[@id="content"]/*[@class="paragraph"]/p', result, 1
assert_xpath '//*[@id="content"]/*[@class="paragraph"]/following-sibling::*', result, 0
end
test 'title and section without preamble' do
input = <<-EOS
= Title
== First Section
Section paragraph 1.
EOS
result = render_string(input)
assert_xpath '//p', result, 1
assert_xpath '//*[@id="preamble"]', result, 0
assert_xpath '//h2[@id="_first_section"]', result, 1
end
test 'no title with preamble and section' do
input = <<-EOS
Preamble paragraph 1.
== First Section
Section paragraph 1.
EOS
result = render_string(input)
assert_xpath '//p', result, 2
assert_xpath '//*[@id="preamble"]', result, 0
assert_xpath '//h2[@id="_first_section"]/preceding::p', result, 1
end
test 'preamble in book doctype' do
input = <<-EOS
= Book
:doctype: book
Back then...
= Chapter One
[partintro]
It was a dark and stormy night...
== Scene One
Someone's gonna get axed.
= Chapter Two
[partintro]
They couldn't believe their eyes when...
== Scene One
The axe came swinging.
EOS
d = document_from_string(input)
assert_equal 'book', d.doctype
output = d.render
assert_xpath '//h1', output, 3
assert_xpath %{//*[@id="preamble"]//p[text() = "Back then#{expand_entity 8230}#{expand_entity 8203}"]}, output, 1
end
test 'should render table of contents in preamble if toc-placement attribute value is preamble' do
input = <<-EOS
= Article
:toc:
:toc-placement: preamble
Once upon a time...
== Section One
It was a dark and stormy night...
== Section Two
They couldn't believe their eyes when...
EOS
output = render_string input
assert_xpath '//*[@id="preamble"]/*[@id="toc"]', output, 1
end
end
|