UNPKG

2.49 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3/**
4 * Manages the comparisons against expected messages and outgoingMessages that the BotTester framework intercepts
5 */
6class OutgoingMessageComparator {
7 constructor(expectedMessages, ignoreOrder) {
8 this.expectedMessages = expectedMessages;
9 this.ignoreOrder = ignoreOrder;
10 }
11 /**
12 * compares the current outgoing message against the current expected message
13 */
14 compareOutgoingMessageToExpectedResponses(outgoingMessage) {
15 if (this.ignoreOrder) {
16 this.compareOutgoingMessageToExpectedResponsesWithoutOrder(outgoingMessage);
17 }
18 else {
19 this.compareOutgoingMessageToExpectedResponsesInOrder(outgoingMessage);
20 }
21 }
22 /**
23 * returns tfalse when all expected messages have been seen (e.g. test steps are emtpy)
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 * gets the next expected message and removes it from the expectedMessages
59 */
60 dequeueNextExpectedMessage() {
61 return this.expectedMessages.shift();
62 }
63}
64exports.OutgoingMessageComparator = OutgoingMessageComparator;
65//# sourceMappingURL=OutgoingMessageComparator.js.map
\No newline at end of file