in test.js [155:187]
function compareMessages(context, userMessage, expectedReplies, actualMessages) {
logger.log("compareMessages started");
logger.log("actualMessages: " + utils.stringify(actualMessages));
// Filter out messages from the (test) user, leaving only bot replies
var botReplies = _.reject(actualMessages,
function(message) {
return message.from.id == userMessage.from.id;
});
expect(botReplies, `reply to user message '${userMessage.text}'`).to.have.lengthOf(expectedReplies.length);
for (var i = 0; i < expectedReplies.length; i++) {
var assert = expectedReplies[i].assert || "to.be.equal";
var expectedReply = expectedReplies[i];
var botReply = botReplies[i];
if (botReply.hasOwnProperty("text")) {
var expr = 'expect(botReply.text, "user message number ' + (i+1) + ' ").' + assert + '(expectedReply.text)';
eval(expr);
}
if (botReply.hasOwnProperty("attachments")) {
try {
expect(botReply.attachments,`attachments of reply number ${i+1} to user message '${userMessage.text}'`).to.deep.equal(expectedReply.attachments);
}
catch (err) {
var exception = new Error(err.message);
exception.details = {message: err.message, expected: err.expected, actual: err.actual, diff: diff(err.expected, err.actual)};
throw exception;
}
}
}
return true;
}