mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-17 19:26:23 +00:00
162 lines
4.3 KiB
JavaScript
162 lines
4.3 KiB
JavaScript
const { test } = require('uvu')
|
|
const assert = require('uvu/assert')
|
|
const { generateRefSerialize } = require('../utils/hash')
|
|
const { addKeyword, addAnswer, toSerialize } = require('../io/methods')
|
|
|
|
test('Debere probar las propeidades', () => {
|
|
const ARRANGE = {
|
|
keyword: 'hola!',
|
|
}
|
|
const MAIN_CTX = addKeyword(ARRANGE.keyword)
|
|
|
|
assert.type(MAIN_CTX.addAnswer, 'function')
|
|
assert.is(MAIN_CTX.ctx.keyword, ARRANGE.keyword)
|
|
})
|
|
|
|
test('Debere probar las propeidades array', () => {
|
|
const ARRANGE = {
|
|
keyword: ['hola!', 'ole'],
|
|
}
|
|
const MAIN_CTX = addKeyword(ARRANGE.keyword)
|
|
|
|
assert.is(MAIN_CTX.ctx.keyword, ARRANGE.keyword)
|
|
})
|
|
|
|
test('Debere probar las propeidades array en answer', () => {
|
|
const ARRANGE = {
|
|
keyword: ['hola!', 'ole'],
|
|
}
|
|
const MAIN_CTX = addKeyword(ARRANGE.keyword).addAnswer(['hola', 'chao'])
|
|
|
|
assert.is(MAIN_CTX.ctx.keyword, ARRANGE.keyword)
|
|
})
|
|
|
|
test('Debere probar toSerialize', () => {
|
|
const ARRANGE = {
|
|
keyword: ['hola!', 'ole'],
|
|
}
|
|
const MAIN_CTX = addKeyword(ARRANGE.keyword)
|
|
.addAnswer('Segundo!')
|
|
.addAnswer('Segundo!')
|
|
.toJson()
|
|
|
|
const [ANSWER_A] = MAIN_CTX
|
|
|
|
assert.is(
|
|
toSerialize(MAIN_CTX)[0].refSerialize,
|
|
generateRefSerialize({
|
|
index: 0,
|
|
answer: ANSWER_A.answer,
|
|
keyword: ANSWER_A.keyword,
|
|
})
|
|
)
|
|
})
|
|
|
|
test('Debere probar el paso de contexto', () => {
|
|
const ARRANGE = {
|
|
keyword: 'hola!',
|
|
answer: 'Bienvenido',
|
|
}
|
|
const CTX_A = addKeyword(ARRANGE.keyword)
|
|
const CTX_B = addAnswer(CTX_A)(ARRANGE.answer)
|
|
|
|
assert.is(CTX_A.ctx.keyword, ARRANGE.keyword)
|
|
assert.is(CTX_B.ctx.keyword, ARRANGE.keyword)
|
|
assert.is(CTX_B.ctx.answer, ARRANGE.answer)
|
|
})
|
|
|
|
test('Debere probar la anidación', () => {
|
|
const ARRANGE = {
|
|
keyword: 'hola!',
|
|
answer_A: 'Bienvenido',
|
|
answer_B: 'Continuar',
|
|
}
|
|
const MAIN_CTX = addKeyword(ARRANGE.keyword)
|
|
.addAnswer(ARRANGE.answer_A)
|
|
.addAnswer(ARRANGE.answer_B)
|
|
|
|
assert.is(MAIN_CTX.ctx.answer, ARRANGE.answer_B)
|
|
})
|
|
|
|
test('Debere probar las poptions', () => {
|
|
const MAIN_CTX = addKeyword('etc', { sensitive: false })
|
|
|
|
assert.is(MAIN_CTX.ctx.options.sensitive, false)
|
|
})
|
|
|
|
test('Debere probar las addAnswer', () => {
|
|
const MOCK_OPT = {
|
|
media: 'http://image.mock/mock.png',
|
|
buttons: [1],
|
|
}
|
|
const MAIN_CTX = addKeyword('hola').addAnswer('etc', MOCK_OPT)
|
|
|
|
assert.is(MAIN_CTX.ctx.options.media, MOCK_OPT.media)
|
|
assert.is(MAIN_CTX.ctx.options.buttons.length, 1)
|
|
})
|
|
|
|
test('Debere probar error las addAnswer', () => {
|
|
const MOCK_OPT = {
|
|
media: { a: 1, b: [] },
|
|
buttons: 'test',
|
|
}
|
|
const MAIN_CTX = addKeyword('hola').addAnswer('etc', MOCK_OPT)
|
|
|
|
assert.is(MAIN_CTX.ctx.options.media, null)
|
|
assert.is(MAIN_CTX.ctx.options.buttons.length, 0)
|
|
})
|
|
|
|
test('Obtener toJson', () => {
|
|
const [ctxA, ctxB, ctxC] = addKeyword('hola')
|
|
.addAnswer('pera!')
|
|
.addAnswer('chao')
|
|
.toJson()
|
|
|
|
assert.is(ctxA.keyword, 'hola')
|
|
assert.match(ctxA.ref, /^key_/)
|
|
|
|
assert.is(ctxB.answer, 'pera!')
|
|
assert.match(ctxB.ref, /^ans_/)
|
|
|
|
assert.is(ctxC.answer, 'chao')
|
|
assert.match(ctxC.ref, /^ans_/)
|
|
})
|
|
|
|
test('addKeyword toJson con sensitive', () => {
|
|
const [ctxA] = addKeyword('hola').toJson()
|
|
assert.is(ctxA.options.sensitive, false)
|
|
const [ctxB] = addKeyword('hola', { sensitive: true }).toJson()
|
|
assert.is(ctxB.options.sensitive, true)
|
|
})
|
|
|
|
test('addAnswer toJson con IMG', () => {
|
|
const [, ctxB, ctxC] = addKeyword('hola')
|
|
.addAnswer('bye!', {
|
|
media: 'http://mock.img/file-a.png',
|
|
})
|
|
.addAnswer('otro!', {
|
|
media: 'http://mock.img/file-b.png',
|
|
})
|
|
.toJson()
|
|
|
|
assert.is(ctxB.options.media, 'http://mock.img/file-a.png')
|
|
assert.is(ctxC.options.media, 'http://mock.img/file-b.png')
|
|
})
|
|
|
|
test('addAnswer toJson con BUTTONS', () => {
|
|
const [, ctxB] = addKeyword('hola')
|
|
.addAnswer('mis opciones!', {
|
|
buttons: [{ body: 'BTN_1' }, { body: 'BTN_2' }],
|
|
})
|
|
.toJson()
|
|
|
|
assert.is(ctxB.options.buttons.length, 2)
|
|
|
|
const [btnA, btnB] = ctxB.options.buttons
|
|
|
|
assert.is(btnA.body, 'BTN_1')
|
|
assert.is(btnB.body, 'BTN_2')
|
|
})
|
|
|
|
test.run()
|