Comparison

spec/util_datamapper_spec.lua @ 11462:d1982b7eb00d

util.datamapper: Fix arrays nesting one level too deep
author Kim Alvefur <zash@zash.se>
date Fri, 19 Mar 2021 01:17:59 +0100
parent 11458:0e00fa518688
child 11466:c098d07e6717
comparison
equal deleted inserted replaced
11461:766b0eddd12c 11462:d1982b7eb00d
44 }; 44 };
45 origin_id = { 45 origin_id = {
46 type = "string"; 46 type = "string";
47 xml = {name = "origin-id"; namespace = "urn:xmpp:sid:0"; x_single_attribute = "id"}; 47 xml = {name = "origin-id"; namespace = "urn:xmpp:sid:0"; x_single_attribute = "id"};
48 }; 48 };
49 reactions = { 49 react = {
50 type = "array"; 50 type = "object";
51 xml = {namespace = "urn:xmpp:reactions:0"; wrapped = true}; 51 xml = {namespace = "urn:xmpp:reactions:0"; name = "reactions"};
52 items = {type = "string"; xml = {name = "reaction"}}; 52 properties = {
53 to = {type = "string"; xml = {attribute = true; name = "id"}};
54 reactions = {type = "array"; items = {type = "string"; xml = {name = "reaction"}}};
55 };
53 }; 56 };
54 }; 57 };
55 }; 58 };
56 59
57 x = xml.parse [[ 60 x = xml.parse [[
78 body = "Hello"; 81 body = "Hello";
79 delay = {from = "test"; stamp = "2021-03-07T15:59:08+00:00"; reason = "Becasue"}; 82 delay = {from = "test"; stamp = "2021-03-07T15:59:08+00:00"; reason = "Becasue"};
80 state = "active"; 83 state = "active";
81 fallback = true; 84 fallback = true;
82 origin_id = "qgkmMdPB"; 85 origin_id = "qgkmMdPB";
83 reactions = { 86 react = {
84 "👋", 87 to = "744f6e18-a57a-11e9-a656-4889e7820c76";
85 "🐢", 88 reactions = {
89 "👋",
90 "🐢",
91 };
86 }; 92 };
87 }; 93 };
88 end); 94 end);
89 95
90 describe("parse", function() 96 describe("parse", function()
100 assert.same(x.attr, u.attr); 106 assert.same(x.attr, u.attr);
101 assert.equal(x:get_child_text("body"), u:get_child_text("body")); 107 assert.equal(x:get_child_text("body"), u:get_child_text("body"));
102 assert.equal(x:get_child_text("delay", "urn:xmpp:delay"), u:get_child_text("delay", "urn:xmpp:delay")); 108 assert.equal(x:get_child_text("delay", "urn:xmpp:delay"), u:get_child_text("delay", "urn:xmpp:delay"));
103 assert.same(x:get_child("delay", "urn:xmpp:delay").attr, u:get_child("delay", "urn:xmpp:delay").attr); 109 assert.same(x:get_child("delay", "urn:xmpp:delay").attr, u:get_child("delay", "urn:xmpp:delay").attr);
104 assert.same(x:get_child("origin-id", "urn:xmpp:sid:0").attr, u:get_child("origin-id", "urn:xmpp:sid:0").attr); 110 assert.same(x:get_child("origin-id", "urn:xmpp:sid:0").attr, u:get_child("origin-id", "urn:xmpp:sid:0").attr);
111 assert.same(x:get_child("reactions", "urn:xmpp:reactions:0").attr, u:get_child("reactions", "urn:xmpp:reactions:0").attr);
112 assert.same(2, #u:get_child("reactions", "urn:xmpp:reactions:0").tags);
105 for _, tag in ipairs(x.tags) do 113 for _, tag in ipairs(x.tags) do
106 if tag.name ~= "UNRELATED" then 114 if tag.name ~= "UNRELATED" then
107 assert.truthy(u:get_child(tag.name, tag.attr.xmlns) or u:get_child(tag.name), tag:top_tag()) 115 assert.truthy(u:get_child(tag.name, tag.attr.xmlns) or u:get_child(tag.name), tag:top_tag())
108 end 116 end
109 end 117 end