spec/util_xtemplate_spec.lua
author Kim Alvefur <zash@zash.se>
Sun, 24 Mar 2024 20:39:42 +0100
changeset 13466 720aed1f5cf2
parent 13408 034c7af177f0
permissions -rw-r--r--
util.startup: Check root after detecting platform and reading config (thanks SigmaTel71) Ensures that startup.detect_platform() runs so know whether to use the POSIX method of checking the current user or something else. Also after reading the config so we know whether the root override setting is set.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13399
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     1
local st = require "prosody.util.stanza";
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     2
local xtemplate = require "prosody.util.xtemplate";
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     3
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     4
describe("util.xtemplate", function ()
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     5
	describe("render()", function ()
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     6
		it("works", function ()
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     7
			assert.same("Hello", xtemplate.render("{greeting}", st.stanza("root"):text_tag("greeting", "Hello")), "regular text content")
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     8
			assert.same("Hello", xtemplate.render("{#}", st.stanza("root"):text("Hello")), "top tag text content")
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     9
			assert.same("Hello", xtemplate.render("{greeting/@en}", st.stanza("root"):tag("greeting", { en = "Hello" })), "attribute")
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    10
		end)
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    11
		it("supports conditionals", function ()
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    12
			local atom_tmpl = "{@pubsub:title|and{*{@pubsub:title}*\n\n}}{summary|or{{author/name|and{{author/name} posted }}{title}}}";
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    13
			local atom_data = st.stanza("entry", { xmlns = "http://www.w3.org/2005/Atom" });
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    14
			assert.same("", xtemplate.render(atom_tmpl, atom_data));
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    15
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    16
			atom_data:text_tag("title", "an Entry")
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    17
			assert.same("an Entry", xtemplate.render(atom_tmpl, atom_data));
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    18
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    19
			atom_data:tag("author"):text_tag("name","Juliet"):up();
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    20
			assert.same("Juliet posted an Entry", xtemplate.render(atom_tmpl, atom_data));
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    21
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    22
			atom_data:text_tag("summary", "Juliet just posted a new entry");
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    23
			assert.same("Juliet just posted a new entry", xtemplate.render(atom_tmpl, atom_data));
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    24
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    25
			atom_data.attr["xmlns:pubsub"] = "http://jabber.org/protocol/pubsub";
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    26
			atom_data.attr["pubsub:title"] = "Juliets musings";
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    27
			assert.same("*Juliets musings*\n\nJuliet just posted a new entry", xtemplate.render(atom_tmpl, atom_data));
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    28
		end)
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    29
		it("can strip surrounding whitespace", function ()
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    30
			assert.same("Hello ", xtemplate.render(" {-greeting} ", st.stanza("root"):text_tag("greeting", "Hello")))
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    31
			assert.same(" Hello", xtemplate.render(" {greeting-} ", st.stanza("root"):text_tag("greeting", "Hello")))
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    32
			assert.same("Hello", xtemplate.render(" {-greeting-} ", st.stanza("root"):text_tag("greeting", "Hello")))
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    33
		end)
13408
034c7af177f0 util.xtemplate: Test the each template function
Kim Alvefur <zash@zash.se>
parents: 13399
diff changeset
    34
		describe("each", function ()
034c7af177f0 util.xtemplate: Test the each template function
Kim Alvefur <zash@zash.se>
parents: 13399
diff changeset
    35
			it("makes sense", function ()
034c7af177f0 util.xtemplate: Test the each template function
Kim Alvefur <zash@zash.se>
parents: 13399
diff changeset
    36
				local x = st.stanza("root"):tag("foo"):tag("bar")
034c7af177f0 util.xtemplate: Test the each template function
Kim Alvefur <zash@zash.se>
parents: 13399
diff changeset
    37
				for i = 1, 5 do x:text_tag("i", tostring(i)); end
034c7af177f0 util.xtemplate: Test the each template function
Kim Alvefur <zash@zash.se>
parents: 13399
diff changeset
    38
				x:reset();
034c7af177f0 util.xtemplate: Test the each template function
Kim Alvefur <zash@zash.se>
parents: 13399
diff changeset
    39
				assert.same("12345", xtemplate.render("{foo/bar|each(i){{#}}}", x));
034c7af177f0 util.xtemplate: Test the each template function
Kim Alvefur <zash@zash.se>
parents: 13399
diff changeset
    40
			end)
034c7af177f0 util.xtemplate: Test the each template function
Kim Alvefur <zash@zash.se>
parents: 13399
diff changeset
    41
		end)
13399
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    42
	end)
1675d4b6363a util.xtemplate: Add some initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    43
end)