function compareMessages()

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;
}