mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-18 03:29:15 +00:00
test and work
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
const MOCK_MOBILE_WS = {
|
const MOCK_MOBILE_WS = {
|
||||||
username: 'Leifer',
|
from: 'XXXXXX',
|
||||||
phone: '0000000',
|
hasMedia: false,
|
||||||
message: 'ey!',
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = { MOCK_MOBILE_WS }
|
module.exports = { MOCK_MOBILE_WS }
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
const { test } = require('uvu')
|
const { test } = require('uvu')
|
||||||
const assert = require('uvu/assert')
|
const assert = require('uvu/assert')
|
||||||
|
|
||||||
const { MOCK_MOBILE_WS } = require('../__mocks__/mobile.mock')
|
|
||||||
const { inout, database, botcore } = require('../packages/index')
|
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 makeFlow = () => {
|
||||||
const flowA = inout
|
const flowA = inout
|
||||||
@@ -24,28 +24,18 @@ test(`[BotClass]: recibe los mensajes entrantes del provider`, async () => {
|
|||||||
|
|
||||||
const adapterFlow = inout.create(makeFlow())
|
const adapterFlow = inout.create(makeFlow())
|
||||||
|
|
||||||
const adapterProvider = mockProvider
|
const adapterProvider = new MockProvider()
|
||||||
const adapterDB = await database.create({
|
const adapterDB = await database.create(new MockDB())
|
||||||
engine: 'mock',
|
|
||||||
credentials: {},
|
|
||||||
})
|
|
||||||
|
|
||||||
const bot = await botcore.create({
|
await botcore.create({
|
||||||
flow: adapterFlow,
|
flow: adapterFlow,
|
||||||
database: adapterDB,
|
database: adapterDB,
|
||||||
provider: adapterProvider,
|
provider: adapterProvider,
|
||||||
})
|
})
|
||||||
|
|
||||||
adapterProvider.on('message', (ctx) => messagesIn.push(ctx.message))
|
await delay(1000)
|
||||||
|
|
||||||
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())
|
|
||||||
messagesOut = adapterDB.history
|
messagesOut = adapterDB.history
|
||||||
// assert.is(messagesOut.join(), ['Pedro!'].join())
|
assert.is(messagesOut.join(), ['hola'].join())
|
||||||
})
|
})
|
||||||
|
|
||||||
function delay(miliseconds) {
|
function delay(miliseconds) {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
const { yellow, red, bgRed } = require('kleur')
|
const { yellow, red, bgRed } = require('kleur')
|
||||||
|
|
||||||
const printer = (message, title) => {
|
const printer = (message, title) => {
|
||||||
console.clear()
|
// console.clear()
|
||||||
if (title) console.log(bgRed(`${title}`))
|
if (title) console.log(bgRed(`${title}`))
|
||||||
console.log(yellow(Array.isArray(message) ? message.join('\n') : message))
|
console.log(yellow(Array.isArray(message) ? message.join('\n') : message))
|
||||||
console.log(``)
|
console.log(``)
|
||||||
|
|||||||
@@ -1,21 +1,12 @@
|
|||||||
const DatabaseClass = require('./classes/database.class')
|
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
|
* Crear instancia de clase
|
||||||
* @param {*} args
|
* @param {*} args
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
const create = async (args) => {
|
const create = async (engineClass) => {
|
||||||
const engine = prepareEngine(args)
|
return new DatabaseClass(engineClass)
|
||||||
return new DatabaseClass(engine)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = { create }
|
module.exports = { create }
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
const inout = require('./io')
|
const inout = require('./io')
|
||||||
const provider = require('./provider')
|
|
||||||
const botcore = require('./core')
|
const botcore = require('./core')
|
||||||
const database = require('./database')
|
const database = require('./database')
|
||||||
|
|
||||||
module.exports = { inout, provider, botcore, database }
|
module.exports = { inout, botcore, database }
|
||||||
|
|||||||
@@ -21,13 +21,13 @@ class MockProvider extends ProviderClass {
|
|||||||
|
|
||||||
init = () =>
|
init = () =>
|
||||||
Promise.all([
|
Promise.all([
|
||||||
this.delaySendMessage(500, 'ready', null),
|
this.delaySendMessage(50, 'ready', null),
|
||||||
this.delaySendMessage(1500, 'message', {
|
this.delaySendMessage(500, 'message', {
|
||||||
from: 'XXXXXX',
|
from: 'XXXXXX',
|
||||||
body: 'ola',
|
body: 'hola',
|
||||||
hasMedia: false,
|
hasMedia: false,
|
||||||
}),
|
}),
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = new MockProvider()
|
module.exports = MockProvider
|
||||||
|
|||||||
@@ -3,21 +3,28 @@ const { ProviderClass } = require('@bot-whatsapp/core')
|
|||||||
|
|
||||||
const { cleanNumber, generateImage } = require('./utils')
|
const { cleanNumber, generateImage } = require('./utils')
|
||||||
|
|
||||||
const WebWhatsappVendor = new Client({
|
|
||||||
authStrategy: new LocalAuth(),
|
|
||||||
})
|
|
||||||
|
|
||||||
class WebWhatsappProvider extends ProviderClass {
|
class WebWhatsappProvider extends ProviderClass {
|
||||||
vendor
|
vendor
|
||||||
constructor(_vendor) {
|
constructor(_vendor) {
|
||||||
super()
|
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.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
|
* @returns
|
||||||
*/
|
*/
|
||||||
busEvents = () => [
|
busEvents = () => [
|
||||||
|
{
|
||||||
|
event: 'auth_failure',
|
||||||
|
func: (payload) => this.emit('error', payload),
|
||||||
|
},
|
||||||
{
|
{
|
||||||
event: 'qr',
|
event: 'qr',
|
||||||
func: (qr) => {
|
func: (qr) => {
|
||||||
@@ -43,10 +54,6 @@ class WebWhatsappProvider extends ProviderClass {
|
|||||||
event: 'ready',
|
event: 'ready',
|
||||||
func: () => this.emit('ready', true),
|
func: () => this.emit('ready', true),
|
||||||
},
|
},
|
||||||
{
|
|
||||||
event: 'auth_failure',
|
|
||||||
func: (payload) => this.emit('error', payload),
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
event: 'authenticated',
|
event: 'authenticated',
|
||||||
func: () => this.emit('ready', true),
|
func: () => this.emit('ready', true),
|
||||||
@@ -63,4 +70,4 @@ class WebWhatsappProvider extends ProviderClass {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = new WebWhatsappProvider(WebWhatsappVendor)
|
module.exports = WebWhatsappProvider
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
const { test } = require('uvu')
|
const { test } = require('uvu')
|
||||||
const assert = require('uvu/assert')
|
const assert = require('uvu/assert')
|
||||||
const mockProvider = require('../adapters/mock')
|
const MockProvider = require('../adapters/mock')
|
||||||
|
|
||||||
test(`ProviderClass`, async () => {
|
test(`ProviderClass`, async () => {
|
||||||
const provider = mockProvider
|
const provider = new MockProvider()
|
||||||
const msg = await provider.sendMessage('123456789', 'hola')
|
const msg = await provider.sendMessage('123456789', 'hola')
|
||||||
console.log(msg)
|
console.log(msg)
|
||||||
assert.is(msg.userId, '123456789')
|
assert.is(msg.userId, '123456789')
|
||||||
|
|||||||
Reference in New Issue
Block a user