UNPKG

prodap-chatbot-metricas

Version:

Biblioteca reponsável por capturar as métricas das Cloud Functions do Assistente Virtual

110 lines 5.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const mocks_1 = require("./mocks"); const MetricaService = require("../index"); const types_1 = require("../types"); describe('index.ts', () => { beforeAll(() => { }); beforeEach(() => { mocks_1.pubsubMock.mockClear(); }); describe('Dado que seja criada uma métrica de utilização', () => { test(`Quando o processo for finalizado com sucesso Então uma mensagem deve ser postada na fila de metrica_utilizacao E a mensagem deve conter data de ocorrencia, versão, tipo da métrica, ID da fazenda, login do usuário e intenção executada o sistema deve postar na fila uma mensagem com data da ocorrencia, versão e tipo da metrica`, () => { const props = { idFazenda: 45, idFazendaGA: 47, usuario: 'tarley.lana', intencao: 'intencao_inicial', interacaoApp: true, origem: types_1.Origin.FARM_TELL_BEEF, classificacao: [types_1.Classification.CONFINAMENTO], }; MetricaService.criarMetricaLore(props, 1); expect(mocks_1.pubsubMock.topic).toHaveBeenCalled(); expect(mocks_1.pubsubMock.topic.mock.calls[0][0]).toBe('metrica'); expect(mocks_1.pubsubMock.publishMessage).toHaveBeenCalled(); const buffer = mocks_1.pubsubMock.publishMessage.mock.calls[0][0]; const mensagem = JSON.parse(Buffer.from(buffer.data, 'base64').toString()); expect(mensagem).toMatchObject({ versao: 1, app: 'lore', tipo: 'utilizacao', intencao: 'intencao_inicial', idFazenda: 45, usuario: 'tarley.lana', dataOcorrencia: '2020-12-16T17:48:22.548Z', interacaoApp: true, }); }); test(`Quando o processo for finalizado com sucesso Então uma mensagem deve ser postada na fila de metrica_utilizacao E a mensagem deve conter código do dialogo, data de ocorrencia, versão, tipo da métrica, ID da fazenda, login do usuário, id da sessão, intenção e interação executada o sistema deve postar na fila uma mensagem com data da ocorrencia, versão e tipo da metrica`, () => { MetricaService.criarMetricaLore({ idFazenda: 45, idFazendaGA: 47, usuario: 'tarley.lana', intencao: 'intencao_inicial', versaoFuncao: 'v1', codigoDialogo: 'adfadfadfafadfadsfafadadf', idSessao: 'df654-adfa645-afafas54-adfad564', interacao: 'interacao_inicial', }, 1); expect(mocks_1.pubsubMock.topic).toHaveBeenCalled(); expect(mocks_1.pubsubMock.topic.mock.calls[0][0]).toBe('metrica'); expect(mocks_1.pubsubMock.publishMessage).toHaveBeenCalled(); const buffer = mocks_1.pubsubMock.publishMessage.mock.calls[0][0]; const mensagem = JSON.parse(Buffer.from(buffer.data, 'base64').toString()); expect(JSON.stringify(mensagem)).toMatch(JSON.stringify({ codigo: mensagem.codigo, versao: 1, app: 'lore', tipo: 'utilizacao', intencao: 'intencao_inicial', versaoFuncao: 'v1', idFazenda: 45, usuario: 'tarley.lana', dataOcorrencia: '2020-12-16T17:48:22.548Z', codigoDialogo: 'adfadfadfafadfadsfafadadf', idSessao: 'df654-adfa645-afafas54-adfad564', interacao: 'interacao_inicial', idFazendaGA: 47, interacaoApp: false, })); }); test(`Quando um erro acontecer Então o sistema deve ignorar a postagem da métrica E exibir uma mensagem no console com detalhes do erro`, () => { console.error = jest.fn(); mocks_1.pubsubMock.publishMessage = jest.fn((_data) => { throw Error('Falha na postagem da mensagem'); }); MetricaService.criarMetricaLore({ idFazenda: 45, idFazendaGA: 47, usuario: 'tarley.lana', intencao: 'intencao_inicial', }); expect(console.error).toHaveBeenCalled(); }); test(`Quando um erro acontecer Então o sistema deve ignorar a postagem da métrica E exibir uma mensagem no console com detalhes do erro`, () => { console.error = jest.fn(); mocks_1.pubsubMock.topic = jest.fn((_name) => { throw Error('Falha na postagem da mensagem'); }); MetricaService.criarMetricaLore({ idFazenda: 45, idFazendaGA: 47, usuario: 'tarley.lana', intencao: 'intencao_inicial', }); expect(console.error).toHaveBeenCalled(); }); }); }); //# sourceMappingURL=index.test.js.map