Software / code / prosody
Comparison
spec/util_stanza_spec.lua @ 9216:ba38a947020e
util.stanza tests: Add tests for maptags() method
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Sun, 19 Aug 2018 21:29:52 +0100 |
| parent | 9000:4d64ff0719a6 |
| child | 9217:7df29c5fbb9b |
comparison
equal
deleted
inserted
replaced
| 9215:b087b5047f86 | 9216:ba38a947020e |
|---|---|
| 255 s:remove_children(); | 255 s:remove_children(); |
| 256 assert.falsy(s.tags[1]); | 256 assert.falsy(s.tags[1]); |
| 257 end); | 257 end); |
| 258 end); | 258 end); |
| 259 | 259 |
| 260 describe("#maptags", function () | |
| 261 it("should work", function () | |
| 262 local s = st.stanza("test") | |
| 263 :tag("one"):up() | |
| 264 :tag("two"):up() | |
| 265 :tag("one"):up() | |
| 266 :tag("three"):up(); | |
| 267 | |
| 268 local function one_filter(tag) | |
| 269 if tag.name == "one" then | |
| 270 return nil; | |
| 271 end | |
| 272 return tag; | |
| 273 end | |
| 274 assert.equal(4, #s.tags); | |
| 275 s:maptags(one_filter); | |
| 276 assert.equal(2, #s.tags); | |
| 277 end); | |
| 278 | |
| 279 it("should work with multiple consecutive text nodes", function () | |
| 280 local s = st.deserialize({ | |
| 281 "\n"; | |
| 282 { | |
| 283 "away"; | |
| 284 name = "show"; | |
| 285 attr = {}; | |
| 286 }; | |
| 287 "\n"; | |
| 288 { | |
| 289 "I am away"; | |
| 290 name = "status"; | |
| 291 attr = {}; | |
| 292 }; | |
| 293 "\n"; | |
| 294 { | |
| 295 "0"; | |
| 296 name = "priority"; | |
| 297 attr = {}; | |
| 298 }; | |
| 299 "\n"; | |
| 300 { | |
| 301 name = "c"; | |
| 302 attr = { | |
| 303 xmlns = "http://jabber.org/protocol/caps"; | |
| 304 node = "http://psi-im.org"; | |
| 305 hash = "sha-1"; | |
| 306 }; | |
| 307 }; | |
| 308 "\n"; | |
| 309 "\n"; | |
| 310 name = "presence"; | |
| 311 attr = { | |
| 312 to = "user@example.com/jflsjfld"; | |
| 313 from = "room@chat.example.org/nick"; | |
| 314 }; | |
| 315 }); | |
| 316 | |
| 317 assert.equal(4, #s.tags); | |
| 318 | |
| 319 s:maptags(function (tag) return tag; end); | |
| 320 assert.equal(4, #s.tags); | |
| 321 | |
| 322 s:maptags(function (tag) | |
| 323 if tag.name == "c" then | |
| 324 return nil; | |
| 325 end | |
| 326 return tag; | |
| 327 end); | |
| 328 assert.equal(3, #s.tags); | |
| 329 end); | |
| 330 end); | |
| 260 end); | 331 end); |