UNPKG

node-red-contrib-chatbot

Version:

REDBot a Chat bot for a full featured chat bot for Telegram, Facebook Messenger and Slack. Almost no coding skills required

120 lines (109 loc) 4.84 kB
var _ = require('underscore'); var assert = require('chai').assert; var RED = require('../lib/red-stub')(); var MenuBlock = require('../nodes/chatbot-messenger-menu'); describe('Chat menu node', function() { it('should create a persistent menu in facebook', function() { var msg = RED.createMessage({}, 'facebook'); RED.node.config({ composerInputDisabled: false, items: [ { type: 'url', title: 'JavaScript Jedi', url: 'http://javascript-jedi.com', webview_height_ratio: 'full' // tall|full|compact }, { type: 'postback', title: 'Help', payload: '/help' } ] }); MenuBlock(RED); RED.node.get().emit('input', msg); assert.equal(RED.node.message(0).originalMessage.chat.id, '42'); assert.equal(RED.node.message(0).originalMessage.transport, 'facebook'); assert.equal(RED.node.message(0).payload.type, 'persistent-menu'); assert.isArray(RED.node.message(0).payload.items); assert.isObject(RED.node.message(0).payload.items[0]); assert.equal(RED.node.message(0).payload.items[0].type, 'url'); assert.equal(RED.node.message(0).payload.items[0].title, 'JavaScript Jedi'); assert.equal(RED.node.message(0).payload.items[0].webview_height_ratio, 'full'); assert.isObject(RED.node.message(0).payload.items[1]); assert.equal(RED.node.message(0).payload.items[1].type, 'postback'); assert.equal(RED.node.message(0).payload.items[1].title, 'Help'); assert.equal(RED.node.message(0).payload.items[1].payload, '/help'); assert.equal(RED.node.message(0).payload.command, 'set'); assert.equal(RED.node.message(0).payload.composerInputDisabled, false); }); it('should create a persistent menu in facebook passed by the upstream node in payload', function() { var msg = RED.createMessage([ { type: 'url', title: 'JavaScript Jedi', url: 'http://javascript-jedi.com', webview_height_ratio: 'full' // tall|full|compact }, { type: 'postback', title: 'Help', payload: '/help' } ], 'facebook'); RED.node.config({}); MenuBlock(RED); RED.node.get().emit('input', msg); assert.equal(RED.node.message(0).originalMessage.chat.id, '42'); assert.equal(RED.node.message(0).originalMessage.transport, 'facebook'); assert.equal(RED.node.message(0).payload.type, 'persistent-menu'); assert.isArray(RED.node.message(0).payload.items); assert.isObject(RED.node.message(0).payload.items[0]); assert.equal(RED.node.message(0).payload.items[0].type, 'url'); assert.equal(RED.node.message(0).payload.items[0].title, 'JavaScript Jedi'); assert.equal(RED.node.message(0).payload.items[0].webview_height_ratio, 'full'); assert.isObject(RED.node.message(0).payload.items[1]); assert.equal(RED.node.message(0).payload.items[1].type, 'postback'); assert.equal(RED.node.message(0).payload.items[1].title, 'Help'); assert.equal(RED.node.message(0).payload.items[1].payload, '/help'); assert.equal(RED.node.message(0).payload.command, 'set'); assert.equal(RED.node.message(0).payload.composerInputDisabled, false); }); it('should create a persistent menu in facebook passed by the upstream node in payload (all)', function() { var msg = RED.createMessage({ composerInputDisabled: true, command: 'set', items: [ { type: 'url', title: 'JavaScript Jedi', url: 'http://javascript-jedi.com', webview_height_ratio: 'full' // tall|full|compact }, { type: 'postback', title: 'Help', payload: '/help' } ] }, 'facebook'); RED.node.config({}); MenuBlock(RED); RED.node.get().emit('input', msg); assert.equal(RED.node.message(0).originalMessage.chat.id, '42'); assert.equal(RED.node.message(0).originalMessage.transport, 'facebook'); assert.equal(RED.node.message(0).payload.type, 'persistent-menu'); assert.isArray(RED.node.message(0).payload.items); assert.isObject(RED.node.message(0).payload.items[0]); assert.equal(RED.node.message(0).payload.items[0].type, 'url'); assert.equal(RED.node.message(0).payload.items[0].title, 'JavaScript Jedi'); assert.equal(RED.node.message(0).payload.items[0].webview_height_ratio, 'full'); assert.isObject(RED.node.message(0).payload.items[1]); assert.equal(RED.node.message(0).payload.items[1].type, 'postback'); assert.equal(RED.node.message(0).payload.items[1].title, 'Help'); assert.equal(RED.node.message(0).payload.items[1].payload, '/help'); assert.equal(RED.node.message(0).payload.command, 'set'); assert.equal(RED.node.message(0).payload.composerInputDisabled, true); }); });