1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- (function (root, factory) {
- define([
- "jasmine",
- "converse-core",
- "mock",
- "test-utils",
- "utils",
- "transcripts"
- ], factory
- );
- } (this, function (jasmine, converse, mock, test_utils, utils, transcripts) {
- var Strophe = converse.env.Strophe;
- var _ = converse.env._;
- var IGNORED_TAGS = [
- 'stream:features',
- 'auth',
- 'challenge',
- 'success',
- 'stream:features',
- 'response'
- ];
- function traverseElement (el, _stanza) {
- if (typeof _stanza !== 'undefined') {
- if (el.nodeType === 3) {
- _stanza.t(el.nodeValue);
- return _stanza;
- } else {
- _stanza = _stanza.c(el.nodeName.toLowerCase(), getAttributes(el));
- }
- } else {
- _stanza = new Strophe.Builder(
- el.nodeName.toLowerCase(),
- getAttributes(el)
- );
- }
- _.each(el.childNodes, _.partial(traverseElement, _, _stanza));
- return _stanza.up();
- }
- function getAttributes (el) {
- var attributes = {};
- _.each(el.attributes, function (att) {
- attributes[att.nodeName] = att.nodeValue;
- });
- return attributes;
- }
- return describe("Transcripts of chat logs", function () {
- it("can be used to replay conversations",
- mock.initConverse(
- null, ['rosterGroupsFetched'], {},
- function (done, _converse) {
- _converse.allow_non_roster_messaging = true;
- test_utils.openAndEnterChatRoom(_converse, 'discuss', 'conference.conversejs.org', 'romeo').then(function () {
- spyOn(_converse, 'areDesktopNotificationsEnabled').and.returnValue(true);
- _.each(transcripts, function (transcript) {
- var text = transcript();
- var xml = Strophe.xmlHtmlNode(text);
- _.each(xml.firstElementChild.children, function (el) {
- _.each(el.children, function (el) {
- if (el.nodeType === 3) {
- return; // Ignore text
- }
- if (_.includes(IGNORED_TAGS, el.nodeName.toLowerCase())) {
- return;
- }
- var _stanza = traverseElement(el);
- _converse.connection._dataRecv(test_utils.createRequest(_stanza));
- });
- });
- });
- done();
- });
- }));
- });
- }));
|