Remove the need for require.js to run tests

This commit is contained in:
JC Brand 2020-04-22 12:10:39 +02:00
parent 7eb6a17fd2
commit 7e23adf26f
44 changed files with 565 additions and 543 deletions

View File

@ -13,7 +13,6 @@
<link rel="shortcut icon" type="image/ico" href="https://cdn.conversejs.org/6.0.0/dist/favicon.ico"/> <link rel="shortcut icon" type="image/ico" href="https://cdn.conversejs.org/6.0.0/dist/favicon.ico"/>
<link type="text/css" rel="stylesheet" media="screen" href="https://cdn.conversejs.org/6.0.0/dist/website.min.css" /> <link type="text/css" rel="stylesheet" media="screen" href="https://cdn.conversejs.org/6.0.0/dist/website.min.css" />
<noscript><p><img src="//stats.opkode.com/piwik.php?idsite=1" style="border:0;" alt="" /></p></noscript> <noscript><p><img src="//stats.opkode.com/piwik.php?idsite=1" style="border:0;" alt="" /></p></noscript>
<script type="text/javascript" src="/src/website.js"></script>
<script type="text/javascript" src="analytics.js"></script> <script type="text/javascript" src="analytics.js"></script>
<!-- *********************************************************************** --> <!-- *********************************************************************** -->

6
package-lock.json generated
View File

@ -18823,12 +18823,6 @@
"integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
"dev": true "dev": true
}, },
"requirejs": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz",
"integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==",
"dev": true
},
"requires-port": { "requires-port": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",

View File

@ -98,7 +98,6 @@
"postcss-clean": "^1.1.0", "postcss-clean": "^1.1.0",
"postcss-loader": "^3.0.0", "postcss-loader": "^3.0.0",
"prettierx": "^0.11.2", "prettierx": "^0.11.2",
"requirejs": "2.3.6",
"run-headless-chromium": "^0.1.1", "run-headless-chromium": "^0.1.1",
"sass-loader": "^8.0.2", "sass-loader": "^8.0.2",
"sinon": "^9.0.2", "sinon": "^9.0.2",

View File

@ -1,11 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define([ const mock = window.mock;
"jasmine", const test_utils = window.test_utils;
"mock",
"test-utils"
], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const $pres = converse.env.$pres; const $pres = converse.env.$pres;
const $msg = converse.env.$msg; const $msg = converse.env.$msg;
const Strophe = converse.env.Strophe; const Strophe = converse.env.Strophe;
@ -219,4 +214,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,11 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define([ const mock = window.mock;
"jasmine", const test_utils = window.test_utils;
"mock",
"test-utils"
], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const $iq = converse.env.$iq, const $iq = converse.env.$iq,
$msg = converse.env.$msg, $msg = converse.env.$msg,
Strophe = converse.env.Strophe, Strophe = converse.env.Strophe,
@ -618,4 +613,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,11 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define([ const mock = window.mock;
"jasmine", const test_utils = window.test_utils;
"mock",
"test-utils"
], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const _ = converse.env._; const _ = converse.env._;
const $msg = converse.env.$msg; const $msg = converse.env.$msg;
const Strophe = converse.env.Strophe; const Strophe = converse.env.Strophe;
@ -1613,4 +1608,4 @@
})); }));
}); });
}); });
})); });

View File

@ -1,6 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils"], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
const _ = converse.env._, const _ = converse.env._,
$msg = converse.env.$msg, $msg = converse.env.$msg,
u = converse.env.utils, u = converse.env.utils,
@ -386,4 +386,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,9 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define([ const mock = window.mock;
"jasmine", const test_utils = window.test_utils;
"mock",
"test-utils"], factory);
} (this, function (jasmine, mock, test_utils) {
const _ = converse.env._, const _ = converse.env._,
u = converse.env.utils; u = converse.env.utils;
@ -367,4 +364,4 @@
}); });
}); });
}); });
})); });

View File

@ -1,10 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define([ const mock = window.mock;
"jasmine", const test_utils = window.test_utils;
"mock",
"test-utils"], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const Strophe = converse.env.Strophe; const Strophe = converse.env.Strophe;
const $iq = converse.env.$iq; const $iq = converse.env.$iq;
const _ = converse.env._; const _ = converse.env._;
@ -191,4 +187,4 @@
})); }));
}); });
}); });
})); });

View File

@ -1,11 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define([ const mock = window.mock;
"jasmine", const test_utils = window.test_utils;
"mock",
"test-utils"
], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const { Promise, $msg, $pres, sizzle } = converse.env; const { Promise, $msg, $pres, sizzle } = converse.env;
const u = converse.env.utils; const u = converse.env.utils;
@ -240,4 +235,4 @@
})); }));
}); });
}); });
})); });

View File

@ -1,6 +1,5 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock"], factory); const mock = window.mock;
} (this, function (jasmine, mock) {
return describe("The _converse Event Emitter", function() { return describe("The _converse Event Emitter", function() {
@ -61,4 +60,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,11 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define([ const mock = window.mock;
"jasmine", const test_utils = window.test_utils;
"mock",
"test-utils"
], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const u = converse.env.utils; const u = converse.env.utils;
describe("A XEP-0317 MUC Hat", function () { describe("A XEP-0317 MUC Hat", function () {
@ -82,4 +77,4 @@
done(); done();
})); }));
}) })
})); });

View File

@ -1,11 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define([ const mock = window.mock;
"jasmine", const test_utils = window.test_utils;
"mock",
"test-utils"
], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const $msg = converse.env.$msg, const $msg = converse.env.$msg,
_ = converse.env._, _ = converse.env._,
u = converse.env.utils; u = converse.env.utils;
@ -179,4 +174,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,10 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define([ const mock = window.mock;
"jasmine", const test_utils = window.test_utils;
"mock",
"test-utils"], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const Strophe = converse.env.Strophe; const Strophe = converse.env.Strophe;
const $iq = converse.env.$iq; const $iq = converse.env.$iq;
const _ = converse.env._; const _ = converse.env._;
@ -629,4 +625,4 @@
}); });
}); });
}); });
})); });

View File

@ -1,7 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils"], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
const u = converse.env.utils; const u = converse.env.utils;
describe("The Login Form", function () { describe("The Login Form", function () {
@ -77,4 +76,4 @@
}); });
})); }));
}); });
})); });

View File

@ -1,7 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils"], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
"use strict";
const Model = converse.env.Model; const Model = converse.env.Model;
const Strophe = converse.env.Strophe; const Strophe = converse.env.Strophe;
const $iq = converse.env.$iq; const $iq = converse.env.$iq;
@ -1098,4 +1097,4 @@
})); }));
}); });
}); });
})); });

View File

@ -1,11 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define([ const mock = window.mock;
"jasmine", const test_utils = window.test_utils;
"mock",
"test-utils"
], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const { Promise, Strophe, $msg, dayjs, sizzle, _ } = converse.env; const { Promise, Strophe, $msg, dayjs, sizzle, _ } = converse.env;
const u = converse.env.utils; const u = converse.env.utils;
@ -2083,4 +2078,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,6 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils"], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
const _ = converse.env._; const _ = converse.env._;
const $msg = converse.env.$msg; const $msg = converse.env.$msg;
const u = converse.env.utils; const u = converse.env.utils;
@ -164,4 +164,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,6 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils" ], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
const _ = converse.env._; const _ = converse.env._;
const $iq = converse.env.$iq; const $iq = converse.env.$iq;
const $pres = converse.env.$pres; const $pres = converse.env.$pres;
@ -367,4 +367,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,6 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils" ], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
const _ = converse.env._, const _ = converse.env._,
$pres = converse.env.$pres, $pres = converse.env.$pres,
$iq = converse.env.$iq, $iq = converse.env.$iq,
@ -5311,4 +5311,4 @@
})); }));
}); });
}); });
})); });

View File

@ -1,11 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define([ const mock = window.mock;
"jasmine", const test_utils = window.test_utils;
"mock",
"test-utils"
], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const { Promise, Strophe, $msg, $pres, sizzle, stanza_utils } = converse.env; const { Promise, Strophe, $msg, $pres, sizzle, stanza_utils } = converse.env;
const u = converse.env.utils; const u = converse.env.utils;
@ -1254,4 +1249,4 @@
})); }));
}); });
}); });
})); });

View File

@ -1,7 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils"], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
"use strict";
const _ = converse.env._; const _ = converse.env._;
const $msg = converse.env.$msg; const $msg = converse.env.$msg;
const u = converse.env.utils; const u = converse.env.utils;
@ -207,4 +206,4 @@
}); });
}); });
}); });
})); });

View File

@ -1,10 +1,9 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils"], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
const { $iq, $pres, $msg, _, Strophe } = converse.env; const { $iq, $pres, $msg, _, Strophe } = converse.env;
const u = converse.env.utils; const u = converse.env.utils;
async function deviceListFetched (_converse, jid) { async function deviceListFetched (_converse, jid) {
const selector = `iq[to="${jid}"] items[node="eu.siacs.conversations.axolotl.devicelist"]`; const selector = `iq[to="${jid}"] items[node="eu.siacs.conversations.axolotl.devicelist"]`;
const stanza = await u.waitUntil( const stanza = await u.waitUntil(
@ -1536,4 +1535,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,7 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils"], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
"use strict";
const Strophe = converse.env.Strophe; const Strophe = converse.env.Strophe;
const u = converse.env.utils; const u = converse.env.utils;
@ -34,4 +33,4 @@
})); }));
}); });
}); });
})); });

View File

@ -1,13 +1,6 @@
/*jshint sub:true*/ window.addEventListener('converse-loaded', () => {
/*eslint dot-notation: "off"*/ const mock = window.mock;
(function (root, factory) { const test_utils = window.test_utils;
define([
"jasmine",
"mock",
"test-utils",
], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const Strophe = converse.env.Strophe; const Strophe = converse.env.Strophe;
const u = converse.env.utils; const u = converse.env.utils;
// See: https://xmpp.org/rfcs/rfc3921.html // See: https://xmpp.org/rfcs/rfc3921.html
@ -294,5 +287,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,10 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define([ const mock = window.mock;
"jasmine", const test_utils = window.test_utils;
"mock",
"test-utils"], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const $iq = converse.env.$iq; const $iq = converse.env.$iq;
const $pres = converse.env.$pres; const $pres = converse.env.$pres;
const Strophe = converse.env.Strophe; const Strophe = converse.env.Strophe;
@ -540,4 +536,4 @@
})); }));
}); });
}); });
})); });

View File

@ -1,7 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils"], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
"use strict";
const $iq = converse.env.$iq; const $iq = converse.env.$iq;
const Strophe = converse.env.Strophe; const Strophe = converse.env.Strophe;
const _ = converse.env._; const _ = converse.env._;
@ -189,4 +188,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,6 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils"], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
const Strophe = converse.env.Strophe; const Strophe = converse.env.Strophe;
const $iq = converse.env.$iq; const $iq = converse.env.$iq;
const { _, sizzle} = converse.env; const { _, sizzle} = converse.env;
@ -362,4 +362,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,11 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define([ const mock = window.mock;
"jasmine", const test_utils = window.test_utils;
"mock",
"test-utils"
], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const { Strophe, $iq } = converse.env; const { Strophe, $iq } = converse.env;
const u = converse.env.utils; const u = converse.env.utils;
@ -1157,4 +1152,4 @@
})); }));
}); });
}) })
})); });

View File

@ -1,6 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils" ], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
const _ = converse.env._, const _ = converse.env._,
$iq = converse.env.$iq, $iq = converse.env.$iq,
Strophe = converse.env.Strophe, Strophe = converse.env.Strophe,
@ -118,4 +118,4 @@
})); }));
}); });
}); });
})); });

View File

@ -1,6 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils"], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
const { Strophe, $iq, $msg, $pres, sizzle, _ } = converse.env; const { Strophe, $iq, $msg, $pres, sizzle, _ } = converse.env;
const u = converse.env.utils; const u = converse.env.utils;
@ -330,4 +330,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,6 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils"], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
const $iq = converse.env.$iq; const $iq = converse.env.$iq;
const $pres = converse.env.$pres; const $pres = converse.env.$pres;
const Strophe = converse.env.Strophe; const Strophe = converse.env.Strophe;
@ -1317,4 +1317,4 @@
})); }));
}); });
}); });
})); });

View File

@ -1,7 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils"], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
"use strict";
const $iq = converse.env.$iq; const $iq = converse.env.$iq;
const $msg = converse.env.$msg; const $msg = converse.env.$msg;
const Strophe = converse.env.Strophe; const Strophe = converse.env.Strophe;
@ -280,4 +279,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,6 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils"], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
const _ = converse.env._; const _ = converse.env._;
const Strophe = converse.env.Strophe; const Strophe = converse.env.Strophe;
const $msg = converse.env.$msg; const $msg = converse.env.$msg;
@ -234,4 +234,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,11 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define([ const mock = window.mock;
"jasmine", const test_utils = window.test_utils;
"mock",
"test-utils"
], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const u = converse.env.utils; const u = converse.env.utils;
return describe("The User Details Modal", function () { return describe("The User Details Modal", function () {
@ -79,4 +74,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,8 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine"], factory); const utils = converse.env.utils;
} (this, function () { const _ = converse.env._;
var utils = converse.env.utils,
_ = converse.env._;
return describe("Converse.js Utilities", function() { return describe("Converse.js Utilities", function() {
@ -61,4 +59,4 @@
expect(context.visible_toolbar_buttons.toggle_occupants).toBeTruthy(); expect(context.visible_toolbar_buttons.toggle_occupants).toBeTruthy();
}); });
}); });
})); });

View File

@ -1,6 +1,5 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock"], factory); const mock = window.mock;
} (this, function (jasmine, mock) {
const u = converse.env.utils; const u = converse.env.utils;
return describe("The XMPPStatus model", function () { return describe("The XMPPStatus model", function () {
@ -21,4 +20,4 @@
done(); done();
})); }));
}); });
})); });

View File

@ -1,6 +1,6 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(["jasmine", "mock", "test-utils" ], factory); const mock = window.mock;
} (this, function (jasmine, mock, test_utils) { const test_utils = window.test_utils;
const $pres = converse.env.$pres; const $pres = converse.env.$pres;
const sizzle = converse.env.sizzle; const sizzle = converse.env.sizzle;
const u = converse.env.utils; const u = converse.env.utils;
@ -241,4 +241,4 @@
})); }));
}); });
}); });
})); });

View File

@ -1,33 +1,140 @@
<!DOCTYPE html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
<html lang="en"> "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head> <head>
<title>Converse.js</title> <title>Converse Tests</title>
<meta charset="utf-8"> <meta name="description" content="Converse XMPP Chat" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Converse.js: A free chat client for your website" />
<script src="3rdparty/libsignal-protocol.js"></script>
<link rel="manifest" href="./manifest.json">
<link rel="shortcut icon" type="image/ico" href="favicon.ico"/>
<link rel="shortcut icon" type="image/png" href="node_modules/jasmine-core/images/jasmine_favicon.png"> <link rel="shortcut icon" type="image/png" href="node_modules/jasmine-core/images/jasmine_favicon.png">
<link rel="stylesheet" type="text/css" media="screen" href="node_modules/jasmine-core/lib/jasmine-core/jasmine.css"> <link rel="stylesheet" type="text/css" media="screen" href="node_modules/jasmine-core/lib/jasmine-core/jasmine.css">
<script data-main="tests/runner" src="../node_modules/requirejs/require.js"></script> <link type="text/css" rel="stylesheet" media="screen" href="dist/website.css" />
<script src="tests/mock.js"></script>
<script src="tests/utils.js"></script>
<script src="node_modules/jasmine-core/lib/jasmine-core/jasmine.js"></script>
<script src="node_modules/jasmine-core/lib/jasmine-core/jasmine-html.js"></script>
<script src="node_modules/jasmine-core/lib/jasmine-core/boot.js"></script>
<script src="node_modules/sinon/pkg/sinon.js"></script>
<script src="tests/console-reporter.js"script>
<script src="spec/spoilers.js"></script>
<script src="spec/roomslist.js"></script>
<script src="spec/utils.js"></script>
<script src="spec/converse.js"></script>
<script src="spec/bookmarks.js"></script>
<script src="spec/headline.js"></script>
<script src="spec/disco.js"></script>
<script src="spec/protocol.js"></script>
<script src="spec/presence.js"></script>
<script src="spec/eventemitter.js"></script>
<script src="spec/smacks.js"></script>
<script src="spec/ping.js"></script>
<script src="spec/push.js"></script>
<script src="spec/xmppstatus.js"></script>
<script src="spec/mam.js"></script>
<script src="spec/omemo.js"></script>
<script src="spec/controlbox.js"></script>
<script src="spec/roster.js"></script>
<script src="spec/chatbox.js"></script>
<script src="spec/user-details-modal.js"></script>
<script src="spec/messages.js"></script>
<script src="spec/muc_messages.js"></script>
<script src="spec/retractions.js"></script>
<script src="spec/muc.js"></script>
<script src="spec/modtools.js"></script>
<script src="spec/room_registration.js"></script>
<script src="spec/autocomplete.js"></script>
<script src="spec/minchats.js"></script>
<script src="spec/notification.js"></script>
<script src="spec/login.js"></script>
<script src="spec/register.js"></script>
<script src="spec/hats.js"></script>
<script src="spec/http-file-upload.js"></script>
<script src="spec/emojis.js"></script>
<script src="spec/xss.js"></script>
<style> <style>
.tests-brand-heading { .tests-brand-heading {
margin-top: 1em; margin-top: 1em;
font-size: 200%; font-size: 200%;
} }
.jasmine_html-reporter {
text-align: left;
width: 100vw;
background-color: rgba(255, 255, 255, .5);
}
.intro {
background: unset;
background-color: #397491;
}
</style> </style>
</head> </head>
<body class="reset"></body>
<div id="header_wrap" class="outer"> <body id="page-top" data-spy="scroll" class="converse-website">
<header class="inner">
<h1 class="brand-heading tests-brand-heading"> <section class="section-wrapper">
<i class="icon-conversejs"></i> Converse</h1>
<h2 id="project_tagline">Tests</h2> <section id="intro" class="intro" class="container">
</header> <div class="row">
</div> <div class="col-md-12 col-md-offset-2">
<script> <h1 class="brand-heading fade-in">
converse.load(); <svg class="converse-svg-logo"
</script> xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 364 364">
<title>Converse</title>
<g class="cls-1" id="g904">
<g data-name="Layer 2">
<g data-name="Layer 7">
<path
class="cls-3"
d="M221.46,103.71c0,18.83-29.36,18.83-29.12,0C192.1,84.88,221.46,84.88,221.46,103.71Z" />
<path
class="cls-4"
d="M179.9,4.15A175.48,175.48,0,1,0,355.38,179.63,175.48,175.48,0,0,0,179.9,4.15Zm-40.79,264.5c-.23-17.82,27.58-17.82,27.58,0S138.88,286.48,139.11,268.65ZM218.6,168.24A79.65,79.65,0,0,1,205.15,174a12.76,12.76,0,0,0-6.29,4.65L167.54,222a1.36,1.36,0,0,1-2.46-.8v-35.8a2.58,2.58,0,0,0-3.06-2.53c-15.43,3-30.23,7.7-42.73,19.94-38.8,38-29.42,105.69,16.09,133.16a162.25,162.25,0,0,1-91.47-67.27C-3.86,182.26,34.5,47.25,138.37,25.66c46.89-9.75,118.25,5.16,123.73,62.83C265.15,120.64,246.56,152.89,218.6,168.24Z" />
</g>
</g>
</g>
</svg>
<span class="brand-heading__text">
<span>converse<span class="subdued">.js</span></span>
<p class="byline">messaging freedom</p>
</span>
</h1>
<h2 id="project_tagline">Tests</h2>
</div>
</div>
<div class="row jasmine-output-container"></div>
</section>
</body>
<script>
jasmine.DEFAULT_TIMEOUT_INTERVAL = 7000;
const env = jasmine.getEnv();
const queryString = new jasmine.QueryString({
getWindowLocation: () => window.location
});
env.clearReporters();
const htmlReporter = new jasmine.HtmlReporter({
env,
onRaiseExceptionsClick: () => { queryString.navigateWithNewParam("catch", !env.catchingExceptions()); },
onThrowExpectationsClick: () => { queryString.navigateWithNewParam("throwFailures", !env.throwingExpectationFailures()); },
onRandomClick: () => { queryString.navigateWithNewParam("random", !env.randomTests()); },
addToExistingQueryString: function(key, value) { return queryString.fullStringWithNewParam(key, value); },
getContainer: () => document.querySelector('.jasmine-output-container'),
createElement: function () { return document.createElement.apply(document, arguments); },
createTextNode: function () { return document.createTextNode.apply(document, arguments); },
timer: new jasmine.Timer(),
filterSpecs: !!queryString.getParam("spec")
});
//The `jsApiReporter` also receives spec results, and is used by any environment that needs to extract the results from JavaScript.
const jasmineInterface = jasmineRequire.interface(jasmine, env);
env.addReporter(jasmineInterface.jsApiReporter);
env.addReporter(htmlReporter);
env.addReporter(new ConsoleReporter());
converse.load();
</script>
</html> </html>

View File

@ -1,146 +1,140 @@
(function (root, factory) { const noopTimer = {
define([], factory); start: function () {},
} (this, function () { elapsed: function () { return 0; }
"use strict"; };
var noopTimer = { function ConsoleReporter () {
start: function () {}, var timer = noopTimer,
elapsed: function () { return 0; } specCount,
failureCount,
failedSpecs = [],
pendingCount,
ansi = {
green: '\x1B[32m',
red: '\x1B[31m',
yellow: '\x1B[33m',
none: '\x1B[0m'
},
failedSuites = [];
var print = function print (message) {
console.log(message + '\x03\b');
}
this.jasmineStarted = function () {
specCount = 0;
failureCount = 0;
pendingCount = 0;
print('Started');
printNewline();
timer.start();
}; };
function ConsoleReporter (options) { this.jasmineDone = function () {
var timer = noopTimer, print("jasmineDone");
specCount, printNewline();
failureCount, for (var i = 0; i < failedSpecs.length; i++) {
failedSpecs = [], specFailureDetails(failedSpecs[i]);
pendingCount,
ansi = {
green: '\x1B[32m',
red: '\x1B[31m',
yellow: '\x1B[33m',
none: '\x1B[0m'
},
failedSuites = [];
var print = function print (message) {
console.log(message + '\x03\b');
} }
this.jasmineStarted = function () { if(specCount > 0) {
specCount = 0;
failureCount = 0;
pendingCount = 0;
print('Started');
printNewline(); printNewline();
timer.start(); var specCounts = specCount + ' ' + plural('spec', specCount) + ', ' +
}; failureCount + ' ' + plural('failure', failureCount);
if (pendingCount) {
this.jasmineDone = function () { specCounts += ', ' + pendingCount + ' pending ' + plural('spec', pendingCount);
print("jasmineDone");
printNewline();
for (var i = 0; i < failedSpecs.length; i++) {
specFailureDetails(failedSpecs[i]);
} }
print(specCounts);
if(specCount > 0) { } else {
printNewline(); print('No specs found');
var specCounts = specCount + ' ' + plural('spec', specCount) + ', ' +
failureCount + ' ' + plural('failure', failureCount);
if (pendingCount) {
specCounts += ', ' + pendingCount + ' pending ' + plural('spec', pendingCount);
}
print(specCounts);
} else {
print('No specs found');
}
printNewline();
var seconds = timer.elapsed() / 1000;
print('Finished in ' + seconds + ' ' + plural('second', seconds));
printNewline();
for (i = 0; i < failedSuites.length; i++) {
suiteFailureDetails(failedSuites[i]);
}
var exitCode = failureCount === 0 ? 0 : 1;
console.info('All tests completed!' + exitCode);
};
this.specDone = function (result) {
specCount++;
if (result.status == 'pending') {
pendingCount++;
print(colored('yellow', '*'));
return;
}
if (result.status == 'passed') {
print(colored('green', '.'));
return;
}
if (result.status == 'failed') {
failureCount++;
failedSpecs.push(result);
print(colored('red', 'F'));
}
};
this.suiteDone = function (result) {
if (result.failedExpectations && result.failedExpectations.length > 0) {
failureCount++;
failedSuites.push(result);
}
};
return this;
function printNewline() {
print('\n');
} }
function colored (color, str) { printNewline();
return ansi[color] + str + ansi.none; var seconds = timer.elapsed() / 1000;
print('Finished in ' + seconds + ' ' + plural('second', seconds));
printNewline();
for (i = 0; i < failedSuites.length; i++) {
suiteFailureDetails(failedSuites[i]);
} }
var exitCode = failureCount === 0 ? 0 : 1;
console.info('All tests completed!' + exitCode);
};
function plural (str, count) { this.specDone = function (result) {
return count == 1 ? str : str + 's'; specCount++;
if (result.status == 'pending') {
pendingCount++;
print(colored('yellow', '*'));
return;
} }
if (result.status == 'passed') {
print(colored('green', '.'));
return;
}
if (result.status == 'failed') {
failureCount++;
failedSpecs.push(result);
print(colored('red', 'F'));
}
};
function repeat (thing, times) { this.suiteDone = function (result) {
var arr = []; if (result.failedExpectations && result.failedExpectations.length > 0) {
for (var i = 0; i < times; i++) { failureCount++;
arr.push(thing); failedSuites.push(result);
}
return arr;
} }
};
return this;
function indent (str, spaces) { function printNewline() {
var lines = (str || '').split('\n'); print('\n');
var newArr = [];
for (var i = 0; i < lines.length; i++) {
newArr.push(repeat(' ', spaces).join('') + lines[i]);
}
return newArr.join('\n');
}
function specFailureDetails (result) {
printNewline();
print(result.fullName);
for (var i = 0; i < result.failedExpectations.length; i++) {
var failedExpectation = result.failedExpectations[i];
printNewline();
print(indent(failedExpectation.message, 2));
print(indent(failedExpectation.stack, 2));
}
printNewline();
}
function suiteFailureDetails (result) {
for (var i = 0; i < result.failedExpectations.length; i++) {
printNewline();
print(colored('red', 'An error was thrown in an afterAll'));
printNewline();
print(colored('red', 'AfterAll ' + result.failedExpectations[i].message));
}
printNewline();
}
} }
return ConsoleReporter;
})); function colored (color, str) {
return ansi[color] + str + ansi.none;
}
function plural (str, count) {
return count == 1 ? str : str + 's';
}
function repeat (thing, times) {
var arr = [];
for (var i = 0; i < times; i++) {
arr.push(thing);
}
return arr;
}
function indent (str, spaces) {
var lines = (str || '').split('\n');
var newArr = [];
for (var i = 0; i < lines.length; i++) {
newArr.push(repeat(' ', spaces).join('') + lines[i]);
}
return newArr.join('\n');
}
function specFailureDetails (result) {
printNewline();
print(result.fullName);
for (var i = 0; i < result.failedExpectations.length; i++) {
var failedExpectation = result.failedExpectations[i];
printNewline();
print(indent(failedExpectation.message, 2));
print(indent(failedExpectation.stack, 2));
}
printNewline();
}
function suiteFailureDetails (result) {
for (var i = 0; i < result.failedExpectations.length; i++) {
printNewline();
print(colored('red', 'An error was thrown in an afterAll'));
printNewline();
print(colored('red', 'AfterAll ' + result.failedExpectations[i].message));
}
printNewline();
}
}
window.ConsoleReporter = ConsoleReporter;

View File

@ -8,23 +8,135 @@
<link rel="stylesheet" type="text/css" media="screen" href="../node_modules/jasmine-core/lib/jasmine-core/jasmine.css"> <link rel="stylesheet" type="text/css" media="screen" href="../node_modules/jasmine-core/lib/jasmine-core/jasmine.css">
<link type="text/css" rel="stylesheet" media="screen" href="../dist/converse.css" /> <link type="text/css" rel="stylesheet" media="screen" href="../dist/converse.css" />
<script src="../dist/converse.js"></script> <script src="../dist/converse.js"></script>
<script data-main="runner" src="../node_modules/requirejs/require.js"></script> <link type="text/css" rel="stylesheet" media="screen" href="../dist/website.css" />
<script src="../node_modules/jasmine-core/lib/jasmine-core/jasmine.js"></script>
<script src="../node_modules/jasmine-core/lib/jasmine-core/jasmine-html.js"></script>
<script src="../node_modules/jasmine-core/lib/jasmine-core/boot.js"></script>
<script src="../node_modules/sinon/pkg/sinon.js"></script>
<script src="console-reporter.js"></script>
<script src="../tests/mock.js"></script>
<script src="../tests/utils.js"></script>
<script src="../spec/spoilers.js"></script>
<script src="../spec/roomslist.js"></script>
<script src="../spec/utils.js"></script>
<script src="../spec/converse.js"></script>
<script src="../spec/bookmarks.js"></script>
<script src="../spec/headline.js"></script>
<script src="../spec/disco.js"></script>
<script src="../spec/protocol.js"></script>
<script src="../spec/presence.js"></script>
<script src="../spec/eventemitter.js"></script>
<script src="../spec/smacks.js"></script>
<script src="../spec/ping.js"></script>
<script src="../spec/push.js"></script>
<script src="../spec/xmppstatus.js"></script>
<script src="../spec/mam.js"></script>
<script src="../spec/omemo.js"></script>
<script src="../spec/controlbox.js"></script>
<script src="../spec/roster.js"></script>
<script src="../spec/chatbox.js"></script>
<script src="../spec/user-details-modal.js"></script>
<script src="../spec/messages.js"></script>
<script src="../spec/muc_messages.js"></script>
<script src="../spec/retractions.js"></script>
<script src="../spec/muc.js"></script>
<script src="../spec/modtools.js"></script>
<script src="../spec/room_registration.js"></script>
<script src="../spec/autocomplete.js"></script>
<script src="../spec/minchats.js"></script>
<script src="../spec/notification.js"></script>
<script src="../spec/login.js"></script>
<script src="../spec/register.js"></script>
<script src="../spec/hats.js"></script>
<script src="../spec/http-file-upload.js"></script>
<script src="../spec/emojis.js"></script>
<script src="../spec/xss.js"></script>
<style> <style>
.tests-brand-heading { .tests-brand-heading {
margin-top: 1em; margin-top: 1em;
font-size: 200%; font-size: 200%;
} }
.jasmine_html-reporter {
text-align: left;
width: 100vw;
background-color: rgba(255, 255, 255, .5);
}
.intro {
background: unset;
background-color: #397491;
}
</style> </style>
</head> </head>
<body> <body id="page-top" data-spy="scroll" class="converse-website">
<div id="header_wrap" class="outer">
<header class="inner"> <section class="section-wrapper">
<h1 class="brand-heading tests-brand-heading">
<i class="icon-conversejs"></i> Converse</h1> <section id="intro" class="intro" class="container">
<h2 id="project_tagline">Tests</h2> <div class="row">
</header> <div class="col-md-12 col-md-offset-2">
</div> <h1 class="brand-heading fade-in">
<script>converse.load();</script> <svg class="converse-svg-logo"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 364 364">
<title>Converse</title>
<g class="cls-1" id="g904">
<g data-name="Layer 2">
<g data-name="Layer 7">
<path
class="cls-3"
d="M221.46,103.71c0,18.83-29.36,18.83-29.12,0C192.1,84.88,221.46,84.88,221.46,103.71Z" />
<path
class="cls-4"
d="M179.9,4.15A175.48,175.48,0,1,0,355.38,179.63,175.48,175.48,0,0,0,179.9,4.15Zm-40.79,264.5c-.23-17.82,27.58-17.82,27.58,0S138.88,286.48,139.11,268.65ZM218.6,168.24A79.65,79.65,0,0,1,205.15,174a12.76,12.76,0,0,0-6.29,4.65L167.54,222a1.36,1.36,0,0,1-2.46-.8v-35.8a2.58,2.58,0,0,0-3.06-2.53c-15.43,3-30.23,7.7-42.73,19.94-38.8,38-29.42,105.69,16.09,133.16a162.25,162.25,0,0,1-91.47-67.27C-3.86,182.26,34.5,47.25,138.37,25.66c46.89-9.75,118.25,5.16,123.73,62.83C265.15,120.64,246.56,152.89,218.6,168.24Z" />
</g>
</g>
</g>
</svg>
<span class="brand-heading__text">
<span>converse<span class="subdued">.js</span></span>
<p class="byline">messaging freedom</p>
</span>
</h1>
<h2 id="project_tagline">Tests</h2>
</div>
</div>
<div class="row jasmine-output-container"></div>
</section>
</body> </body>
<script>
jasmine.DEFAULT_TIMEOUT_INTERVAL = 7000;
const env = jasmine.getEnv();
const queryString = new jasmine.QueryString({
getWindowLocation: () => window.location
});
env.clearReporters();
const htmlReporter = new jasmine.HtmlReporter({
env,
onRaiseExceptionsClick: () => { queryString.navigateWithNewParam("catch", !env.catchingExceptions()); },
onThrowExpectationsClick: () => { queryString.navigateWithNewParam("throwFailures", !env.throwingExpectationFailures()); },
onRandomClick: () => { queryString.navigateWithNewParam("random", !env.randomTests()); },
addToExistingQueryString: function(key, value) { return queryString.fullStringWithNewParam(key, value); },
getContainer: () => document.querySelector('.jasmine-output-container'),
createElement: function () { return document.createElement.apply(document, arguments); },
createTextNode: function () { return document.createTextNode.apply(document, arguments); },
timer: new jasmine.Timer(),
filterSpecs: !!queryString.getParam("spec")
});
//The `jsApiReporter` also receives spec results, and is used by any environment that needs to extract the results from JavaScript.
const jasmineInterface = jasmineRequire.interface(jasmine, env);
env.addReporter(jasmineInterface.jsApiReporter);
env.addReporter(htmlReporter);
env.addReporter(new ConsoleReporter());
converse.load();
</script>
</html> </html>

View File

@ -1,6 +1,37 @@
(function (root, factory) { const mock = {};
define("mock", [], factory); window.mock = mock;
}(this, function () { let _converse, initConverse;
mock.initConverse = function (promise_names=[], settings=null, func) {
if (typeof promise_names === "function") {
func = promise_names;
promise_names = []
settings = null;
}
return async done => {
if (_converse && _converse.api.connection.connected()) {
await _converse.api.user.logout();
}
const el = document.querySelector('#conversejs');
if (el) {
el.parentElement.removeChild(el);
}
document.title = "Converse Tests";
await initConverse(settings);
await Promise.all((promise_names || []).map(_converse.api.waitUntil));
try {
await func(done, _converse);
} catch(e) {
console.error(e);
fail(e);
await done();
}
}
};
window.addEventListener('converse-loaded', () => {
const _ = converse.env._; const _ = converse.env._;
const u = converse.env.utils; const u = converse.env.utils;
const Promise = converse.env.Promise; const Promise = converse.env.Promise;
@ -24,7 +55,6 @@
this.decryptPreKeyWhisperMessage = (key_and_tag) => { this.decryptPreKeyWhisperMessage = (key_and_tag) => {
return Promise.resolve(key_and_tag); return Promise.resolve(key_and_tag);
}; };
this.decryptWhisperMessage = (key_and_tag) => { this.decryptWhisperMessage = (key_and_tag) => {
return Promise.resolve(key_and_tag); return Promise.resolve(key_and_tag);
} }
@ -66,8 +96,6 @@
} }
}; };
const mock = {};
mock.default_muc_features = [ mock.default_muc_features = [
'http://jabber.org/protocol/muc', 'http://jabber.org/protocol/muc',
'jabber:iq:register', 'jabber:iq:register',
@ -151,9 +179,6 @@
'preventDefault': function () {} 'preventDefault': function () {}
}; };
let _converse;
const OriginalConnection = Strophe.Connection; const OriginalConnection = Strophe.Connection;
function MockConnection (service, options) { function MockConnection (service, options) {
@ -252,7 +277,7 @@
window.sessionStorage.removeItem(cache_key+'fetched'); window.sessionStorage.removeItem(cache_key+'fetched');
} }
async function initConverse (settings) { initConverse = async (settings) => {
clearStores(); clearStores();
await clearIndexedDB(); await clearIndexedDB();
@ -309,34 +334,4 @@
window.converse_disable_effects = true; window.converse_disable_effects = true;
return _converse; return _converse;
} }
});
mock.initConverse = function (promise_names=[], settings=null, func) {
if (_.isFunction(promise_names)) {
func = promise_names;
promise_names = []
settings = null;
}
return async done => {
if (_converse && _converse.api.connection.connected()) {
await _converse.api.user.logout();
}
const el = document.querySelector('#conversejs');
if (el) {
el.parentElement.removeChild(el);
}
document.title = "Converse Tests";
await initConverse(settings);
await Promise.all((promise_names || []).map(_converse.api.waitUntil));
try {
await func(done, _converse);
} catch(e) {
console.error(e);
fail(e);
await done();
}
}
};
return mock;
}));

View File

@ -1,94 +0,0 @@
var config = {
baseUrl: '../',
paths: {
'console-reporter': 'tests/console-reporter',
'es6-promise': 'node_modules/es6-promise/dist/es6-promise.auto',
'jasmine-console': 'node_modules/jasmine-core/lib/console/console',
'jasmine-core': 'node_modules/jasmine-core/lib/jasmine-core/jasmine',
'jasmine-html': 'node_modules/jasmine-core/lib/jasmine-core/jasmine-html',
'jasmine':'node_modules/jasmine-core/lib/jasmine-core/boot',
'mock': 'tests/mock',
'sinon': 'node_modules/sinon/pkg/sinon',
'test-utils': 'tests/utils',
'transcripts': 'converse-logs/converse-logs'
},
shim: {
'jasmine-html': {
deps: ['jasmine-core'],
exports: 'window.jasmineRequire'
},
'jasmine-console': {
deps: ['jasmine-core'],
exports: 'window.jasmineRequire'
},
'jasmine': {
deps: ['jasmine-core', 'jasmine-html', 'jasmine-console'],
exports: 'window.jasmine'
},
}
};
require.config(config);
var specs = [
"jasmine",
// "spec/transcripts",
// "spec/profiling",
"spec/spoilers",
"spec/roomslist",
"spec/utils",
"spec/converse",
"spec/bookmarks",
"spec/headline",
"spec/disco",
"spec/protocol",
"spec/presence",
"spec/eventemitter",
"spec/smacks",
"spec/ping",
"spec/push",
"spec/xmppstatus",
"spec/mam",
"spec/omemo",
"spec/controlbox",
"spec/roster",
"spec/chatbox",
"spec/user-details-modal",
"spec/messages",
"spec/muc_messages",
"spec/retractions",
"spec/muc",
"spec/modtools",
"spec/room_registration",
"spec/autocomplete",
"spec/minchats",
"spec/notification",
"spec/login",
"spec/register",
"spec/hats",
"spec/http-file-upload",
"spec/emojis",
"spec/xss"
];
function load () {
require(['console-reporter', 'mock', 'sinon'], (ConsoleReporter, mock, sinon) => {
if (window.view_mode) {
mock.view_mode = window.view_mode;
}
window.sinon = sinon;
// Load the specs
require(specs, jasmine => {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 7000;
const jasmineEnv = jasmine.getEnv();
jasmineEnv.addReporter(new ConsoleReporter());
window.onload();
});
});
}
if (window.converse) {
load();
} else {
window.addEventListener('converse-loaded', load);
}

View File

@ -1,6 +1,4 @@
(function (root, factory) { window.addEventListener('converse-loaded', () => {
define(['mock'], factory);
}(this, function (mock) {
const _ = converse.env._; const _ = converse.env._;
const $msg = converse.env.$msg; const $msg = converse.env.$msg;
const $pres = converse.env.$pres; const $pres = converse.env.$pres;
@ -8,8 +6,11 @@
const Strophe = converse.env.Strophe; const Strophe = converse.env.Strophe;
const sizzle = converse.env.sizzle; const sizzle = converse.env.sizzle;
const u = converse.env.utils; const u = converse.env.utils;
const mock = window.mock;
const utils = {}; const utils = {};
window.test_utils = utils;
utils.waitUntilDiscoConfirmed = async function (_converse, entity_jid, identities, features=[], items=[], type='info') { utils.waitUntilDiscoConfirmed = async function (_converse, entity_jid, identities, features=[], items=[], type='info') {
const iq = await u.waitUntil(() => { const iq = await u.waitUntil(() => {
return _.filter( return _.filter(
@ -337,10 +338,10 @@
utils.createContacts = async function (_converse, type, length) { utils.createContacts = async function (_converse, type, length) {
/* Create current (as opposed to requesting or pending) contacts /* Create current (as opposed to requesting or pending) contacts
* for the user's roster. * for the user's roster.
* *
* These contacts are not grouped. See below. * These contacts are not grouped. See below.
*/ */
await _converse.api.waitUntil('rosterContactsFetched'); await _converse.api.waitUntil('rosterContactsFetched');
let names, subscription, requesting, ask; let names, subscription, requesting, ask;
if (type === 'requesting') { if (type === 'requesting') {
@ -414,13 +415,13 @@
utils.createChatMessage = function (_converse, sender_jid, message) { utils.createChatMessage = function (_converse, sender_jid, message) {
return $msg({ return $msg({
from: sender_jid, from: sender_jid,
to: _converse.connection.jid, to: _converse.connection.jid,
type: 'chat', type: 'chat',
id: (new Date()).getTime() id: (new Date()).getTime()
}) })
.c('body').t(message).up() .c('body').t(message).up()
.c('active', {'xmlns': Strophe.NS.CHATSTATES}).tree(); .c('active', {'xmlns': Strophe.NS.CHATSTATES}).tree();
} }
utils.sendMessage = function (view, message) { utils.sendMessage = function (view, message) {
@ -433,5 +434,4 @@
}); });
return promise; return promise;
}; };
return utils; });
}));