tests: Spy on socket.io messages as early as possible

This commit is contained in:
Richard Hansen 2021-10-28 17:44:10 -04:00
parent e28c9ffc97
commit c8e0916e1a
2 changed files with 25 additions and 29 deletions

View file

@ -311,14 +311,21 @@ const handshake = async () => {
} }
}); });
await new Promise((resolve) => { await Promise.all([
new Promise((resolve) => {
const h = (obj) => { const h = (obj) => {
if (obj.accessStatus || obj.type !== 'CLIENT_VARS') return; if (obj.accessStatus || obj.type !== 'CLIENT_VARS') return;
socket.off('message', h); socket.off('message', h);
resolve(); resolve();
}; };
socket.on('message', h); socket.on('message', h);
}); }),
// This hook is only intended to be used by test code. If a plugin would like to use this hook,
// the hook must first be promoted to officially supported by deleting the leading underscore
// from the name, adding documentation to `doc/api/hooks_client-side.md`, and deleting this
// comment.
hooks.aCallAll('_socketCreated', {socket}),
]);
}; };
/** Defers message handling until setCollabClient() is called with a non-null value. */ /** Defers message handling until setCollabClient() is called with a non-null value. */

View file

@ -99,6 +99,16 @@ const helper = {};
hookFns: {}, hookFns: {},
}, opts); }, opts);
// Set up socket.io spying as early as possible.
/** chat messages received */
helper.chatMessages = [];
/** changeset commits from the server */
helper.commits = [];
/** userInfo messages from the server */
helper.userInfos = [];
if (opts.hookFns._socketCreated == null) opts.hookFns._socketCreated = [];
opts.hookFns._socketCreated.unshift(() => helper.spyOnSocketIO());
// if opts.params is set we manipulate the URL to include URL parameters IE ?foo=Bah. // if opts.params is set we manipulate the URL to include URL parameters IE ?foo=Bah.
let encodedParams; let encodedParams;
if (opts.params) { if (opts.params) {
@ -171,27 +181,6 @@ const helper = {};
helper.padOuter$.fx.off = true; helper.padOuter$.fx.off = true;
helper.padInner$.fx.off = true; helper.padInner$.fx.off = true;
/*
* chat messages received
* @type {Array}
*/
helper.chatMessages = [];
/*
* changeset commits from the server
* @type {Array}
*/
helper.commits = [];
/*
* userInfo messages from the server
* @type {Array}
*/
helper.userInfos = [];
// listen for server messages
helper.spyOnSocketIO();
return opts.id; return opts.id;
}; };