Test (core) OK

This commit is contained in:
Leifer Mendez
2022-11-13 14:08:33 +01:00
parent a20b128ee8
commit 59182f20f3
7 changed files with 103 additions and 13 deletions

View File

@@ -0,0 +1,17 @@
const { EventEmitter } = require('node:events')
class MockProvider extends EventEmitter {
delaySendMessage = (miliseconds, eventName, payload) =>
new Promise((res) =>
setTimeout(() => {
this.emit(eventName, payload)
res
}, miliseconds)
)
sendMessage = async (userId, message) => {
return Promise.resolve({ userId, message })
}
}
module.exports = MockProvider

View File

@@ -56,6 +56,7 @@
"devDependencies": {
"@rollup/plugin-commonjs": "^23.0.2",
"c8": "^7.12.0",
"cross-env": "^7.0.3",
"eslint": "^8.26.0",
"eslint-config-prettier": "^8.5.0",
"prettier": "^2.7.1",

View File

@@ -23,8 +23,8 @@ class BotClass {
listenerBusEvents = () => [
{
event: 'require_action',
func: ({ instructions }) =>
printer(instructions, '⚡⚡ ACCION REQUERIDA ⚡⚡'),
func: ({ instructions, title = '⚡⚡ ACCION REQUERIDA ⚡⚡' }) =>
printer(instructions, title),
},
{
event: 'ready',

View File

@@ -11,6 +11,7 @@
"format:write": "prettier --write .",
"lint:check": "eslint .",
"lint:fix": "eslint --fix .",
"test.unit": "cross-env NODE_ENV=test node ../../node_modules/uvu/bin.js tests",
"build:core": "yarn run format:write && yarn run lint:fix && yarn run io:rollup"
},
"keywords": [],

View File

@@ -1,6 +1,6 @@
const { EventEmitter } = require('node:events')
const { test } = require('uvu')
const assert = require('uvu/assert')
const MockProvider = require('../../../__mocks__/mock.provider')
const { create } = require('../')
const BotClass = require('../classes/bot.class')
@@ -12,9 +12,7 @@ class MockDB {
save = () => {}
}
class MockProvider extends EventEmitter {}
test(`BotClass`, async () => {
test(`[BotClass] Probando instanciamiento de clase`, async () => {
const setting = {
flow: new MockFlow(),
database: new MockDB(),
@@ -22,7 +20,76 @@ test(`BotClass`, async () => {
}
const bot = await create(setting)
assert.is(bot instanceof BotClass, true)
assert.is(bot.handleMsg({ body: 'test', to: 'to', from: 'from' }))
})
test(`[BotClass] Eventos 'require_action,ready,auth_failure,message '`, async () => {
let responseEvents = {}
const MOCK_EVENTS = {
require_action: {
instructions: 'Debes...',
},
ready: true,
auth_failure: {
instructions: 'Error...',
},
message: {
from: 'XXXXXX',
body: 'hola',
hasMedia: false,
},
}
const mockProvider = new MockProvider()
const setting = {
flow: new MockFlow(),
database: new MockDB(),
provider: mockProvider,
}
await create(setting)
/// Escuchamos eventos
mockProvider.on(
'require_action',
(r) => (responseEvents['require_action'] = r)
)
mockProvider.on('ready', (r) => (responseEvents['ready'] = r))
mockProvider.on('auth_failure', (r) => (responseEvents['auth_failure'] = r))
mockProvider.on('message', (r) => (responseEvents['message'] = r))
/// Emitimos eventos
mockProvider.delaySendMessage(
0,
'require_action',
MOCK_EVENTS.require_action
)
mockProvider.delaySendMessage(0, 'ready', MOCK_EVENTS.ready)
mockProvider.delaySendMessage(0, 'auth_failure', MOCK_EVENTS.auth_failure)
mockProvider.delaySendMessage(0, 'message', MOCK_EVENTS.message)
await delay(0)
/// Testeamos eventos
assert.is(
JSON.stringify(responseEvents.require_action),
JSON.stringify(MOCK_EVENTS.require_action)
)
assert.is(responseEvents.ready, MOCK_EVENTS.ready)
assert.is(
JSON.stringify(responseEvents.auth_failure),
JSON.stringify(MOCK_EVENTS.auth_failure)
)
assert.is(
JSON.stringify(responseEvents.message),
JSON.stringify(MOCK_EVENTS.message)
)
})
test.run()
function delay(ms) {
return new Promise((res) => setTimeout(res, ms))
}

View File

@@ -1,10 +1,14 @@
const { yellow, red, bgRed } = require('kleur')
const { yellow, bgRed } = require('kleur')
const NODE_ENV = process.env.NODE_ENV || 'dev'
const printer = (message, title) => {
console.clear()
if (title) console.log(bgRed(`${title}`))
console.log(yellow(Array.isArray(message) ? message.join('\n') : message))
console.log(``)
if (NODE_ENV !== 'test') {
console.clear()
if (title) console.log(bgRed(`${title}`))
console.log(
yellow(Array.isArray(message) ? message.join('\n') : message)
)
console.log(``)
}
}
module.exports = { printer }