Annotate

spec/util_interpolation_spec.lua @ 12995:e385f3a06673

moduleapi: Add 'peek' to :may() and new :could() helper to suppress logging The current method logs scary "access denied" messages on failure - this is generally very useful when debugging access control stuff, but in some cases the call is simply a check to see if someone *could* perform an action, even if they haven't requested it yet. One example is determining whether to show the user as an admin in disco. The 'peek' parameter, if true, will suppress such logging. The :could() method is just a simple helper that can make the calling code a bit more readable (suggested by Zash).
author Matthew Wild <mwild1@gmail.com>
date Sun, 26 Mar 2023 14:06:04 +0100
parent 11308:5d4d90d1eabb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9737
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local template = [[
10350
75eab21b7968 util.interpolation: Test #1452
Kim Alvefur <zash@zash.se>
parents: 9737
diff changeset
2 {greet!?Hi}, {name?world}!
9737
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 ]];
10350
75eab21b7968 util.interpolation: Test #1452
Kim Alvefur <zash@zash.se>
parents: 9737
diff changeset
10 local expect3 = [[
75eab21b7968 util.interpolation: Test #1452
Kim Alvefur <zash@zash.se>
parents: 9737
diff changeset
11 Hi, YOU!
75eab21b7968 util.interpolation: Test #1452
Kim Alvefur <zash@zash.se>
parents: 9737
diff changeset
12 ]];
10351
72b23c5f74fb util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents: 10350
diff changeset
13 local template_array = [[
72b23c5f74fb util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents: 10350
diff changeset
14 {foo#{idx}. {item}
72b23c5f74fb util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents: 10350
diff changeset
15 }]]
72b23c5f74fb util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents: 10350
diff changeset
16 local expect_array = [[
72b23c5f74fb util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents: 10350
diff changeset
17 1. HELLO
72b23c5f74fb util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents: 10350
diff changeset
18 2. WORLD
72b23c5f74fb util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents: 10350
diff changeset
19 ]]
10412
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10352
diff changeset
20 local template_func_pipe = [[
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10352
diff changeset
21 {foo|sort#{idx}. {item}
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10352
diff changeset
22 }]]
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10352
diff changeset
23 local expect_func_pipe = [[
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10352
diff changeset
24 1. A
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10352
diff changeset
25 2. B
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10352
diff changeset
26 3. C
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10352
diff changeset
27 4. D
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10352
diff changeset
28 ]]
10352
dc1e6c2fb50a util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents: 10351
diff changeset
29 local template_map = [[
dc1e6c2fb50a util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents: 10351
diff changeset
30 {foo%{idx}: {item!}
dc1e6c2fb50a util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents: 10351
diff changeset
31 }]]
dc1e6c2fb50a util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents: 10351
diff changeset
32 local expect_map = [[
dc1e6c2fb50a util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents: 10351
diff changeset
33 FOO: bar
dc1e6c2fb50a util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents: 10351
diff changeset
34 ]]
11064
af1e3b7d9ea3 util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents: 10413
diff changeset
35 local template_not = [[
11065
95eb1a981ef6 util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents: 11064
diff changeset
36 {thing~Thing is falsy}{thing&Thing is truthy}
11064
af1e3b7d9ea3 util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents: 10413
diff changeset
37 ]]
af1e3b7d9ea3 util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents: 10413
diff changeset
38 local expect_not_true = [[
11065
95eb1a981ef6 util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents: 11064
diff changeset
39 Thing is truthy
11064
af1e3b7d9ea3 util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents: 10413
diff changeset
40 ]]
af1e3b7d9ea3 util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents: 10413
diff changeset
41 local expect_not_nil = [[
11065
95eb1a981ef6 util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents: 11064
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: 11064
diff changeset
43 ]]
95eb1a981ef6 util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents: 11064
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: 11064
diff changeset
45 Thing is falsy
11064
af1e3b7d9ea3 util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents: 10413
diff changeset
46 ]]
9737
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 ()
10412
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10352
diff changeset
49 local render = require "util.interpolation".new("%b{}", string.upper, { sort = function (t) table.sort(t) return t end });
9737
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" }));
10350
75eab21b7968 util.interpolation: Test #1452
Kim Alvefur <zash@zash.se>
parents: 9737
diff changeset
52 assert.equal(expect3, render(template, { name = "you" }));
10351
72b23c5f74fb util.interpolation: Test array syntax
Kim Alvefur <zash@zash.se>
parents: 10350
diff changeset
53 assert.equal(expect_array, render(template_array, { foo = { "Hello", "World" } }));
10412
b788b5257945 util.interpolation: Test template filters
Kim Alvefur <zash@zash.se>
parents: 10352
diff changeset
54 assert.equal(expect_func_pipe, render(template_func_pipe, { foo = { "c", "a", "d", "b", } }));
10413
604096ce2f82 util.interpolation: Add commented test case for passing nil to filter
Kim Alvefur <zash@zash.se>
parents: 10412
diff changeset
55 -- assert.equal("", render(template_func_pipe, { foo = nil })); -- FIXME
10352
dc1e6c2fb50a util.interpolation: Test map syntax
Kim Alvefur <zash@zash.se>
parents: 10351
diff changeset
56 assert.equal(expect_map, render(template_map, { foo = { foo = "bar" } }));
11064
af1e3b7d9ea3 util.interpolation: Add '~' as the opposite of '&' (render sub-block if falsy)
Matthew Wild <mwild1@gmail.com>
parents: 10413
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: 10413
diff changeset
58 assert.equal(expect_not_nil, render(template_not, { thing = nil }));
11065
95eb1a981ef6 util.interpolation: Add test for ~ when value is false (not just nil)
Matthew Wild <mwild1@gmail.com>
parents: 11064
diff changeset
59 assert.equal(expect_not_false, render(template_not, { thing = false }));
9737
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
60 end);
11308
5d4d90d1eabb util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents: 11065
diff changeset
61 it("fixes #1623", function ()
5d4d90d1eabb util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents: 11065
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: 11065
diff changeset
63 assert.equal("", render("{foo?}", { }))
5d4d90d1eabb util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents: 11065
diff changeset
64 assert.equal("", render("{foo|x?}", { }))
5d4d90d1eabb util.interpolation: Add test for #1623
Kim Alvefur <zash@zash.se>
parents: 11065
diff changeset
65 end);
9737
3d6f5b20cca6 spec: Stub tests for util.interpolation
Kim Alvefur <zash@zash.se>
parents:
diff changeset
66 end);