summaryrefslogtreecommitdiff
path: root/specs/sections.yml
blob: df015bbb628e4e84b0ddb04041412d42ededf0a0 (plain)
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
tests:
  - name: Truthy
    desc: Truthy sections should have their contents rendered.
    data: { boolean: true }
    template: '"{{#boolean}}This should be rendered.{{/boolean}}"'
    expected: '"This should be rendered."'

  - name: Falsey
    desc: Falsey sections should have their contents omitted.
    data: { boolean: false }
    template: '"{{#boolean}}This should not be rendered.{{/boolean}}"'
    expected: '""'

  - name: Context
    desc: Objects and hashes should be pushed onto the context stack.
    data: { context: { name: 'Joe' } }
    template: '"{{#context}}Hi {{name}}.{{/context}}"'
    expected: '"Hi Joe."'

  - name: List
    desc: Lists should be iterated; list items should visit the context stack.
    data: { list: [ { n: 1 }, { n: 2 }, { n: 3 } ] }
    template: '"{{#list}}{{n}}{{/list}}"'
    expected: '"123"'

  - name: Empty List
    desc: Empty lists should behave like falsey values.
    data: { list: [ ] }
    template: '"{{#list}}Yay lists!{{/list}}"'
    expected: '""'

  - name: Doubled
    desc: Multiple sections per template should be permitted.
    data: { t: true, two: 'second' }
    template: |
      {{#t}}
      * first
      {{/t}}
      * {{two}}
      {{#t}}
      * third
      {{/t}}
    expected: |
      * first
      * second
      * third

  # Whitespace Sensitivity

  - name: Surrounding Whitespace
    desc: Sections should not alter surrounding whitespace.
    data: { boolean: true }
    template: " | {{#boolean}}\t|\t{{/boolean}} | \n"
    expected: " | \t|\t | \n"

  - name: Standalone Lines
    desc: Standalone lines should be removed from the template.
    data: { boolean: true }
    template: |
      | This Is
      {{#boolean}}
      |
      {{/boolean}}
      | A Line
    expected: |
      | This Is
      |
      | A Line

  - name: Indented Standalone Lines
    desc: Indented standalone lines should be removed from the template.
    data: { boolean: true }
    template: |
      | This Is
        {{#boolean}}
      |
        {{/boolean}}
      | A Line
    expected: |
      | This Is
      |
      | A Line

  # Whitespace Insensitivity

  - name: Padding
    desc: Superfluous in-tag whitespace should be ignored.
    data: { boolean: true }
    template: '|{{# boolean }}={{/ boolean }}|'
    expected: '|=|'