@vivianhealth/braze-segment-debounce
Version:
Segment utilities to debounce data before it reaches the Braze destination
155 lines (138 loc) • 4.27 kB
JavaScript
;
var _index = require("./index");
var getPayloadProperty = function getPayloadProperty(payload, prop) {
return payload[prop];
};
describe('debouncePayloads', function () {
test('debounces payload', function () {
var payload = {
userId: 1,
traits: {
firstName: 'Test',
lastName: 'User'
}
};
var _debouncePayloads = (0, _index.debouncePayloads)(payload, payload, getPayloadProperty),
nextPayload = _debouncePayloads.nextPayload,
newOrUpdatedTraits = _debouncePayloads.newOrUpdatedTraits;
expect(nextPayload).toBe(null);
expect(newOrUpdatedTraits).toBe(null);
});
test('debounces payload with anonymousId', function () {
var payload = {
anonymousId: 1,
traits: {
firstName: 'Test',
lastName: 'User'
}
};
var _debouncePayloads2 = (0, _index.debouncePayloads)(payload, payload, getPayloadProperty),
nextPayload = _debouncePayloads2.nextPayload,
newOrUpdatedTraits = _debouncePayloads2.newOrUpdatedTraits;
expect(nextPayload).toBe(null);
expect(newOrUpdatedTraits).toBe(null);
});
test('debounces payload with traits', function () {
var payload = {
traits: {
firstName: 'Test',
lastName: 'User'
}
};
var _debouncePayloads3 = (0, _index.debouncePayloads)(payload, payload, getPayloadProperty),
nextPayload = _debouncePayloads3.nextPayload,
newOrUpdatedTraits = _debouncePayloads3.newOrUpdatedTraits;
expect(nextPayload).toBe(null);
expect(newOrUpdatedTraits).toBe(null);
});
test('debounces payload with new anonymousId', function () {
var payload1 = {
userId: 1,
traits: {
firstName: 'Test',
lastName: 'User'
}
};
var payload2 = {
userId: 1,
anonymousId: 2,
traits: {
firstName: 'Test',
lastName: 'User'
}
};
var _debouncePayloads4 = (0, _index.debouncePayloads)(payload1, payload2, getPayloadProperty),
nextPayload = _debouncePayloads4.nextPayload,
newOrUpdatedTraits = _debouncePayloads4.newOrUpdatedTraits;
expect(nextPayload).toEqual(payload2);
expect(newOrUpdatedTraits).toBe(null);
});
test('debounces payload with new traits', function () {
var payload1 = {
userId: 1,
traits: {
firstName: 'Test',
lastName: 'User'
}
};
var payload2 = {
userId: 1,
traits: {
phoneNumber: '123-45678',
address: '1 Main St'
}
};
var _debouncePayloads5 = (0, _index.debouncePayloads)(payload1, payload2, getPayloadProperty),
nextPayload = _debouncePayloads5.nextPayload,
newOrUpdatedTraits = _debouncePayloads5.newOrUpdatedTraits;
expect(nextPayload).toEqual(payload2);
expect(newOrUpdatedTraits).toEqual({
phoneNumber: '123-45678',
address: '1 Main St'
});
});
test('debounces payload with different traits', function () {
var payload1 = {
userId: 1,
traits: {
firstName: 'Test',
lastName: 'User'
}
};
var payload2 = {
userId: 1,
traits: {
firstName: 'Test',
lastName: 'Tester'
}
};
var _debouncePayloads6 = (0, _index.debouncePayloads)(payload1, payload2, getPayloadProperty),
nextPayload = _debouncePayloads6.nextPayload,
newOrUpdatedTraits = _debouncePayloads6.newOrUpdatedTraits;
expect(nextPayload).toEqual(payload2);
expect(newOrUpdatedTraits).toEqual({
lastName: 'Tester'
});
});
test('debounces payload with different array traits', function () {
var payload1 = {
userId: 1,
traits: {
colors: ['blue', 'orange', 'red']
}
};
var payload2 = {
userId: 1,
traits: {
colors: ['blue', 'orange', 'red', 'green']
}
};
var _debouncePayloads7 = (0, _index.debouncePayloads)(payload1, payload2, getPayloadProperty),
nextPayload = _debouncePayloads7.nextPayload,
newOrUpdatedTraits = _debouncePayloads7.newOrUpdatedTraits;
expect(nextPayload).toEqual(payload2);
expect(newOrUpdatedTraits).toEqual({
colors: ['blue', 'orange', 'red', 'green']
});
});
});