Commit 6c2bbc51 by Иван Кубота

begin tests

parent 8f859356
const Message = require('../Model/Message');
const Bot = function(token, cfg) {
this.token = token;
this.cfg = cfg;
};
Bot.prototype = {
behave: function(rules) {
this.rules = rules;
return this;
},
_createBot: function(token, cfg) {
const TelegramBot = require('node-telegram-bot-api');
return new TelegramBot(token, cfg)
},
init: function() {
const {token, cfg} = this;
const bot = this.bot = this._createBot(token, cfg);
const captured = require('../Model/User').captured;
bot.on('message', (msg) => {
const wrappedMessage = new Message(msg, bot);
const rules = this.rules;
if(captured(wrappedMessage))
return;
for( let i = 0, _i = rules.length; i < _i; i++ ){
const rule = rules[ i ], match = rule.match(wrappedMessage);
if(match){
rule.proceed(wrappedMessage, match);
break;
}
}
});
const callbackResolver = require('../Model/Choose').resolver;
bot.on('callback_query', function (msg) {
const wrappedMessage = new Message(msg, bot);
callbackResolver(wrappedMessage);
});
return this;
}
};
module.exports = Bot;
\ No newline at end of file
const rules = require('./rules');
const Message = require('./Model/Message');
const TelegramBot = require('node-telegram-bot-api');
// replace the value below with the Telegram token you receive from @BotFather
const token = process.env.token; const token = process.env.token;
// Create a bot that uses 'polling' to fetch new updates const Bot = require('./Controller/Bot');
const bot = new TelegramBot(token, {
polling: true
});
const bot = new Bot(token, {
const captured = require('./Model/User').captured; polling: true
// Listen for any kind of message. There are different kinds of
// messages.
bot.on('message', (msg) => {
const wrappedMessage = new Message(msg, bot);
if(captured(wrappedMessage))
return;
for( let i = 0, _i = rules.length; i < _i; i++ ){
const rule = rules[ i ], match = rule.match(wrappedMessage);
if(match){
rule.proceed(wrappedMessage, match);
break;
}
}
}); });
const callbackResolver = require('./Model/Choose').resolver; bot
bot.on('callback_query', function (msg) { .behave(require('./rules'))
const wrappedMessage = new Message(msg, bot); .init();
callbackResolver(wrappedMessage);
});
\ No newline at end of file
//import * as assert from 'assert'; //import * as assert from 'assert';
import {it, describe} from "mocha"; const { Answer } = require("../Model/Event");
describe('pattern matching', function () { const {it, describe} = require('mocha');
it('should match strict commands', function (done) { const TelegramBot = require('./util/bot-mock');
done(); const assert = require( "assert" );
})
describe('pattern matching', function (){
const reply = function(tpl) {
return function(msg) {
debugger
msg.reply((tpl||'')+msg.data)
}
};
let bot;
it( 'should create fake bot', function( done ){
const token = '123';
bot = new TelegramBot( token, {
polling: true
} );
assert.strictEqual(bot.bot, void 0);
done();
});
it( 'should init fake bot', function( done ){
bot
.behave( [
Answer('/test', reply('simple:')),
Answer('/test1', reply('simple:')),
Answer('/test {{$something}}', reply('var:')),
] )
.init()
assert.notStrictEqual(bot.bot, void 0);
done();
});
it( 'should match strict commands', function( done ){
bot
.test();
done();
} )
}); });
const EventEmitter = require('events').EventEmitter;
const assert = require('assert');
const Bot = require('../../Controller/Bot');
module.exports = function(token, cfg) {
const bot = new Bot(token, cfg);
bot._createBot = function(token, cfg) {
assert.notStrictEqual(token, void 0);
return new EventEmitter();
};
return bot;
};
\ No newline at end of file
const EventEmitter = require('events').eventEmiter;
const TelegramBotMock = function(token, cfg){
assert.notEqual(token, void 0)
};
module.exports = TelegramBotMock;
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment