spec/util_interpolation_spec.lua
author Matthew Wild <mwild1@gmail.com>
Wed, 27 Mar 2024 15:35:15 +0000
branch0.12
changeset 13469 54a936345aaa
parent 11312 5d4d90d1eabb
permissions -rw-r--r--
prosodyctl check: Warn about invalid domain names in the config file This ensures that domain names of virtual hosts and components are valid in XMPP, and that they are encoded correctly.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9741
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     1
local template = [[
10354
75eab21b7968 util.interpolation: Test #1452
Kim Alvefur <zash@zash.se>
parents: 9741
diff changeset
     2
{greet!?Hi}, {name?world}!
9741
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     3
]];
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     4
local expect1 = [[
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     5
Hello, WORLD!
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     6
]];
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     7
local expect2 = [[
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     8
Hello, world!
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     9
]];
10354
75eab21b7968 util.interpolation: Test #1452
Kim Alvefur <zash@zash.se>
parents: 9741
diff changeset
    10
local expect3 = [[
75eab21b7968 util.interpolation: Test #1452
Kim Alvefur <zash@zash.se>
parents: 9741
diff changeset
    11
Hi, YOU!
75eab21b7968 util.interpolation: Test #1452
Kim Alvefur <zash@zash.se>
parents: 9741
diff changeset
    12
]];
10355
72b23c5f74fb util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents: 10354
diff changeset
    13
local template_array = [[
72b23c5f74fb util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents: 10354
diff changeset
    14
{foo#{idx}. {item}
72b23c5f74fb util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents: 10354
diff changeset
    15
}]]
72b23c5f74fb util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents: 10354
diff changeset
    16
local expect_array = [[
72b23c5f74fb util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents: 10354
diff changeset
    17
1. HELLO
72b23c5f74fb util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents: 10354
diff changeset
    18
2. WORLD
72b23c5f74fb util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents: 10354
diff changeset
    19
]]
10416
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10356
diff changeset
    20
local template_func_pipe = [[
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10356
diff changeset
    21
{foo|sort#{idx}. {item}
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10356
diff changeset
    22
}]]
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10356
diff changeset
    23
local expect_func_pipe = [[
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10356
diff changeset
    24
1. A
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10356
diff changeset
    25
2. B
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10356
diff changeset
    26
3. C
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10356
diff changeset
    27
4. D
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10356
diff changeset
    28
]]
10356
dc1e6c2fb50a util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents: 10355
diff changeset
    29
local template_map = [[
dc1e6c2fb50a util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents: 10355
diff changeset
    30
{foo%{idx}: {item!}
dc1e6c2fb50a util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents: 10355
diff changeset
    31
}]]
dc1e6c2fb50a util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents: 10355
diff changeset
    32
local expect_map = [[
dc1e6c2fb50a util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents: 10355
diff changeset
    33
FOO: bar
dc1e6c2fb50a util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents: 10355
diff changeset
    34
]]
11068
af1e3b7d9ea3 util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents: 10417
diff changeset
    35
local template_not = [[
11069
95eb1a981ef6 util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents: 11068
diff changeset
    36
{thing~Thing is falsy}{thing&Thing is truthy}
11068
af1e3b7d9ea3 util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents: 10417
diff changeset
    37
]]
af1e3b7d9ea3 util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents: 10417
diff changeset
    38
local expect_not_true = [[
11069
95eb1a981ef6 util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents: 11068
diff changeset
    39
Thing is truthy
11068
af1e3b7d9ea3 util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents: 10417
diff changeset
    40
]]
af1e3b7d9ea3 util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents: 10417
diff changeset
    41
local expect_not_nil = [[
11069
95eb1a981ef6 util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents: 11068
diff changeset
    42
Thing is falsy
95eb1a981ef6 util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents: 11068
diff changeset
    43
]]
95eb1a981ef6 util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents: 11068
diff changeset
    44
local expect_not_false = [[
95eb1a981ef6 util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents: 11068
diff changeset
    45
Thing is falsy
11068
af1e3b7d9ea3 util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents: 10417
diff changeset
    46
]]
9741
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    47
describe("util.interpolation", function ()
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    48
	it("renders", function ()
10416
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10356
diff changeset
    49
		local render = require "util.interpolation".new("%b{}", string.upper, { sort = function (t) table.sort(t) return t end });
9741
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    50
		assert.equal(expect1, render(template, { greet = "Hello", name = "world" }));
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    51
		assert.equal(expect2, render(template, { greet = "Hello" }));
10354
75eab21b7968 util.interpolation: Test #1452
Kim Alvefur <zash@zash.se>
parents: 9741
diff changeset
    52
		assert.equal(expect3, render(template, { name = "you" }));
10355
72b23c5f74fb util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents: 10354
diff changeset
    53
		assert.equal(expect_array, render(template_array, { foo = { "Hello", "World" } }));
10416
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10356
diff changeset
    54
		assert.equal(expect_func_pipe, render(template_func_pipe, { foo = { "c", "a", "d", "b", } }));
10417
604096ce2f82 util.interpolation: Add commented test case for passing nil to filter
Kim Alvefur <zash@zash.se>
parents: 10416
diff changeset
    55
		-- assert.equal("", render(template_func_pipe, { foo = nil })); -- FIXME
10356
dc1e6c2fb50a util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents: 10355
diff changeset
    56
		assert.equal(expect_map, render(template_map, { foo = { foo = "bar" } }));
11068
af1e3b7d9ea3 util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents: 10417
diff changeset
    57
		assert.equal(expect_not_true, render(template_not, { thing = true }));
af1e3b7d9ea3 util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents: 10417
diff changeset
    58
		assert.equal(expect_not_nil, render(template_not, { thing = nil }));
11069
95eb1a981ef6 util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents: 11068
diff changeset
    59
		assert.equal(expect_not_false, render(template_not, { thing = false }));
9741
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    60
	end);
11312
5d4d90d1eabb util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents: 11069
diff changeset
    61
	it("fixes #1623", function ()
5d4d90d1eabb util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents: 11069
diff changeset
    62
		local render = require "util.interpolation".new("%b{}", string.upper, { x = string.lower });
5d4d90d1eabb util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents: 11069
diff changeset
    63
		assert.equal("", render("{foo?}", {  }))
5d4d90d1eabb util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents: 11069
diff changeset
    64
		assert.equal("", render("{foo|x?}", {  }))
5d4d90d1eabb util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents: 11069
diff changeset
    65
	end);
9741
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    66
end);