prodap-chatbot-metricas
Version:
Biblioteca reponsável por capturar as métricas das Cloud Functions do Assistente Virtual
110 lines • 5.23 kB
JavaScript
"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