core: let logout return a promise and wait for it in tests

This commit is contained in:
JC Brand 2019-10-11 12:06:13 +02:00
parent a0bd6dbab6
commit 6253dd52a6
2 changed files with 20 additions and 9 deletions

View File

@ -1552,17 +1552,26 @@ _converse.api = {
* @example _converse.api.user.logout();
*/
logout () {
const promise = u.getResolveablePromise();
const complete = () => {
// Recreate all the promises
Object.keys(_converse.promises).forEach(addPromise);
/**
* Triggered once the user has logged out.
* @event _converse#logout
*/
_converse.api.trigger('logout');
promise.resolve();
}
_converse.setDisconnectionCause(_converse.LOGOUT, undefined, true);
if (_converse.connection !== undefined) {
_converse.api.listen.once('disconnected', () => complete());
_converse.connection.disconnect();
} else {
complete();
}
// Recreate all the promises
Object.keys(_converse.promises).forEach(addPromise);
/**
* Triggered once the user has logged out.
* @event _converse#logout
*/
_converse.api.trigger('logout');
return promise;
},
/**

View File

@ -262,8 +262,10 @@
}
return async done => {
const _converse = await initConverse(settings, spies);
function _done () {
_converse.api.user.logout();
async function _done () {
await _converse.api.user.logout();
const el = document.querySelector('#conversejs');
el.parentElement.removeChild(el);
done();
}
await Promise.all((promise_names || []).map(_converse.api.waitUntil));