aboutsummaryrefslogtreecommitdiffstats
path: root/tests/template/partials.yml
diff options
context:
space:
mode:
Diffstat (limited to 'tests/template/partials.yml')
-rw-r--r--tests/template/partials.yml109
1 files changed, 109 insertions, 0 deletions
diff --git a/tests/template/partials.yml b/tests/template/partials.yml
new file mode 100644
index 0000000..8c41543
--- /dev/null
+++ b/tests/template/partials.yml
@@ -0,0 +1,109 @@
+overview: |
+ Partial tags are used to expand an external template into the current
+ template.
+
+ The tag's content MUST be a non-whitespace character sequence NOT containing
+ the current closing delimiter.
+
+ This tag's content names the partial to inject. Set Delimiter tags MUST NOT
+ affect the parsing of a partial. The partial MUST be rendered against the
+ context stack local to the tag. If the named partial cannot be found, the
+ empty string SHOULD be used instead, as in interpolations.
+
+ Partial tags SHOULD be treated as standalone when appropriate. If this tag
+ is used standalone, any whitespace preceding the tag should treated as
+ indentation, and prepended to each line of the partial before rendering.
+tests:
+ - name: Basic Behavior
+ desc: The greater-than operator should expand to the named partial.
+ data: { }
+ template: '"{{>text}}"'
+ partials: { text: 'from partial' }
+ expected: '"from partial"'
+
+ - name: Failed Lookup
+ desc: The empty string should be used when the named partial is not found.
+ data: { }
+ template: '"{{>text}}"'
+ partials: { }
+ expected: '""'
+
+ - name: Context
+ desc: The greater-than operator should operate within the current context.
+ data: { text: 'content' }
+ template: '"{{>partial}}"'
+ partials: { partial: '*{{text}}*' }
+ expected: '"*content*"'
+
+ - name: Recursion
+ desc: The greater-than operator should properly recurse.
+ data: { content: "X", nodes: [ { content: "Y", nodes: [] } ] }
+ template: '{{>node}}'
+ partials: { node: '{{content}}<{{#nodes}}{{>node}}{{/nodes}}>' }
+ expected: 'X<Y<>>'
+
+ # Whitespace Sensitivity
+
+ - name: Surrounding Whitespace
+ desc: The greater-than operator should not alter surrounding whitespace.
+ data: { }
+ template: '| {{>partial}} |'
+ partials: { partial: "\t|\t" }
+ expected: "| \t|\t |"
+
+ - name: Inline Indentation
+ desc: Whitespace should be left untouched.
+ data: { data: '|' }
+ template: " {{data}} {{> partial}}\n"
+ partials: { partial: ">\n>" }
+ expected: " | >\n>\n"
+
+ - name: Standalone Line Endings
+ desc: '"\r\n" should be considered a newline for standalone tags.'
+ data: { }
+ template: "|\r\n{{>partial}}\r\n|"
+ partials: { partial: ">" }
+ expected: "|\r\n>|"
+
+ - name: Standalone Without Previous Line
+ desc: Standalone tags should not require a newline to precede them.
+ data: { }
+ template: " {{>partial}}\n>"
+ partials: { partial: ">\n>"}
+ expected: " >\n >>"
+
+ - name: Standalone Without Newline
+ desc: Standalone tags should not require a newline to follow them.
+ data: { }
+ template: ">\n {{>partial}}"
+ partials: { partial: ">\n>" }
+ expected: ">\n >\n >"
+
+ - name: Standalone Indentation
+ desc: Each line of the partial should be indented before rendering.
+ data: { content: "<\n->" }
+ template: |
+ \
+ {{>partial}}
+ /
+ partials:
+ partial: |
+ |
+ {{{content}}}
+ |
+ expected: |
+ \
+ |
+ <
+ ->
+ |
+ /
+
+ # Whitespace Insensitivity
+
+ - name: Padding Whitespace
+ desc: Superfluous in-tag whitespace should be ignored.
+ data: { boolean: true }
+ template: "|{{> partial }}|"
+ partials: { partial: "[]" }
+ expected: '|[]|'