From da8defc517c01d4e081129d4e0731d54cc4fc4f2 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Fri, 11 Nov 2022 15:10:34 +0100 Subject: [PATCH] test and work --- __mocks__/mobile.mock.js | 5 ++- __tests__/basic-seller.e2e.test.js | 24 +++++--------- packages/core/utils/interactive.js | 2 +- packages/database/index.js | 13 ++------ packages/index.js | 3 +- packages/provider/adapters/mock/index.js | 8 ++--- .../provider/adapters/web-whatsapp/index.js | 31 ++++++++++++------- packages/provider/index.js | 0 .../provider/tests/provider.class.test.js | 4 +-- 9 files changed, 38 insertions(+), 52 deletions(-) delete mode 100644 packages/provider/index.js diff --git a/__mocks__/mobile.mock.js b/__mocks__/mobile.mock.js index 607bf3e..7f19f74 100644 --- a/__mocks__/mobile.mock.js +++ b/__mocks__/mobile.mock.js @@ -1,7 +1,6 @@ const MOCK_MOBILE_WS = { - username: 'Leifer', - phone: '0000000', - message: 'ey!', + from: 'XXXXXX', + hasMedia: false, } module.exports = { MOCK_MOBILE_WS } diff --git a/__tests__/basic-seller.e2e.test.js b/__tests__/basic-seller.e2e.test.js index 0a9d998..2122001 100644 --- a/__tests__/basic-seller.e2e.test.js +++ b/__tests__/basic-seller.e2e.test.js @@ -1,9 +1,9 @@ const { test } = require('uvu') const assert = require('uvu/assert') -const { MOCK_MOBILE_WS } = require('../__mocks__/mobile.mock') const { inout, database, botcore } = require('../packages/index') -const mockProvider = require('../packages/provider/adapters/mock') +const MockProvider = require('../packages/provider/adapters/mock') +const MockDB = require('../packages/database/adapters/mock') const makeFlow = () => { const flowA = inout @@ -24,28 +24,18 @@ test(`[BotClass]: recibe los mensajes entrantes del provider`, async () => { const adapterFlow = inout.create(makeFlow()) - const adapterProvider = mockProvider - const adapterDB = await database.create({ - engine: 'mock', - credentials: {}, - }) + const adapterProvider = new MockProvider() + const adapterDB = await database.create(new MockDB()) - const bot = await botcore.create({ + await botcore.create({ flow: adapterFlow, database: adapterDB, provider: adapterProvider, }) - adapterProvider.on('message', (ctx) => messagesIn.push(ctx.message)) - - adapterProvider.emit('message', { ...MOCK_MOBILE_WS, message: 'hola' }) - assert.is(messagesIn.join(), ['hola'].join()) - await delay(200) - adapterProvider.emit('message', { ...MOCK_MOBILE_WS, message: 'Pedro!' }) - console.log(messagesIn) - assert.is(messagesIn.join(), ['hola', 'Pedro!'].join()) + await delay(1000) messagesOut = adapterDB.history - // assert.is(messagesOut.join(), ['Pedro!'].join()) + assert.is(messagesOut.join(), ['hola'].join()) }) function delay(miliseconds) { diff --git a/packages/core/utils/interactive.js b/packages/core/utils/interactive.js index d626025..5ea553f 100644 --- a/packages/core/utils/interactive.js +++ b/packages/core/utils/interactive.js @@ -1,7 +1,7 @@ const { yellow, red, bgRed } = require('kleur') const printer = (message, title) => { - console.clear() + // console.clear() if (title) console.log(bgRed(`${title}`)) console.log(yellow(Array.isArray(message) ? message.join('\n') : message)) console.log(``) diff --git a/packages/database/index.js b/packages/database/index.js index 4397652..2072a97 100644 --- a/packages/database/index.js +++ b/packages/database/index.js @@ -1,21 +1,12 @@ const DatabaseClass = require('./classes/database.class') -const MockDatabase = require('./adapters/mock') - -const prepareEngine = ({ engine, credentials }) => { - // if (engine === 'mysql') return new TwilioProvider(credentials) - // if (engine === 'meta') return new TwilioProvider(credentials) - // if (engine === 'wev') return new TwilioProvider(credentials) - return new MockDatabase() -} /** * Crear instancia de clase * @param {*} args * @returns */ -const create = async (args) => { - const engine = prepareEngine(args) - return new DatabaseClass(engine) +const create = async (engineClass) => { + return new DatabaseClass(engineClass) } module.exports = { create } diff --git a/packages/index.js b/packages/index.js index 821912c..c9f828f 100644 --- a/packages/index.js +++ b/packages/index.js @@ -1,6 +1,5 @@ const inout = require('./io') -const provider = require('./provider') const botcore = require('./core') const database = require('./database') -module.exports = { inout, provider, botcore, database } +module.exports = { inout, botcore, database } diff --git a/packages/provider/adapters/mock/index.js b/packages/provider/adapters/mock/index.js index ac2ec39..87d79fd 100644 --- a/packages/provider/adapters/mock/index.js +++ b/packages/provider/adapters/mock/index.js @@ -21,13 +21,13 @@ class MockProvider extends ProviderClass { init = () => Promise.all([ - this.delaySendMessage(500, 'ready', null), - this.delaySendMessage(1500, 'message', { + this.delaySendMessage(50, 'ready', null), + this.delaySendMessage(500, 'message', { from: 'XXXXXX', - body: 'ola', + body: 'hola', hasMedia: false, }), ]) } -module.exports = new MockProvider() +module.exports = MockProvider diff --git a/packages/provider/adapters/web-whatsapp/index.js b/packages/provider/adapters/web-whatsapp/index.js index 3f9ab5c..cb7f325 100644 --- a/packages/provider/adapters/web-whatsapp/index.js +++ b/packages/provider/adapters/web-whatsapp/index.js @@ -3,21 +3,28 @@ const { ProviderClass } = require('@bot-whatsapp/core') const { cleanNumber, generateImage } = require('./utils') -const WebWhatsappVendor = new Client({ - authStrategy: new LocalAuth(), -}) - class WebWhatsappProvider extends ProviderClass { vendor constructor(_vendor) { super() - this.vendor = _vendor + this.vendor = new Client({ + authStrategy: new LocalAuth(), + }) - for (const { event, func } of this.busEvents()) { + const listEvents = this.busEvents() + + for (const { event, func } of listEvents) { this.vendor.on(event, func) } - this.vendor.initialize() + this.vendor.initialize().catch((e) => + this.emit('require_action', { + instructions: [ + `Debes eliminar la carpeta .wwebjs_auth`, + `y reiniciar nuevamente el bot `, + ], + }) + ) } /** @@ -26,6 +33,10 @@ class WebWhatsappProvider extends ProviderClass { * @returns */ busEvents = () => [ + { + event: 'auth_failure', + func: (payload) => this.emit('error', payload), + }, { event: 'qr', func: (qr) => { @@ -43,10 +54,6 @@ class WebWhatsappProvider extends ProviderClass { event: 'ready', func: () => this.emit('ready', true), }, - { - event: 'auth_failure', - func: (payload) => this.emit('error', payload), - }, { event: 'authenticated', func: () => this.emit('ready', true), @@ -63,4 +70,4 @@ class WebWhatsappProvider extends ProviderClass { } } -module.exports = new WebWhatsappProvider(WebWhatsappVendor) +module.exports = WebWhatsappProvider diff --git a/packages/provider/index.js b/packages/provider/index.js deleted file mode 100644 index e69de29..0000000 diff --git a/packages/provider/tests/provider.class.test.js b/packages/provider/tests/provider.class.test.js index 1232799..7d7dc69 100644 --- a/packages/provider/tests/provider.class.test.js +++ b/packages/provider/tests/provider.class.test.js @@ -1,9 +1,9 @@ const { test } = require('uvu') const assert = require('uvu/assert') -const mockProvider = require('../adapters/mock') +const MockProvider = require('../adapters/mock') test(`ProviderClass`, async () => { - const provider = mockProvider + const provider = new MockProvider() const msg = await provider.sendMessage('123456789', 'hola') console.log(msg) assert.is(msg.userId, '123456789')