spec/util_xtemplate_spec.lua
author Kim Alvefur <zash@zash.se>
Thu, 28 Mar 2024 15:26:57 +0100
changeset 13472 98806cac64c3
parent 13408 034c7af177f0
permissions -rw-r--r--
MUC: Switch to official XEP-0317 namespace for Hats (including compat) (thanks nicoco)
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)