UNPKG

botium-core

Version:
121 lines (108 loc) 5.39 kB
const path = require('path') const assert = require('chai').assert const BotDriver = require('../../../').BotDriver const Capabilities = require('../../../').Capabilities const echoConnector = ({ queueBotSays }) => { return { UserSays (msg) { const botMsg = { sender: 'bot', sourceData: msg.sourceData, messageText: msg.messageText } queueBotSays(botMsg) } } } describe('scripting.userinputs.mediaInputConvos.relative', function () { beforeEach(async function () { const myCaps = { [Capabilities.PROJECTNAME]: 'scripting.userinputs.mediaInputConvos', [Capabilities.CONTAINERMODE]: echoConnector, [Capabilities.SCRIPTING_ENABLE_MEMORY]: true } const driver = new BotDriver(myCaps) this.compiler = driver.BuildCompiler() this.container = await driver.Build() }) afterEach(async function () { this.container && await this.container.Clean() }) it('should fail on media with no arg', async function () { this.compiler.ReadScript(path.resolve(__dirname, 'convos'), 'mediaNoArg.convo.txt') try { await this.compiler.convos[0].Run(this.container) assert.fail('it should have failed') } catch (err) { assert.isTrue(err.message.indexOf('Line 3: MediaInput requires exactly 1 argument') > 0) } }) it('should add media in user message', async function () { this.compiler.ReadScript(path.resolve(__dirname, 'convos'), 'media.convo.txt') assert.equal(this.compiler.convos.length, 1) assert.equal(this.compiler.convos[0].conversation.length, 1) assert.equal(this.compiler.convos[0].conversation[0].userInputs.length, 1) assert.equal(this.compiler.convos[0].conversation[0].userInputs[0].name, 'MEDIA') assert.equal(this.compiler.convos[0].conversation[0].userInputs[0].args.length, 1) assert.equal(this.compiler.convos[0].conversation[0].userInputs[0].args[0], 'test.jpg') const transcript = await this.compiler.convos[0].Run(this.container) assert.equal(transcript.steps.length, 1) assert.equal(transcript.steps[0].actual.media.length, 1) assert.isTrue(transcript.steps[0].actual.media[0].mediaUri.endsWith('test/scripting/userinputs/convos/test.jpg')) assert.equal(transcript.steps[0].actual.media[0].mimeType, 'image/jpeg') }) it('should add multi media in user message', async function () { this.compiler.ReadScript(path.resolve(__dirname, 'convos'), 'medias.convo.txt') const transcript = await this.compiler.convos[0].Run(this.container) assert.equal(transcript.steps.length, 1) assert.equal(transcript.steps[0].actual.media.length, 2) assert.isTrue(transcript.steps[0].actual.media[0].mediaUri.endsWith('test/scripting/userinputs/convos/test1.jpg')) assert.equal(transcript.steps[0].actual.media[0].mimeType, 'image/jpeg') assert.isTrue(transcript.steps[0].actual.media[1].mediaUri.endsWith('test/scripting/userinputs/convos/test2.jpg')) assert.equal(transcript.steps[0].actual.media[1].mimeType, 'image/jpeg') }) }) describe('scripting.userinputs.mediaInputConvos.baseUri', function () { beforeEach(async function () { const myCaps = { [Capabilities.PROJECTNAME]: 'scripting.userinputs.mediaInputConvos', [Capabilities.CONTAINERMODE]: echoConnector, [Capabilities.SCRIPTING_ENABLE_MEMORY]: true, [Capabilities.USER_INPUTS]: [ { ref: 'MEDIA', src: 'MediaInput', args: { baseUri: 'https://www.botium.at' } } ] } const driver = new BotDriver(myCaps) this.compiler = driver.BuildCompiler() this.container = await driver.Build() }) afterEach(async function () { this.container && await this.container.Clean() }) it('should add media in user message', async function () { this.compiler.ReadScript(path.resolve(__dirname, 'convos'), 'media.convo.txt') assert.equal(this.compiler.convos.length, 1) assert.equal(this.compiler.convos[0].conversation.length, 1) assert.equal(this.compiler.convos[0].conversation[0].userInputs.length, 1) assert.equal(this.compiler.convos[0].conversation[0].userInputs[0].name, 'MEDIA') assert.equal(this.compiler.convos[0].conversation[0].userInputs[0].args.length, 1) assert.equal(this.compiler.convos[0].conversation[0].userInputs[0].args[0], 'test.jpg') const transcript = await this.compiler.convos[0].Run(this.container) assert.equal(transcript.steps.length, 1) assert.equal(transcript.steps[0].actual.media.length, 1) assert.equal(transcript.steps[0].actual.media[0].mediaUri, 'https://www.botium.at/test.jpg') assert.equal(transcript.steps[0].actual.media[0].mimeType, 'image/jpeg') }) it('should add multi media in user message', async function () { this.compiler.ReadScript(path.resolve(__dirname, 'convos'), 'medias.convo.txt') const transcript = await this.compiler.convos[0].Run(this.container) assert.equal(transcript.steps.length, 1) assert.equal(transcript.steps[0].actual.media.length, 2) assert.equal(transcript.steps[0].actual.media[0].mediaUri, 'https://www.botium.at/test1.jpg') assert.equal(transcript.steps[0].actual.media[0].mimeType, 'image/jpeg') assert.equal(transcript.steps[0].actual.media[1].mediaUri, 'https://www.botium.at/test2.jpg') assert.equal(transcript.steps[0].actual.media[1].mimeType, 'image/jpeg') }) })