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

103 lines (87 loc) 4.73 kB
var _ = require('underscore'); var assert = require('chai').assert; var helpers = require('../lib/helpers/regexps'); var utils = require('../lib/helpers/utils'); var RED = require('../lib/red-stub')(); describe('Helpers functions', function() { it('detect a command like message', function() { assert.isTrue(helpers.isCommand('/cmd')); assert.isTrue(helpers.isCommand('/Cmd')); assert.isTrue(helpers.isCommand('/cmd with params')); assert.isTrue(helpers.isCommand('/cmd_particular with params', '/cmd_particular')); assert.isTrue(helpers.isCommand('/cmd with params', '/cmd')); assert.isFalse(helpers.isCommand('I am not a command')); assert.isFalse(helpers.isCommand(' trailing spaces')); assert.isFalse(helpers.isCommand()); assert.isFalse(helpers.isCommand('/cmd with params', 'another_cmd')); }); it('detect a url', function() { assert.equal(helpers.url('http://www.google.com'), 'http://www.google.com'); assert.equal(helpers.url('www.google.com'), 'www.google.com'); assert.isNull(helpers.url('I am not a url')); assert.isNull(helpers.url('a text with a url http://www.google.com'), 'http://www.google.com'); }); it('detect a number', function() { assert.equal(helpers.number('123232312'), '123232312'); assert.isNull(helpers.url('I am not a number')); }); }); describe('Value extractors', function() { var extractValue = utils.extractValue; it('should extract a boolean', function() { var msg1 = RED.createMessage(true); var msg2 = RED.createMessage({ aBoolean: true }); var msg3 = RED.createMessage('wrong type'); assert.equal(extractValue('boolean', 'aBoolean', RED.node , msg1), true); assert.equal(extractValue('boolean', 'aBoolean', RED.node , msg2), true); assert.equal(extractValue('boolean', 'aBoolean', RED.node , msg3), null); }); it('should extract a string', function() { var msg1 = RED.createMessage('I am a string'); var msg2 = RED.createMessage({ aString: 'I am a string' }); var msg3 = RED.createMessage(42); assert.equal(extractValue('string', 'aString', RED.node , msg1), 'I am a string'); assert.equal(extractValue('string', 'aString', RED.node , msg2), 'I am a string'); assert.equal(extractValue('string', 'aString', RED.node , msg3), null); }); it('should extract a buffer', function() { var msg1 = RED.createMessage(new Buffer('just a buffer')); var msg2 = RED.createMessage({ aBuffer: new Buffer('just a buffer') }); var msg3 = RED.createMessage(42); assert.instanceOf(extractValue('buffer', 'aBuffer', RED.node , msg1), Buffer); assert.instanceOf(extractValue('buffer', 'aBuffer', RED.node , msg2), Buffer); assert.equal(extractValue('buffer', 'aBuffer', RED.node , msg3), null); }); it('should extract an array', function() { var msg1 = RED.createMessage([1, 2, 3]); var msg2 = RED.createMessage({ anArray: [1, 2, 3] }); var msg3 = RED.createMessage(42); assert.isArray(extractValue('array', 'anArray', RED.node , msg1)); assert.equal(extractValue('array', 'anArray', RED.node , msg1)[0], 1); assert.equal(extractValue('array', 'anArray', RED.node , msg1)[1], 2); assert.equal(extractValue('array', 'anArray', RED.node , msg1)[2], 3); assert.isArray(extractValue('array', 'anArray', RED.node , msg1)); assert.equal(extractValue('array', 'anArray', RED.node , msg2)[0], 1); assert.equal(extractValue('array', 'anArray', RED.node , msg2)[1], 2); assert.equal(extractValue('array', 'anArray', RED.node , msg2)[2], 3); assert.equal(extractValue('array', 'anArray', RED.node , msg3), null); }); it('should extract an array of object', function() { var msg1 = RED.createMessage([{}, {}, {}]); var msg2 = RED.createMessage({ anArrayOfObject: [{}, {}, {}] }); var msg3 = RED.createMessage(42); assert.isArray(extractValue('arrayOfObject', 'anArrayOfObject', RED.node , msg1)); assert.isArray(extractValue('arrayOfObject', 'anArrayOfObject', RED.node , msg2)); assert.equal(extractValue('arrayOfObject', 'anArrayOfObject', RED.node , msg3), null); }); it('should extract an hash', function() { var msg1 = RED.createMessage({ randomValue: 42 }); var msg2 = RED.createMessage({ anHash: { randomValue: 42} }); var msg3 = RED.createMessage({ chatId: 42}); assert.isObject(extractValue('hash', 'anHash', RED.node , msg1)); assert.equal(extractValue('hash', 'anHash', RED.node , msg1).randomValue, 42); assert.isObject(extractValue('hash', 'anHash', RED.node , msg2)); assert.equal(extractValue('hash', 'anHash', RED.node , msg2).randomValue, 42); assert.equal(extractValue('hash', 'anHash', RED.node , msg3), null); }); });