Ghost/ghost/email-analytics-service/test/event-processing-result.test.js

134 lines
4.2 KiB
JavaScript
Raw Normal View History

// Switch these lines once there are useful utils
// const testUtils = require('./utils');
require('./utils');
const {EventProcessingResult} = require('..');
describe('EventProcessingResult', function () {
it('has expected initial state', function () {
const result = new EventProcessingResult();
result.delivered.should.equal(0);
result.opened.should.equal(0);
result.temporaryFailed.should.equal(0);
result.permanentFailed.should.equal(0);
result.unsubscribed.should.equal(0);
result.complained.should.equal(0);
result.unhandled.should.equal(0);
result.unprocessable.should.equal(0);
result.processingFailures.should.equal(0);
result.emailIds.should.deepEqual([]);
result.memberIds.should.deepEqual([]);
});
it('has expected populated initial state', function () {
const result = new EventProcessingResult({
delivered: 1,
opened: 2,
temporaryFailed: 3,
permanentFailed: 4,
unsubscribed: 5,
complained: 6,
unhandled: 7,
unprocessable: 8,
processingFailures: 9,
emailIds: [1,2,3],
memberIds: [4,5]
});
result.delivered.should.equal(1);
result.opened.should.equal(2);
result.temporaryFailed.should.equal(3);
result.permanentFailed.should.equal(4);
result.unsubscribed.should.equal(5);
result.complained.should.equal(6);
result.unhandled.should.equal(7);
result.unprocessable.should.equal(8);
result.processingFailures.should.equal(9);
result.emailIds.should.deepEqual([1,2,3]);
result.memberIds.should.deepEqual([4,5]);
});
it('has correct totalEvents value', function () {
const result = new EventProcessingResult({
delivered: 1,
opened: 2,
temporaryFailed: 3,
permanentFailed: 4,
unsubscribed: 5,
complained: 6,
unhandled: 7,
unprocessable: 8,
processingFailures: 9, // not counted
emailIds: [1,2,3],
memberIds: [4,5]
});
result.totalEvents.should.equal(36);
});
describe('merge()', function () {
it('adds counts and merges id arrays', function () {
const result = new EventProcessingResult({
delivered: 1,
opened: 2,
temporaryFailed: 3,
permanentFailed: 4,
unsubscribed: 5,
complained: 6,
unhandled: 7,
unprocessable: 8,
processingFailures: 9, // not counted
emailIds: [1,2,3],
memberIds: [4,5]
});
result.merge({
delivered: 2,
opened: 4,
temporaryFailed: 6,
permanentFailed: 8,
unsubscribed: 10,
complained: 12,
unhandled: 14,
unprocessable: 16,
processingFailures: 18, // not counted
emailIds: [4,5,6],
memberIds: [6,7]
});
result.delivered.should.equal(3);
result.opened.should.equal(6);
result.temporaryFailed.should.equal(9);
result.permanentFailed.should.equal(12);
result.unsubscribed.should.equal(15);
result.complained.should.equal(18);
result.unhandled.should.equal(21);
result.unprocessable.should.equal(24);
result.processingFailures.should.equal(27);
result.emailIds.should.deepEqual([1,2,3,4,5,6]);
result.memberIds.should.deepEqual([4,5,6,7]);
});
it('deduplicates id arrays', function () {
const result = new EventProcessingResult({
emailIds: [1,2,3],
memberIds: [9,8,7]
});
result.merge({
emailIds: [1,4,2,3,1],
memberIds: [8,7,8,6]
});
result.emailIds.should.deepEqual([1,2,3,4]);
result.memberIds.should.deepEqual([9,8,7,6]);
});
});
});