@flashcoffee/fcbraze
Version:
flashcoffee braze sdk
111 lines • 4.27 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const core_1 = require("../core");
describe('BrazeService constructor', () => {
const oldEnv = process.env;
afterEach(() => {
process.env = oldEnv;
});
it('should throw error when there is no required env', () => {
expect(function () { new core_1.BrazeService(); }).toThrow(new Error('BRAZE_BASE_URL or BRAZE_API_KEY environment is missing'));
});
it('should initiated successfully when required env been set', () => {
process.env = Object.assign(Object.assign({}, process.env), { BRAZE_BASE_URL: 'https://some-rest-endpoint.braze.com', BRAZE_API_KEY: 'your-api-key-here' });
const braze = new core_1.BrazeService();
jest.spyOn(braze, 'api');
expect(braze.api).toBeTruthy();
});
});
describe('BrazeService methods', () => {
const oldEnv = process.env;
let braze;
let apiPostSpy;
beforeEach(() => {
jest.resetModules();
process.env = Object.assign(Object.assign({}, process.env), { BRAZE_BASE_URL: 'https://some-rest-endpoint.braze.com', BRAZE_API_KEY: 'your-api-key-here' });
braze = new core_1.BrazeService();
apiPostSpy = jest.spyOn(braze.api, 'post');
apiPostSpy.mockImplementation(() => Promise.resolve({}));
});
afterEach(() => {
process.env = oldEnv;
});
it('trackUser', async () => {
const payload = {
attributes: [{ external_id: '000' }],
events: [{
external_id: '000',
name: 'some name',
time: '2020-12-10T08:01:59.000Z'
}],
purchases: [{
external_id: '000',
product_id: 'XXX',
currency: 'SGD',
price: 123,
quantity: 123,
time: '2020-12-10T08:01:59.000Z'
}],
};
await braze.trackUser(payload);
expect(apiPostSpy).toHaveBeenCalled();
expect(apiPostSpy).toBeCalledWith('/users/track', payload);
});
it('patchUserAttributes', async () => {
const payload = [{ external_id: '000' }];
await braze.patchUserAttributes(payload);
expect(apiPostSpy).toHaveBeenCalled();
expect(apiPostSpy).toBeCalledWith('/users/track', { attributes: payload });
});
it('patchUserEvents', async () => {
const payload = [{
external_id: '000',
name: 'some name',
time: '2020-12-10T08:01:59.000Z'
}];
await braze.patchUserEvents(payload);
expect(apiPostSpy).toHaveBeenCalled();
expect(apiPostSpy).toBeCalledWith('/users/track', { events: payload });
});
it('patchUserPurchases', async () => {
const payload = [{
external_id: '000',
product_id: 'XXX',
currency: 'SGD',
price: 123,
quantity: 123,
time: '2020-12-10T08:01:59.000Z'
}];
await braze.patchUserPurchases(payload);
expect(apiPostSpy).toHaveBeenCalled();
expect(apiPostSpy).toBeCalledWith('/users/track', { purchases: payload });
});
it('triggerCampaign', async () => {
const payload = {
campaign_id: '000',
broadcast: true
};
await braze.triggerCampaign(payload);
expect(apiPostSpy).toHaveBeenCalled();
expect(apiPostSpy).toBeCalledWith('/campaigns/trigger/send', payload);
});
it('triggerCanvas', async () => {
const payload = {
canvas_id: '000',
broadcast: true
};
await braze.triggerCanvas(payload);
expect(apiPostSpy).toHaveBeenCalled();
expect(apiPostSpy).toBeCalledWith('/canvas/trigger/send', payload);
});
it('exportUser', async () => {
const payload = {
external_ids: ['000'],
fields_to_export: ['first_name']
};
await braze.exportUser(payload);
expect(apiPostSpy).toHaveBeenCalled();
expect(apiPostSpy).toBeCalledWith('/users/export/ids', payload);
});
});
//# sourceMappingURL=core.test.js.map