diff --git a/packages/io/USES_CASES.md b/packages/io/USES_CASES.md index 6a31b20..0853f73 100644 --- a/packages/io/USES_CASES.md +++ b/packages/io/USES_CASES.md @@ -11,7 +11,7 @@ - [x] addKeyword - [x] addAnswer - [x] addKeyword: Opciones -- [ ] addAnswer: Opciones +- [x] addAnswer: Opciones, media, buttons - [ ] Retornar SQL - [ ] Retornar JSON - [ ] Recibir JSON diff --git a/packages/io/methods/addAnswer.js b/packages/io/methods/addAnswer.js index b542bc6..99bc117 100644 --- a/packages/io/methods/addAnswer.js +++ b/packages/io/methods/addAnswer.js @@ -1,6 +1,17 @@ const { generateRef } = require('../utils') +/** + * + * @param answer string + * @param options {media:string, buttons:[]} + * @returns + */ const addAnswer = (inCtx) => (answer, options) => { + const getAnswerOptions = () => ({ + media: typeof options?.media === 'string' ? `${options?.media}` : null, + buttons: Array.isArray(options?.buttons) ? options.buttons : [], + }) + const lastCtx = inCtx.hasOwnProperty('ctx') ? inCtx.ctx : inCtx const ctxAnswer = () => { const ref = generateRef() @@ -8,7 +19,12 @@ const addAnswer = (inCtx) => (answer, options) => { * Se guarda en db */ - return { ...lastCtx, ref, answer } + const options = { + answer: getAnswerOptions(), + keyword: {}, + } + + return { ...lastCtx, ref, answer, options } } const ctx = ctxAnswer() @@ -21,8 +37,3 @@ const addAnswer = (inCtx) => (answer, options) => { } module.exports = { addAnswer } - -// await inout -// .addKeyword('hola') -// .addAnswer('Bienvenido a tu tienda 🥲') -// .addAnswer('escribe *catalogo* o *ofertas*') diff --git a/packages/io/tests/methods.test.js b/packages/io/tests/methods.test.js index 4b08337..51d7af9 100644 --- a/packages/io/tests/methods.test.js +++ b/packages/io/tests/methods.test.js @@ -53,4 +53,26 @@ test('Debere probar las poptions', () => { 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.answer.media, MOCK_OPT.media) + assert.is(MAIN_CTX.ctx.options.answer.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.answer.media, null) + assert.is(MAIN_CTX.ctx.options.answer.buttons.length, 0) +}) + test.run()