59 lines
1.3 KiB
JavaScript
59 lines
1.3 KiB
JavaScript
import { EventEmitter, promise } from "@xmpp/events";
|
|
|
|
import Connection from "../index.js";
|
|
|
|
function socket(fn) {
|
|
return class Socket extends EventEmitter {
|
|
async connect() {
|
|
await Promise.resolve();
|
|
return fn.call(this);
|
|
}
|
|
};
|
|
}
|
|
|
|
test('emits "connecting" status', () => {
|
|
const conn = new Connection();
|
|
// eslint-disable-next-line func-names
|
|
conn.Socket = socket(function () {
|
|
this.emit("connect");
|
|
});
|
|
|
|
return Promise.all([
|
|
promise(conn, "connecting"),
|
|
promise(conn, "status").then((status) => expect(status).toBe("connecting")),
|
|
conn.connect("url"),
|
|
]);
|
|
});
|
|
|
|
test("rejects if an error is emitted before connected", async () => {
|
|
expect.assertions(2);
|
|
|
|
const conn = new Connection();
|
|
const error = {};
|
|
|
|
// eslint-disable-next-line func-names
|
|
conn.Socket = socket(function () {
|
|
this.emit("error", error);
|
|
});
|
|
conn.on("error", (err) => {
|
|
expect(err).toBe(error);
|
|
});
|
|
|
|
try {
|
|
await conn.connect("url");
|
|
expect.fail();
|
|
} catch (err) {
|
|
expect(err).toBe(error);
|
|
}
|
|
});
|
|
|
|
test("resolves if socket connects", async () => {
|
|
const conn = new Connection();
|
|
// eslint-disable-next-line func-names
|
|
conn.Socket = socket(function () {
|
|
this.emit("connect");
|
|
});
|
|
await conn.connect("url");
|
|
expect().pass();
|
|
});
|