-
Notifications
You must be signed in to change notification settings - Fork 113
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'develop' into chore.adjust-shopify-upgrade-to-v2
- Loading branch information
Showing
36 changed files
with
2,685 additions
and
203 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -33,7 +33,7 @@ jobs: | |
- name: Checkout | ||
uses: actions/[email protected] | ||
with: | ||
fetch-depth: 1 | ||
fetch-depth: 0 | ||
|
||
- name: Setup Node | ||
uses: actions/[email protected] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,6 +6,7 @@ const { | |
getPurchaseObjs, | ||
setAliasObject, | ||
handleReservedProperties, | ||
combineSubscriptionGroups, | ||
} = require('./util'); | ||
const { processBatch } = require('./util'); | ||
const { | ||
|
@@ -958,7 +959,9 @@ describe('processBatch', () => { | |
attributes: [{ id: i, name: 'test', xyz: 'abc' }], | ||
events: [{ id: i, event: 'test', xyz: 'abc' }], | ||
purchases: [{ id: i, purchase: 'test', xyz: 'abc' }], | ||
subscription_groups: [{ id: i, group: 'test', xyz: 'abc' }], | ||
subscription_groups: [ | ||
{ subscription_group_id: i, group: 'test', subscription_state: 'abc' }, | ||
], | ||
merge_updates: [{ id: i, alias: 'test', xyz: 'abc' }], | ||
}, | ||
}, | ||
|
@@ -972,7 +975,7 @@ describe('processBatch', () => { | |
|
||
// Assert that the response is as expected | ||
expect(result.length).toBe(1); // One successful batched request and one failure response | ||
expect(result[0].batchedRequest.length).toBe(6); // Two batched requests | ||
expect(result[0].batchedRequest.length).toBe(8); // Two batched requests | ||
expect(result[0].batchedRequest[0].body.JSON.partner).toBe('RudderStack'); // Verify partner name | ||
expect(result[0].batchedRequest[0].body.JSON.attributes.length).toBe(75); // First batch contains 75 attributes | ||
expect(result[0].batchedRequest[0].body.JSON.events.length).toBe(75); // First batch contains 75 events | ||
|
@@ -981,10 +984,12 @@ describe('processBatch', () => { | |
expect(result[0].batchedRequest[1].body.JSON.attributes.length).toBe(25); // Second batch contains remaining 25 attributes | ||
expect(result[0].batchedRequest[1].body.JSON.events.length).toBe(25); // Second batch contains remaining 25 events | ||
expect(result[0].batchedRequest[1].body.JSON.purchases.length).toBe(25); // Second batch contains remaining 25 purchases | ||
expect(result[0].batchedRequest[2].body.JSON.subscription_groups.length).toBe(50); // First batch contains 50 subscription group | ||
expect(result[0].batchedRequest[3].body.JSON.subscription_groups.length).toBe(50); | ||
expect(result[0].batchedRequest[4].body.JSON.merge_updates.length).toBe(50); // First batch contains 50 merge_updates | ||
expect(result[0].batchedRequest[5].body.JSON.merge_updates.length).toBe(50); // First batch contains 25 merge_updates | ||
expect(result[0].batchedRequest[2].body.JSON.subscription_groups.length).toBe(25); // First batch contains 25 subscription group | ||
expect(result[0].batchedRequest[3].body.JSON.subscription_groups.length).toBe(25); // Second batch contains 25 subscription group | ||
expect(result[0].batchedRequest[4].body.JSON.subscription_groups.length).toBe(25); // Third batch contains 25 subscription group | ||
expect(result[0].batchedRequest[5].body.JSON.subscription_groups.length).toBe(25); // Fourth batch contains 25 subscription group | ||
expect(result[0].batchedRequest[6].body.JSON.merge_updates.length).toBe(50); // First batch contains 50 merge_updates | ||
expect(result[0].batchedRequest[7].body.JSON.merge_updates.length).toBe(50); // First batch contains 25 merge_updates | ||
}); | ||
|
||
test('processBatch handles more than 75 attributes, events, and purchases with non uniform distribution', () => { | ||
|
@@ -1055,7 +1060,9 @@ describe('processBatch', () => { | |
batchedRequest: { | ||
body: { | ||
JSON: { | ||
subscription_groups: [{ id: i, group: 'test', xyz: 'abc' }], | ||
subscription_groups: [ | ||
{ subscription_group_id: i, group: 'test', subscription_state: 'abc' }, | ||
], | ||
}, | ||
}, | ||
}, | ||
|
@@ -1093,7 +1100,7 @@ describe('processBatch', () => { | |
// Assert that the response is as expected | ||
expect(result.length).toBe(1); // One successful batched request and one failure response | ||
expect(result[0].metadata.length).toBe(490); // Check the total length is same as input jobs (120 + 160 + 100 + 70 +40) | ||
expect(result[0].batchedRequest.length).toBe(6); // Two batched requests | ||
expect(result[0].batchedRequest.length).toBe(7); // Two batched requests | ||
expect(result[0].batchedRequest[0].body.JSON.partner).toBe('RudderStack'); // Verify partner name | ||
expect(result[0].batchedRequest[0].body.JSON.attributes.length).toBe(75); // First batch contains 75 attributes | ||
expect(result[0].batchedRequest[0].body.JSON.events.length).toBe(75); // First batch contains 75 events | ||
|
@@ -1103,9 +1110,10 @@ describe('processBatch', () => { | |
expect(result[0].batchedRequest[1].body.JSON.events.length).toBe(45); // Second batch contains remaining 45 events | ||
expect(result[0].batchedRequest[1].body.JSON.purchases.length).toBe(75); // Second batch contains remaining 75 purchases | ||
expect(result[0].batchedRequest[2].body.JSON.purchases.length).toBe(10); // Third batch contains remaining 10 purchases | ||
expect(result[0].batchedRequest[3].body.JSON.subscription_groups.length).toBe(50); // First batch contains 50 subscription group | ||
expect(result[0].batchedRequest[4].body.JSON.subscription_groups.length).toBe(20); // Second batch contains 20 subscription group | ||
expect(result[0].batchedRequest[5].body.JSON.merge_updates.length).toBe(40); // First batch contains 40 merge_updates | ||
expect(result[0].batchedRequest[3].body.JSON.subscription_groups.length).toBe(25); // First batch contains 25 subscription group | ||
expect(result[0].batchedRequest[4].body.JSON.subscription_groups.length).toBe(25); // Second batch contains 25 subscription group | ||
expect(result[0].batchedRequest[5].body.JSON.subscription_groups.length).toBe(20); // Third batch contains 20 subscription group | ||
expect(result[0].batchedRequest[6].body.JSON.merge_updates.length).toBe(40); // First batch contains 50 merge_updates | ||
}); | ||
|
||
test('check success and failure scenarios both for processBatch', () => { | ||
|
@@ -1751,3 +1759,124 @@ describe('handleReservedProperties', () => { | |
}); | ||
}); | ||
}); | ||
|
||
describe('combineSubscriptionGroups', () => { | ||
it('should merge external_ids, emails, and phones for the same subscription_group_id and subscription_state', () => { | ||
const input = [ | ||
{ | ||
subscription_group_id: 'group1', | ||
subscription_state: 'Subscribed', | ||
external_ids: ['id1', 'id2'], | ||
emails: ['[email protected]', '[email protected]'], | ||
phones: ['+1234567890', '+0987654321'], | ||
}, | ||
{ | ||
subscription_group_id: 'group1', | ||
subscription_state: 'Subscribed', | ||
external_ids: ['id2', 'id3'], | ||
emails: ['[email protected]', '[email protected]'], | ||
phones: ['+1234567890', '+1122334455'], | ||
}, | ||
]; | ||
|
||
const expectedOutput = [ | ||
{ | ||
subscription_group_id: 'group1', | ||
subscription_state: 'Subscribed', | ||
external_ids: ['id1', 'id2', 'id3'], | ||
emails: ['[email protected]', '[email protected]', '[email protected]'], | ||
phones: ['+1234567890', '+0987654321', '+1122334455'], | ||
}, | ||
]; | ||
|
||
const result = combineSubscriptionGroups(input); | ||
expect(result).toEqual(expectedOutput); | ||
}); | ||
|
||
it('should handle groups with missing external_ids, emails, or phones', () => { | ||
const input = [ | ||
{ | ||
subscription_group_id: 'group1', | ||
subscription_state: 'Subscribed', | ||
external_ids: ['id1'], | ||
}, | ||
{ | ||
subscription_group_id: 'group1', | ||
subscription_state: 'Subscribed', | ||
emails: ['[email protected]'], | ||
}, | ||
{ | ||
subscription_group_id: 'group1', | ||
subscription_state: 'Subscribed', | ||
phones: ['+1234567890'], | ||
}, | ||
]; | ||
|
||
const expectedOutput = [ | ||
{ | ||
subscription_group_id: 'group1', | ||
subscription_state: 'Subscribed', | ||
external_ids: ['id1'], | ||
emails: ['[email protected]'], | ||
phones: ['+1234567890'], | ||
}, | ||
]; | ||
|
||
const result = combineSubscriptionGroups(input); | ||
expect(result).toEqual(expectedOutput); | ||
}); | ||
|
||
it('should handle multiple unique subscription groups', () => { | ||
const input = [ | ||
{ | ||
subscription_group_id: 'group1', | ||
subscription_state: 'Subscribed', | ||
external_ids: ['id1'], | ||
}, | ||
{ | ||
subscription_group_id: 'group2', | ||
subscription_state: 'Unsubscribed', | ||
external_ids: ['id2'], | ||
emails: ['[email protected]'], | ||
}, | ||
]; | ||
|
||
const expectedOutput = [ | ||
{ | ||
subscription_group_id: 'group1', | ||
subscription_state: 'Subscribed', | ||
external_ids: ['id1'], | ||
}, | ||
{ | ||
subscription_group_id: 'group2', | ||
subscription_state: 'Unsubscribed', | ||
external_ids: ['id2'], | ||
emails: ['[email protected]'], | ||
}, | ||
]; | ||
|
||
const result = combineSubscriptionGroups(input); | ||
expect(result).toEqual(expectedOutput); | ||
}); | ||
|
||
it('should not include undefined fields in the output', () => { | ||
const input = [ | ||
{ | ||
subscription_group_id: 'group1', | ||
subscription_state: 'Subscribed', | ||
external_ids: ['id1'], | ||
}, | ||
]; | ||
|
||
const expectedOutput = [ | ||
{ | ||
subscription_group_id: 'group1', | ||
subscription_state: 'Subscribed', | ||
external_ids: ['id1'], | ||
}, | ||
]; | ||
|
||
const result = combineSubscriptionGroups(input); | ||
expect(result).toEqual(expectedOutput); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.