Skip to content

Commit 9e07bac

Browse files
committed
Merge branch 'loren/embedded/MOB-12264-android-sync-and-get-messages' into loren/embedded/MOB-12267-android-add-start-impression-and-pause-impressio
2 parents a626f06 + 0984e9e commit 9e07bac

3 files changed

Lines changed: 80 additions & 14 deletions

File tree

src/__mocks__/MockRNIterableAPI.ts

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,34 @@ export class MockRNIterableAPI {
137137
.fn()
138138
.mockResolvedValue([1, 2, 3] as number[]);
139139

140-
static syncEmbeddedMessages = jest.fn();
141-
142-
static getEmbeddedMessages = jest.fn().mockResolvedValue([]);
140+
static syncEmbeddedMessages = jest.fn().mockResolvedValue(undefined);
141+
142+
static getEmbeddedMessages = jest.fn().mockResolvedValue([
143+
{
144+
metadata: {
145+
messageId: 'msg-1',
146+
campaignId: 123,
147+
placementId: 1,
148+
},
149+
elements: {
150+
title: 'Test Message 1',
151+
body: 'Test body 1',
152+
},
153+
payload: { customKey: 'customValue' },
154+
},
155+
{
156+
metadata: {
157+
messageId: 'msg-2',
158+
campaignId: 456,
159+
placementId: 2,
160+
},
161+
elements: {
162+
title: 'Test Message 2',
163+
body: 'Test body 2',
164+
},
165+
payload: null,
166+
},
167+
]);
143168

144169
static startEmbeddedImpression = jest.fn();
145170

src/embedded/classes/IterableEmbeddedManager.test.ts

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,15 @@ describe('IterableEmbeddedManager', () => {
6565
});
6666

6767
describe('syncMessages', () => {
68-
it('should call IterableApi.syncEmbeddedMessages', () => {
68+
it('should call IterableApi.syncEmbeddedMessages', async () => {
6969
// WHEN syncMessages is called
70-
embeddedManager.syncMessages();
70+
const result = await embeddedManager.syncMessages();
7171

7272
// THEN IterableApi.syncEmbeddedMessages is called
7373
expect(MockRNIterableAPI.syncEmbeddedMessages).toHaveBeenCalledTimes(1);
74+
75+
// AND the result is returned
76+
expect(result).toBeUndefined();
7477
});
7578
});
7679

@@ -91,23 +94,47 @@ describe('IterableEmbeddedManager', () => {
9194

9295
describe('getMessages', () => {
9396
it('should call IterableApi.getEmbeddedMessages with placement IDs', async () => {
94-
// GIVEN some placement IDs
95-
const placementIds = [1, 2, 3];
97+
// GIVEN placement IDs
98+
const placementIds = [1, 2];
9699

97100
// WHEN getMessages is called
98101
const result = await embeddedManager.getMessages(placementIds);
99102

100-
// THEN IterableApi.getEmbeddedMessages is called with the placement IDs
103+
// THEN IterableApi.getEmbeddedMessages is called with placement IDs
101104
expect(MockRNIterableAPI.getEmbeddedMessages).toHaveBeenCalledTimes(1);
102105
expect(MockRNIterableAPI.getEmbeddedMessages).toHaveBeenCalledWith(
103106
placementIds
104107
);
105108

106-
// AND the result is returned
107-
expect(result).toEqual([]);
109+
// AND the result contains embedded messages
110+
expect(result).toHaveLength(2);
111+
expect(result[0]).toEqual({
112+
metadata: {
113+
messageId: 'msg-1',
114+
campaignId: 123,
115+
placementId: 1,
116+
},
117+
elements: {
118+
title: 'Test Message 1',
119+
body: 'Test body 1',
120+
},
121+
payload: { customKey: 'customValue' },
122+
});
123+
expect(result[1]).toEqual({
124+
metadata: {
125+
messageId: 'msg-2',
126+
campaignId: 456,
127+
placementId: 2,
128+
},
129+
elements: {
130+
title: 'Test Message 2',
131+
body: 'Test body 2',
132+
},
133+
payload: null,
134+
});
108135
});
109136

110-
it('should call IterableApi.getEmbeddedMessages with null', async () => {
137+
it('should call IterableApi.getEmbeddedMessages with null placement IDs', async () => {
111138
// WHEN getMessages is called with null
112139
const result = await embeddedManager.getMessages(null);
113140

@@ -116,7 +143,7 @@ describe('IterableEmbeddedManager', () => {
116143
expect(MockRNIterableAPI.getEmbeddedMessages).toHaveBeenCalledWith(null);
117144

118145
// AND the result is returned
119-
expect(result).toEqual([]);
146+
expect(result).toBeDefined();
120147
});
121148
});
122149

src/embedded/classes/IterableEmbeddedManager.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,13 @@ export class IterableEmbeddedManager {
6464
* Retrieves a list of placement IDs for the embedded manager.
6565
*
6666
* [Placement Documentation](https://support.iterable.com/hc/en-us/articles/23060529977364-Embedded-Messaging-Overview#placements-and-prioritization)
67+
*
68+
* @example
69+
* ```typescript
70+
* Iterable.embeddedManager.getPlacementIds().then(placementIds => {
71+
* console.log('Placement IDs:', placementIds);
72+
* });
73+
* ```
6774
*/
6875
getPlacementIds() {
6976
return IterableApi.getEmbeddedPlacementIds();
@@ -74,6 +81,13 @@ export class IterableEmbeddedManager {
7481
*
7582
* @param placementIds - The placement IDs to retrieve messages for.
7683
* @returns A Promise that resolves to an array of embedded messages.
84+
*
85+
* @example
86+
* ```typescript
87+
* Iterable.embeddedManager.getMessages([1, 2, 3]).then(messages => {
88+
* console.log('Messages:', messages);
89+
* });
90+
* ```
7791
*/
7892
getMessages(
7993
placementIds: number[] | null
@@ -133,7 +147,7 @@ export class IterableEmbeddedManager {
133147
*
134148
* @example
135149
* ```typescript
136-
* IterableEmbeddedManager.startImpression(messageId, placementId);
150+
* Iterable.embeddedManager.startImpression(messageId, placementId);
137151
* ```
138152
*/
139153
startImpression(messageId: string, placementId: number) {
@@ -151,7 +165,7 @@ export class IterableEmbeddedManager {
151165
*
152166
* @example
153167
* ```typescript
154-
* IterableEmbeddedManager.pauseImpression(messageId);
168+
* Iterable.embeddedManager.pauseImpression(messageId);
155169
* ```
156170
*/
157171
pauseImpression(messageId: string) {

0 commit comments

Comments
 (0)