UNPKG

asksuite-core

Version:
228 lines (180 loc) 8.37 kB
const AsksuiteProcessingNatural = require('../AsksuiteProcessingNatural'); const MockGenerator = require('../mocks/MockGenerator'); const createRedisClient = require('../util/redis'); const mockConfig = require('../mocks/json/config'); const redisDialogflow = { redis: { url: 'redis://localhost', db: 1, //intents }, }; beforeAll(() => { jest.setTimeout(60000); }); describe('Asksuite Processing Natural testing...', () => { it('Should return DialogFlow intent', async () => { const data = MockGenerator.generateIncoming('Oi'); const asksuiteProcessingNatural = new AsksuiteProcessingNatural({}); const result = await asksuiteProcessingNatural.findIntent(data); expect(result.intent).toBe('saudacao'); expect(result.resolver).toBe('DIALOG_FLOW'); }); it('Should return DialogFlow intent fr', async () => { const data = MockGenerator.generateIncoming('bonjour'); data.language = 'fr-fr'; data.languages = [ { formatIso: 'fr-fr', formatGoogle: 'fr', formatDialogflow: 'fr-fr', }, ]; const asksuiteProcessingNatural = new AsksuiteProcessingNatural({}); const result = await asksuiteProcessingNatural.findIntent(data); expect(result.intent).toBe('saudacao'); expect(result.resolver).toBe('DIALOG_FLOW'); }); it('Should return DialogFlow intent', async () => { const data = MockGenerator.generateIncoming('Oi'); const asksuiteProcessingNatural = new AsksuiteProcessingNatural({}); const result = await asksuiteProcessingNatural.findIntent(data); expect(result.intent).toBe('saudacao'); expect(result.resolver).toBe('DIALOG_FLOW'); }); it('Should return intent translated saudacao', async () => { const data = MockGenerator.generateIncoming('Bonjour'); data.language = 'en'; const asksuiteProcessingNatural = new AsksuiteProcessingNatural({ config: mockConfig, }); const result = await asksuiteProcessingNatural.findIntent(data); expect(result.intent).toBe('saudacao'); expect(result.translated).toBe(true); expect(result.dialog).toContain(data.companyId); }); it('Should return DialogFlow intent cotacao_com_datas', async () => { const data = MockGenerator.generateIncoming( 'Preciso de hospedagem na segunda semana de junho para um casal', ); data.language = 'pt'; const asksuiteProcessingNatural = new AsksuiteProcessingNatural({}); const result = await asksuiteProcessingNatural.findIntent(data); expect(result.extractedData).toStrictEqual({ ArrivalDateString: '2021-06-14', DepartureDateString: '2021-06-20', AmountAdults: 2, }); expect(result.intent).toBe('cotacao_com_datas'); expect(result.resolver).toBe('DIALOG_FLOW'); }); it('Should return cached DialogFlow intent', async () => { const data = MockGenerator.generateIncoming('Oi'); const redis = createRedisClient(redisDialogflow); const asksuiteProcessingNatural = new AsksuiteProcessingNatural({ redis, config: mockConfig, }); let result = await asksuiteProcessingNatural.findIntent(data); expect(result.intent).toBe('saudacao'); expect(result.resolver).toBe('DIALOG_FLOW'); result = await asksuiteProcessingNatural.findIntent(data); expect(result.intent).toBe('saudacao'); expect(result.fromCache).toBe(true); expect(result.resolver).toBe('DIALOG_FLOW'); }, 30000); it('Should return DialogFlow intent with or without accent', async () => { const data = MockGenerator.generateIncoming('Quero falar com alguém'); data.language = 'pt-br'; const data2 = MockGenerator.generateIncoming('Quero FalaR com Alguem'); data2.language = 'pt-br'; const asksuiteProcessingNatural = new AsksuiteProcessingNatural({}); const result = await asksuiteProcessingNatural.findIntent(data); const result2 = await asksuiteProcessingNatural.findIntent(data2); expect.assertions(4); expect(result.intent).toBe('quero_telefone_hotel'); expect(result.resolver).toBe('DIALOG_FLOW'); expect(result2.intent).toBe('quero_telefone_hotel'); expect(result2.resolver).toBe('DIALOG_FLOW'); }); it('Should return KeyMatcher intent', async () => { const data = MockGenerator.generateIncoming( 'Vale lembrar que a nossa estadia é pelo convênio com SBTUR', ); data.language = 'pt-br'; const asksuiteProcessingNatural = new AsksuiteProcessingNatural({}); const result = await asksuiteProcessingNatural.findIntent(data); expect(result.intent).toBe('convenio_sbtur'); expect(result.resolver).toBe('KEY_MATCHER'); }); it('Should return KeyMatcher intent translated', async () => { const data = MockGenerator.generateIncoming( 'fare fare fare fare fare fare fare fare fare farefare fare fare fare farefare fare fare fare farefare fare fare fare fare', ); data.language = 'en'; const asksuiteProcessingNatural = new AsksuiteProcessingNatural({}); const result = await asksuiteProcessingNatural.findIntent(data); expect(result.intent).toBe('cotacao'); expect(result.translated).toBe(true); expect(result.resolver).toBe('KEY_MATCHER'); }); it('Should return RASA intent', async () => { const data = MockGenerator.generateIncoming('quero passar no teste do rasa'); data.companyId = 'teste_rasa_core'; const asksuiteProcessingNatural = new AsksuiteProcessingNatural({}); const result = await asksuiteProcessingNatural.findIntent(data); expect(result.resolver).toBe('RASA'); expect(result.intent).toBe('asksuite_rasa_teste_resort'); }); it('Should return RASA intent with accent and different cases', async () => { const data = MockGenerator.generateIncoming('QueRo passar no tesTe do Rása'); data.companyId = 'teste_rasa_core'; const asksuiteProcessingNatural = new AsksuiteProcessingNatural({}); const result = await asksuiteProcessingNatural.findIntent(data); expect(result.resolver).toBe('RASA'); expect(result.intent).toBe('asksuite_rasa_teste_resort'); }); it('Should return naoentendi', async () => { const data = MockGenerator.generateIncoming('HAIA USHAKJHJHZXNC HDSAHF SANFDJKIUHQWDFJAS NKJ'); const asksuiteProcessingNatural = new AsksuiteProcessingNatural({}); const result = await asksuiteProcessingNatural.findIntent(data); expect(result.intent).toBe('naoentendi'); }); describe('Test with Rasa as first NLP', () => { it('Should return DialogFlow intent', async () => { const data = MockGenerator.generateIncoming('Oi'); data.tryRasaFirst = true; const asksuiteProcessingNatural = new AsksuiteProcessingNatural({}); const result = await asksuiteProcessingNatural.findIntent(data); expect(result.intent).toBe('saudacao'); expect(result.resolver).toBe('DIALOG_FLOW'); }); it('Should return KeyMatcher intent', async () => { const data = MockGenerator.generateIncoming( 'Vale lembrar que a nossa estadia é pelo convênio com SBTUR', ); data.tryRasaFirst = true; const asksuiteProcessingNatural = new AsksuiteProcessingNatural({}); const result = await asksuiteProcessingNatural.findIntent(data); expect(result.intent).toBe('convenio_sbtur'); expect(result.resolver).toBe('KEY_MATCHER'); }); it('Should return RASA intent', async () => { const data = MockGenerator.generateIncoming('quero passar no teste do rasa'); data.tryRasaFirst = true; data.companyId = 'teste_rasa_core'; const asksuiteProcessingNatural = new AsksuiteProcessingNatural({}); const result = await asksuiteProcessingNatural.findIntent(data); expect(result.resolver).toBe('RASA'); expect(result.intent).toBe('asksuite_rasa_teste_resort'); }); it('Should return RASA intent correctly with multiple entities', async () => { const data = MockGenerator.generateIncoming('passeio passeio de arvorismo'); data.tryRasaFirst = true; data.companyId = 'teste_rasa_core'; const asksuiteProcessingNatural = new AsksuiteProcessingNatural({}); const result = await asksuiteProcessingNatural.findIntent(data); expect(result.resolver).toBe('RASA'); expect(result.intent).toBe('passeio_de_arvorismo_teste_rasa_core'); }); }); });