mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-20 20:49:15 +00:00
Increase Coverage
This commit is contained in:
8
.c8rc.json
Normal file
8
.c8rc.json
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"src": "./src",
|
||||||
|
"exclude": ["**/bot/lib", "__mocks__", "**/mock"],
|
||||||
|
"reporter": ["html"],
|
||||||
|
"report-dir": "./coverage",
|
||||||
|
"check-coverage": true,
|
||||||
|
"lines": 90
|
||||||
|
}
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
[](https://github.com/leifermendez/bot-whatsapp/actions/workflows/ci.yml)
|
||||||
|
|
||||||
- [ ] Evitar dependencias
|
- [ ] Evitar dependencias
|
||||||
|
|
||||||
**Comunidad**
|
**Comunidad**
|
||||||
@@ -8,3 +10,5 @@
|
|||||||
- [Twitter](https://twitter.com/leifermendez)
|
- [Twitter](https://twitter.com/leifermendez)
|
||||||
- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR)
|
- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR)
|
||||||
- [Telegram](https://t.me/leifermendez)
|
- [Telegram](https://t.me/leifermendez)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,21 +4,51 @@ const MockProvider = require('../../../__mocks__/mock.provider')
|
|||||||
const { createBot, CoreClass } = require('../index')
|
const { createBot, CoreClass } = require('../index')
|
||||||
|
|
||||||
class MockFlow {
|
class MockFlow {
|
||||||
find = () => {}
|
allCallbacks = [{ callback: () => console.log('') }]
|
||||||
findBySerialize = () => {}
|
flowSerialize = []
|
||||||
findIndexByRef = () => {}
|
flowRaw = []
|
||||||
|
find = (arg) => {
|
||||||
|
if (arg) {
|
||||||
|
return [{ answer: 'answer', ref: 'ref' }]
|
||||||
|
} else {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
findBySerialize = () => ({})
|
||||||
|
findIndexByRef = () => 0
|
||||||
}
|
}
|
||||||
|
|
||||||
class MockDB {
|
class MockDBA {
|
||||||
listHistory = []
|
listHistory = []
|
||||||
save = () => {}
|
save = () => {}
|
||||||
getPrevByNumber = () => {}
|
getPrevByNumber = () => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class MockDBB {
|
||||||
|
listHistory = []
|
||||||
|
save = () => {}
|
||||||
|
getPrevByNumber = () => ({
|
||||||
|
refSerialize: 'xxxxx',
|
||||||
|
ref: 'xxxx',
|
||||||
|
options: { callback: true },
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
class MockDBC {
|
||||||
|
listHistory = []
|
||||||
|
save = () => {}
|
||||||
|
getPrevByNumber = () => ({
|
||||||
|
refSerialize: 'xxxxx',
|
||||||
|
ref: 'xxxx',
|
||||||
|
options: { callback: true, nested: ['1', '2'] },
|
||||||
|
})
|
||||||
|
saveLog = () => {}
|
||||||
|
}
|
||||||
|
|
||||||
test(`[CoreClass] Probando instanciamiento de clase`, async () => {
|
test(`[CoreClass] Probando instanciamiento de clase`, async () => {
|
||||||
const setting = {
|
const setting = {
|
||||||
flow: new MockFlow(),
|
flow: new MockFlow(),
|
||||||
database: new MockDB(),
|
database: new MockDBA(),
|
||||||
provider: new MockProvider(),
|
provider: new MockProvider(),
|
||||||
}
|
}
|
||||||
const bot = await createBot(setting)
|
const bot = await createBot(setting)
|
||||||
@@ -47,7 +77,7 @@ test(`[Bot] Eventos 'require_action,ready,auth_failure,message '`, async () => {
|
|||||||
|
|
||||||
const setting = {
|
const setting = {
|
||||||
flow: new MockFlow(),
|
flow: new MockFlow(),
|
||||||
database: new MockDB(),
|
database: new MockDBA(),
|
||||||
provider: mockProvider,
|
provider: mockProvider,
|
||||||
}
|
}
|
||||||
await createBot(setting)
|
await createBot(setting)
|
||||||
@@ -91,6 +121,140 @@ test(`[Bot] Eventos 'require_action,ready,auth_failure,message '`, async () => {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test(`[Bot] Probando Flujos Internos`, 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 MockDBB(),
|
||||||
|
provider: mockProvider,
|
||||||
|
}
|
||||||
|
await createBot(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(`[Bot] Probando Flujos Nested`, 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 MockDBC(),
|
||||||
|
provider: mockProvider,
|
||||||
|
}
|
||||||
|
const botInstance = await createBot(setting)
|
||||||
|
|
||||||
|
botInstance.sendProviderAndSave('xxxxx', 'xxxxx')
|
||||||
|
botInstance.continue('xxxxx', 'xxxxx')
|
||||||
|
/// 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()
|
test.run()
|
||||||
|
|
||||||
function delay(ms) {
|
function delay(ms) {
|
||||||
|
|||||||
@@ -31,8 +31,6 @@ test('Debere probar toSerialize', () => {
|
|||||||
.addAnswer('Segundo!')
|
.addAnswer('Segundo!')
|
||||||
.toJson()
|
.toJson()
|
||||||
|
|
||||||
console.log(MAIN_CTX)
|
|
||||||
|
|
||||||
const [ANSWER_A] = MAIN_CTX
|
const [ANSWER_A] = MAIN_CTX
|
||||||
|
|
||||||
assert.is(
|
assert.is(
|
||||||
|
|||||||
Reference in New Issue
Block a user