Comparison

spec/util_stanza_spec.lua @ 9924:5a2e53bef031

util.stanza: Fix :top_tag() handling of namespaced attributes
author Matthew Wild <mwild1@gmail.com>
date Mon, 25 Mar 2019 14:37:43 +0000
parent 9732:51583ea2b4fd
child 10442:22db763c510c
comparison
equal deleted inserted replaced
9923:e83dfcdeab59 9924:5a2e53bef031
379 assert.has_error(function () 379 assert.has_error(function ()
380 st.clone("this is not a stanza"); 380 st.clone("this is not a stanza");
381 end); 381 end);
382 end); 382 end);
383 end); 383 end);
384
385 describe("top_tag", function ()
386 local xml_parse = require "util.xml".parse;
387 it("works", function ()
388 local s = st.message({type="chat"}, "Hello");
389 local top_tag = s:top_tag();
390 assert.is_string(top_tag);
391 assert.not_equal("/>", top_tag:sub(-2, -1));
392 assert.equal(">", top_tag:sub(-1, -1));
393 local s2 = xml_parse(top_tag.."</message>");
394 assert(st.is_stanza(s2));
395 assert.equal("message", s2.name);
396 assert.equal(0, #s2);
397 assert.equal(0, #s2.tags);
398 assert.equal("chat", s2.attr.type);
399 end);
400
401 it("works with namespaced attributes", function ()
402 local s = xml_parse[[<message foo:bar='true' xmlns:foo='my-awesome-ns'/>]];
403 local top_tag = s:top_tag();
404 assert.is_string(top_tag);
405 assert.not_equal("/>", top_tag:sub(-2, -1));
406 assert.equal(">", top_tag:sub(-1, -1));
407 local s2 = xml_parse(top_tag.."</message>");
408 assert(st.is_stanza(s2));
409 assert.equal("message", s2.name);
410 assert.equal(0, #s2);
411 assert.equal(0, #s2.tags);
412 assert.equal("true", s2.attr["my-awesome-ns\1bar"]);
413 end);
414 end);
384 end); 415 end);