vitest-websocket-mock 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +30 -4
- package/dist/index.js +76 -55
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
import { Server, Client, CloseOptions, ServerOptions } from 'mock-socket';
|
|
2
|
+
import { RawMatcherFn } from '@vitest/expect';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @copyright Romain Bertrand 2018
|
|
6
|
+
* @copyright Akiomi Kamakura 2023
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
declare function deriveToHaveReceivedMessage(name: string, fn: RawMatcherFn): RawMatcherFn;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @copyright Romain Bertrand 2018
|
|
13
|
+
* @copyright Akiomi Kamakura 2023
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
declare function deriveToReceiveMessage(name: string, fn: RawMatcherFn): RawMatcherFn;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @copyright Romain Bertrand 2018
|
|
20
|
+
* @copyright Akiomi Kamakura 2023
|
|
21
|
+
*/
|
|
22
|
+
interface ReceiveMessageOptions {
|
|
23
|
+
timeout?: number;
|
|
24
|
+
}
|
|
2
25
|
|
|
3
26
|
/**
|
|
4
27
|
* @copyright Romain Bertrand 2018
|
|
@@ -45,13 +68,16 @@ declare class WS {
|
|
|
45
68
|
* @copyright Akiomi Kamakura 2023
|
|
46
69
|
*/
|
|
47
70
|
|
|
48
|
-
type ReceiveMessageOptions = {
|
|
49
|
-
timeout?: number;
|
|
50
|
-
};
|
|
51
71
|
interface CustomMatchers<R = unknown> {
|
|
52
72
|
toReceiveMessage<TMessage = object>(message: DeserializedMessage<TMessage>, options?: ReceiveMessageOptions): Promise<R>;
|
|
53
73
|
toHaveReceivedMessages<TMessage = object>(messages: Array<DeserializedMessage<TMessage>>): R;
|
|
54
74
|
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @copyright Romain Bertrand 2018
|
|
78
|
+
* @copyright Akiomi Kamakura 2023
|
|
79
|
+
*/
|
|
80
|
+
|
|
55
81
|
declare module 'vitest' {
|
|
56
82
|
interface Assertion<T = any> extends CustomMatchers<T> {
|
|
57
83
|
}
|
|
@@ -59,4 +85,4 @@ declare module 'vitest' {
|
|
|
59
85
|
}
|
|
60
86
|
}
|
|
61
87
|
|
|
62
|
-
export { WS, WS as default };
|
|
88
|
+
export { ReceiveMessageOptions, WS, WS as default, deriveToHaveReceivedMessage, deriveToReceiveMessage };
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
1
2
|
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
3
|
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
4
|
}) : x)(function(x) {
|
|
@@ -5,11 +6,21 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
5
6
|
return require.apply(this, arguments);
|
|
6
7
|
throw new Error('Dynamic require of "' + x + '" is not supported');
|
|
7
8
|
});
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
8
13
|
|
|
9
|
-
// src/
|
|
10
|
-
import { diff } from "jest-diff";
|
|
14
|
+
// src/extend-expect.ts
|
|
11
15
|
import { expect } from "vitest";
|
|
12
16
|
|
|
17
|
+
// src/matchers/index.ts
|
|
18
|
+
var matchers_exports = {};
|
|
19
|
+
__export(matchers_exports, {
|
|
20
|
+
toHaveReceivedMessages: () => toHaveReceivedMessages_default,
|
|
21
|
+
toReceiveMessage: () => toReceiveMessage_default
|
|
22
|
+
});
|
|
23
|
+
|
|
13
24
|
// src/websocket.ts
|
|
14
25
|
import { Server } from "mock-socket";
|
|
15
26
|
|
|
@@ -135,17 +146,34 @@ var WS = class _WS {
|
|
|
135
146
|
}
|
|
136
147
|
};
|
|
137
148
|
|
|
138
|
-
// src/
|
|
139
|
-
|
|
140
|
-
var TIMEOUT = Symbol("timeout");
|
|
141
|
-
var makeInvalidWsMessage = function makeInvalidWsMessage2(ws, matcher) {
|
|
149
|
+
// src/derivers/makeInvalidWsMessage.ts
|
|
150
|
+
function makeInvalidWsMessage(ws, matcher) {
|
|
142
151
|
return this.utils.matcherHint(this.isNot ? `.not.${matcher}` : `.${matcher}`, "WS", "expected") + `
|
|
143
152
|
|
|
144
153
|
Expected the websocket object to be a valid WS mock.
|
|
145
154
|
Received: ${typeof ws}
|
|
146
155
|
${this.utils.printReceived(ws)}`;
|
|
147
|
-
}
|
|
148
|
-
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// src/derivers/deriveToHaveReceivedMessage.ts
|
|
159
|
+
function deriveToHaveReceivedMessage(name, fn) {
|
|
160
|
+
return function(ws, expected, options) {
|
|
161
|
+
const isWS = ws instanceof WS;
|
|
162
|
+
if (!isWS) {
|
|
163
|
+
return {
|
|
164
|
+
pass: this.isNot,
|
|
165
|
+
// always fail
|
|
166
|
+
message: makeInvalidWsMessage.bind(this, ws, name)
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
return fn.call(this, ws.messages, expected, options);
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// src/derivers/deriveToReceiveMessage.ts
|
|
174
|
+
var WAIT_DELAY = 1e3;
|
|
175
|
+
var TIMEOUT = Symbol("timeout");
|
|
176
|
+
function deriveToReceiveMessage(name, fn) {
|
|
149
177
|
return async function(ws, expected, options) {
|
|
150
178
|
const isWS = ws instanceof WS;
|
|
151
179
|
if (!isWS) {
|
|
@@ -171,52 +199,12 @@ but it didn't receive anything in ${waitDelay}ms.`
|
|
|
171
199
|
};
|
|
172
200
|
} else {
|
|
173
201
|
const received = messageOrTimeout;
|
|
174
|
-
|
|
175
|
-
return { name, ...result };
|
|
202
|
+
return Promise.resolve(fn.call(this, received, expected, options));
|
|
176
203
|
}
|
|
177
204
|
};
|
|
178
|
-
}
|
|
179
|
-
var toReceiveMessage = deriveToReceiveMessage("toReceiveMessage", function(received, expected) {
|
|
180
|
-
const pass = this.equals(received, expected);
|
|
181
|
-
const message = pass ? () => this.utils.matcherHint(".not.toReceiveMessage", "WS", "expected") + `
|
|
182
|
-
|
|
183
|
-
Expected the next received message to not equal:
|
|
184
|
-
${this.utils.printExpected(expected)}
|
|
185
|
-
Received:
|
|
186
|
-
${this.utils.printReceived(received)}` : () => {
|
|
187
|
-
const diffString = diff(expected, received, { expand: this.expand });
|
|
188
|
-
return this.utils.matcherHint(".toReceiveMessage", "WS", "expected") + `
|
|
189
|
-
|
|
190
|
-
Expected the next received message to equal:
|
|
191
|
-
${this.utils.printExpected(expected)}
|
|
192
|
-
Received:
|
|
193
|
-
${this.utils.printReceived(received)}
|
|
194
|
-
|
|
195
|
-
Difference:
|
|
205
|
+
}
|
|
196
206
|
|
|
197
|
-
|
|
198
|
-
};
|
|
199
|
-
return {
|
|
200
|
-
actual: received,
|
|
201
|
-
expected,
|
|
202
|
-
message,
|
|
203
|
-
pass
|
|
204
|
-
};
|
|
205
|
-
});
|
|
206
|
-
var deriveToHaveReceivedMessage = (name, fn) => {
|
|
207
|
-
return function(ws, expected, options) {
|
|
208
|
-
const isWS = ws instanceof WS;
|
|
209
|
-
if (!isWS) {
|
|
210
|
-
return {
|
|
211
|
-
pass: this.isNot,
|
|
212
|
-
// always fail
|
|
213
|
-
message: makeInvalidWsMessage.bind(this, ws, name)
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
const result = fn.call(this, ws.messages, expected, options);
|
|
217
|
-
return { name, ...result };
|
|
218
|
-
};
|
|
219
|
-
};
|
|
207
|
+
// src/matchers/toHaveReceivedMessages.ts
|
|
220
208
|
var toHaveReceivedMessages = deriveToHaveReceivedMessage(
|
|
221
209
|
"toHaveReceivedMessages",
|
|
222
210
|
function(received, expected) {
|
|
@@ -250,11 +238,44 @@ Received:
|
|
|
250
238
|
};
|
|
251
239
|
}
|
|
252
240
|
);
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
241
|
+
var toHaveReceivedMessages_default = toHaveReceivedMessages;
|
|
242
|
+
|
|
243
|
+
// src/matchers/toReceiveMessage.ts
|
|
244
|
+
import { diff } from "jest-diff";
|
|
245
|
+
var toReceiveMessage = deriveToReceiveMessage("toReceiveMessage", function(received, expected) {
|
|
246
|
+
const pass = this.equals(received, expected);
|
|
247
|
+
const message = pass ? () => this.utils.matcherHint(".not.toReceiveMessage", "WS", "expected") + `
|
|
248
|
+
|
|
249
|
+
Expected the next received message to not equal:
|
|
250
|
+
${this.utils.printExpected(expected)}
|
|
251
|
+
Received:
|
|
252
|
+
${this.utils.printReceived(received)}` : () => {
|
|
253
|
+
const diffString = diff(expected, received, { expand: this.expand });
|
|
254
|
+
return this.utils.matcherHint(".toReceiveMessage", "WS", "expected") + `
|
|
255
|
+
|
|
256
|
+
Expected the next received message to equal:
|
|
257
|
+
${this.utils.printExpected(expected)}
|
|
258
|
+
Received:
|
|
259
|
+
${this.utils.printReceived(received)}
|
|
260
|
+
|
|
261
|
+
Difference:
|
|
262
|
+
|
|
263
|
+
${diffString}`;
|
|
264
|
+
};
|
|
265
|
+
return {
|
|
266
|
+
actual: received,
|
|
267
|
+
expected,
|
|
268
|
+
message,
|
|
269
|
+
pass
|
|
270
|
+
};
|
|
256
271
|
});
|
|
272
|
+
var toReceiveMessage_default = toReceiveMessage;
|
|
273
|
+
|
|
274
|
+
// src/extend-expect.ts
|
|
275
|
+
expect.extend(matchers_exports);
|
|
257
276
|
export {
|
|
258
277
|
WS,
|
|
259
|
-
WS as default
|
|
278
|
+
WS as default,
|
|
279
|
+
deriveToHaveReceivedMessage,
|
|
280
|
+
deriveToReceiveMessage
|
|
260
281
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vitest-websocket-mock",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Mock websockets and assert complex websocket interactions with Vitest",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"vitest": "^0.32.0"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
|
-
"vitest": "
|
|
54
|
+
"vitest": ">=0.31.0 <1"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"jest-diff": "^29.2.0",
|