diff options
author | Kim Alvefur <zash@zash.se> | 2018-12-02 02:38:36 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2018-12-02 02:38:36 +0100 |
commit | a9e9c490274549c48680a8bf699806a1e069845e (patch) | |
tree | 7819234af6cb36c65bec2a37c8f141fd486ebb01 /spec/util_stanza_spec.lua | |
parent | 3836d03c37dbd7f3dcd07eb68dab3ca5f0290329 (diff) | |
parent | 76536dab05ed39a321accdcb7a3808f0c24cc42e (diff) | |
download | prosody-a9e9c490274549c48680a8bf699806a1e069845e.tar.gz prosody-a9e9c490274549c48680a8bf699806a1e069845e.zip |
Merge 0.11->trunk
Diffstat (limited to 'spec/util_stanza_spec.lua')
-rw-r--r-- | spec/util_stanza_spec.lua | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/spec/util_stanza_spec.lua b/spec/util_stanza_spec.lua index 7fe836c7..6fbae41a 100644 --- a/spec/util_stanza_spec.lua +++ b/spec/util_stanza_spec.lua @@ -4,23 +4,33 @@ local st = require "util.stanza"; describe("util.stanza", function() describe("#preserialize()", function() it("should work", function() - local stanza = st.stanza("message", { a = "a" }); + local stanza = st.stanza("message", { type = "chat" }):text_tag("body", "Hello"); local stanza2 = st.preserialize(stanza); - assert.is_string(stanza2 and stanza.name, "preserialize returns a stanza"); + assert.is_table(stanza2, "Preserialized stanza is a table"); + assert.is_nil(getmetatable(stanza2), "Preserialized stanza has no metatable"); + assert.is_string(stanza2.name, "Preserialized stanza has a name field"); + assert.equal(stanza.name, stanza2.name, "Preserialized stanza has same name as the input stanza"); + assert.same(stanza.attr, stanza2.attr, "Preserialized stanza same attr table as input stanza"); assert.is_nil(stanza2.tags, "Preserialized stanza has no tag list"); assert.is_nil(stanza2.last_add, "Preserialized stanza has no last_add marker"); - assert.is_nil(getmetatable(stanza2), "Preserialized stanza has no metatable"); + assert.is_table(stanza2[1], "Preserialized child element preserved"); + assert.equal("body", stanza2[1].name, "Preserialized child element name preserved"); end); end); - describe("#preserialize()", function() + describe("#deserialize()", function() it("should work", function() - local stanza = st.stanza("message", { a = "a" }); + local stanza = { name = "message", attr = { type = "chat" }, { name = "body", attr = { }, "Hello" } }; local stanza2 = st.deserialize(st.preserialize(stanza)); - assert.is_string(stanza2 and stanza.name, "deserialize returns a stanza"); - assert.is_table(stanza2.attr, "Deserialized stanza has attributes"); - assert.are.equal(stanza2.attr.a, "a", "Deserialized stanza retains attributes"); - assert.is_table(getmetatable(stanza2), "Deserialized stanza has metatable"); + + assert.is_table(stanza2, "Deserialized stanza is a table"); + assert.equal(st.stanza_mt, getmetatable(stanza2), "Deserialized stanza has stanza metatable"); + assert.is_string(stanza2.name, "Deserialized stanza has a name field"); + assert.equal(stanza.name, stanza2.name, "Deserialized stanza has same name as the input table"); + assert.same(stanza.attr, stanza2.attr, "Deserialized stanza same attr table as input table"); + assert.is_table(stanza2.tags, "Deserialized stanza has tag list"); + assert.is_table(stanza2[1], "Deserialized child element preserved"); + assert.equal("body", stanza2[1].name, "Deserialized child element name preserved"); end); end); |