Skip to content

Commit 2faa18e

Browse files
committed
Addresses handful of bugs
1 parent 154548f commit 2faa18e

7 files changed

+36
-26
lines changed

lib/dynamodb/eventTypeChecker.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
export const CANCEL_PAYMENT_EVENT = 'PAYMENT_SERVICE:SUBSCRIPTION:DELETE';
22
export const UPDATE_MEMBER_EVENT = 'MEMBERS_SERVICE:MEMBER:UPDATE';
33

4-
export function updateMemberEvent(record = {}): boolean {
5-
const { eventName, eventType } = record;
6-
return eventName === 'INSERT' && eventType === UPDATE_MEMBER_EVENT;
4+
export function updateMemberEvent(eventName, record = {}): boolean {
5+
return eventName === 'INSERT' && record.eventType === UPDATE_MEMBER_EVENT;
76
}
8-
export function cancelPaymentEvent(record = {}): boolean {
9-
const { eventType } = record;
10-
return eventType === CANCEL_PAYMENT_EVENT;
7+
export function cancelPaymentEvent(eventName, record = {}): boolean {
8+
return eventName === 'INSERT' && record.eventType === CANCEL_PAYMENT_EVENT;
119
}

members-service/triggerChampaignMemberUpdate.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,26 @@ const logger = new OperationsLogger({
1010
client: new DocumentClient(),
1111
});
1212

13-
export async function handler(e, ctx, cb, fn = updateMember) {
14-
const [item] = e.Records;
13+
async function update(item, fn = updateMember) {
1514
const record = Converter.unmarshall(item.dynamodb.NewImage);
16-
if (!updateMemberEvent(record)) return cb(null, 'Not a member update event');
15+
16+
if (!updateMemberEvent(item.eventName, record)) {
17+
console.error('ERROR: Not a member update event');
18+
return;
19+
}
1720

1821
try {
1922
const result = await fn(record.data);
2023
logger.updateStatus(record, { champaign: 'SUCCESS' });
21-
return cb(null, result);
2224
} catch (e) {
2325
logger.updateStatus(record, { champaign: 'FAILURE' });
24-
cb(e);
25-
throw e;
2626
}
2727
}
28+
29+
export async function handler(e, ctx, cb, memberUpdater = updateMember) {
30+
e.Records.forEach(item => {
31+
update(item, memberUpdater);
32+
});
33+
34+
cb(null);
35+
}

members-service/triggerChampaignMemberUpdate.test.js

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,25 @@ import { updateMember } from '../lib/clients/champaign/member';
77

88
jest.mock('../lib/dynamodb/operationsLogger');
99

10+
jest.spyOn(console, 'error');
11+
1012
describe('handler', function() {
1113
test('it is a function', () => {
1214
expect(typeof handler).toEqual('function');
1315
});
1416

15-
test('does not process non-update member events', async () => {
17+
test.only('does not process non-update member events', async () => {
1618
const cb = jest.fn();
17-
await handler(invalidEvent(), null, cb);
18-
return expect(cb).toBeCalledWith(null, 'Not a member update event');
19+
handler(invalidEvent(), null, cb);
20+
return expect(console.error).toBeCalledWith(
21+
'ERROR: Not a member update event'
22+
);
1923
});
2024

21-
test('calls updateMember() with the member data', async () => {
22-
const cb = jest.fn();
25+
test.only('calls updateMember() with the member data', async () => {
2326
const event = validEvent();
2427
const update = jest.fn((...args) => updateMember(...args));
25-
await handler(event, null, cb, update);
28+
handler(event, null, jest.fn(), update);
2629
return expect(update).toHaveBeenCalledWith(
2730
expect.objectContaining({
2831
email: 'vincent@sumofus.org',
@@ -37,9 +40,9 @@ function validEvent(date) {
3740
return {
3841
Records: [
3942
{
43+
eventName: 'INSERT',
4044
dynamodb: {
4145
NewImage: Converter.marshall({
42-
eventName: 'INSERT',
4346
eventType: UPDATE_MEMBER_EVENT,
4447
id: uuidv1(),
4548
createdAt: date || new Date().toISOString(),
@@ -60,9 +63,9 @@ function invalidEvent(date = new Date().toISOString()) {
6063
return {
6164
Records: [
6265
{
66+
eventName: 'INSERT',
6367
dynamodb: {
6468
NewImage: Converter.marshall({
65-
eventName: 'INSERT',
6669
eventType: 'INVALID_EVENT',
6770
id: uuidv1(),
6871
createdAt: date || new Date().toISOString(),

payments-service/subscriptions-delete-actionkit.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ export const handler = async (e, ctx, cb, fn = cancelRecurringOrders) => {
1414
// Get first item
1515
const [item] = e.Records;
1616
const record = AWS.DynamoDB.Converter.unmarshall(item.dynamodb.NewImage);
17-
if (!cancelPaymentEvent(record)) return cb(null, 'Not a cancel event');
17+
if (!cancelPaymentEvent(item.eventName, record))
18+
return cb(null, 'Not a cancel event');
1819

1920
try {
2021
await fn(record.data.recurringId);

payments-service/subscriptions-delete-actionkit.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@ function validEvent(date) {
5757
return {
5858
Records: [
5959
{
60+
eventName: 'INSERT',
6061
dynamodb: {
6162
NewImage: marshall({
62-
eventName: 'INSERT',
6363
eventType: CANCEL_PAYMENT_EVENT,
6464
id: uuidv1(),
6565
createdAt: date,
@@ -77,7 +77,7 @@ function validEvent(date) {
7777
function invalidEvent() {
7878
return {
7979
Records: [
80-
{ dynamodb: { NewImage: { eventName: 'INSERT', eventType: 'INVALID' } } },
80+
{ eventName: 'INSERT', dynamodb: { NewImage: { eventType: 'INVALID' } } },
8181
],
8282
};
8383
}

payments-service/subscriptions-delete-champaign.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export const handler = (
2222
const [item] = event.Records;
2323
const record = AWS.DynamoDB.Converter.unmarshall(item.dynamodb.NewImage);
2424

25-
if (!cancelPaymentEvent(record)) {
25+
if (!cancelPaymentEvent(item.eventName, record)) {
2626
return callback(null, 'Not a cancel event');
2727
}
2828
const recurringId = record.data.recurringId;

payments-service/subscriptions-delete-champaign.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ function validEvent(date) {
6565
return {
6666
Records: [
6767
{
68+
eventName: 'INSERT',
6869
dynamodb: {
6970
NewImage: marshall({
70-
eventName: 'INSERT',
7171
eventType: CANCEL_PAYMENT_EVENT,
7272
id: uuidv1(),
7373
createdAt: date,
@@ -87,9 +87,9 @@ function notFoundEvent(date) {
8787
return {
8888
Records: [
8989
{
90+
eventName: 'INSERT',
9091
dynamodb: {
9192
NewImage: marshall({
92-
eventName: 'INSERT',
9393
eventType: CANCEL_PAYMENT_EVENT,
9494
id: uuidv1(),
9595
createdAt: date,

0 commit comments

Comments
 (0)