botbuilder-unit
Version:
Unit tests for chatbot dialogs
115 lines (111 loc) • 2.65 kB
JavaScript
const botFactory = require('./lib/botFactory');
const unit = require('../');
describe('Support for session management functions', function () {
let bot = null;
let script = null;
let sessionBot = () => {
bot = botFactory();
bot.dialog('/test', [
(session) => {
let name = session.userData.name;
session.endDialog(`Hello, ${name}!`)
}
])
};
beforeEach((done) => {
done();
});
it('Should support initialization of session, before starting a conversation', (done) => {
sessionBot();
let script = [
{session: {userData: {name: 'Gisma'}}},
{user: 'Hi'},
{bot: 'Hello, Gisma!'},
{session: {userData: {name: 'Yulia'}}},
{user: 'Hi'},
{bot: "Hello, Yulia!"}
];
unit(bot, script).then(done, (e) => {
fail('Aaaah... Fuck!')
done();
});
});
it('Should support filtering callbacks ', (done) => {
sessionBot();
let script = [
{
session: function (currentSession) {
currentSession.userData.name = 'Gisma';
return Promise.resolve(currentSession);
}
},
{
user: 'Hi'
},
{
bot: 'Hello, Gisma!'
},
{
session: (currentSession) => {
currentSession.userData.name = '123' + currentSession.userData.name
return Promise.resolve(currentSession);
}
},
{
user: 'Hi'
},
{
bot: 'Hello, 123Gisma!'
}
]
unit(bot, script).then(done);
})
it('Should support multiple session modificator', (done) => {
sessionBot();
let script = [
{
session: {userData: {name: "Gi"}}
},
{
session: function (currentSession) {////
currentSession.userData.name += 'sma';
return Promise.resolve(currentSession);
}
},
{
user: 'Hi'
},
{
bot: 'Hello, Gisma!'
},
{
session: (currentSession) => {
currentSession.userData.name = '123' + currentSession.userData.name
return Promise.resolve(currentSession);
}
},
{
user: 'Hi'
},
{
bot: 'Hello, 123Gisma!'
}
]
unit(bot, script).then(done);
});
it('Test edge cases', (done) => {
bot = botFactory();
let script = [
{session: {myCustomName: 'Mr Freeman'}},
{user: 'hi'},
{bot: 'Hello, Mr Freeman!'}
];
bot.dialog('/test', [
(session) => {
let name = session.myCustomName;
session.endDialog(`Hello, ${name}!`)
}
])
unit(bot, script).then(done);
});
})