1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 |
|
4 |
|
5 |
|
6 | class OutgoingMessageComparator {
|
7 | constructor(expectedMessages, ignoreOrder) {
|
8 | this.expectedMessages = expectedMessages;
|
9 | this.ignoreOrder = ignoreOrder;
|
10 | }
|
11 | |
12 |
|
13 |
|
14 | compareOutgoingMessageToExpectedResponses(outgoingMessage) {
|
15 | if (this.ignoreOrder) {
|
16 | this.compareOutgoingMessageToExpectedResponsesWithoutOrder(outgoingMessage);
|
17 | }
|
18 | else {
|
19 | this.compareOutgoingMessageToExpectedResponsesInOrder(outgoingMessage);
|
20 | }
|
21 | }
|
22 | |
23 |
|
24 |
|
25 | expectsAdditionalMessages() {
|
26 | return this.expectedMessages.length !== 0;
|
27 | }
|
28 | getTimeoutErrorMessage() {
|
29 | return `timedout while waiting to receive ${this.expectedMessages[0].toString()}`;
|
30 | }
|
31 | compareOutgoingMessageToExpectedResponsesInOrder(outgoingMessage) {
|
32 | const nextMessage = this.dequeueNextExpectedMessage();
|
33 | if (nextMessage) {
|
34 | nextMessage.checkForMessageMatch(outgoingMessage);
|
35 | }
|
36 | }
|
37 | compareOutgoingMessageToExpectedResponsesWithoutOrder(outgoingMessage) {
|
38 | const originalItemCount = this.expectedMessages.length;
|
39 | let matchingMessageFound = false;
|
40 | this.expectedMessages = this.expectedMessages.filter((expectedMessage, i) => {
|
41 | if (matchingMessageFound) {
|
42 | return true;
|
43 | }
|
44 | try {
|
45 | expectedMessage.checkForMessageMatch(outgoingMessage);
|
46 | matchingMessageFound = true;
|
47 | return false;
|
48 | }
|
49 | catch (e) {
|
50 | return true;
|
51 | }
|
52 | });
|
53 | if (originalItemCount === this.expectedMessages.length) {
|
54 | throw new Error(`${JSON.stringify(outgoingMessage, null, 2)} did not match any of ${this.expectedMessages.map((t) => t.toString())}`);
|
55 | }
|
56 | }
|
57 | |
58 |
|
59 |
|
60 | dequeueNextExpectedMessage() {
|
61 | return this.expectedMessages.shift();
|
62 | }
|
63 | }
|
64 | exports.OutgoingMessageComparator = OutgoingMessageComparator;
|
65 |
|
\ | No newline at end of file |