Skip to content

Commit da20dcf

Browse files
committed
test: add unit tests for sync and impression methods in IterableEmbeddedManager
1 parent c942457 commit da20dcf

2 files changed

Lines changed: 137 additions & 0 deletions

File tree

src/__mocks__/MockRNIterableAPI.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,14 @@ 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([]);
143+
144+
static startEmbeddedImpression = jest.fn();
145+
146+
static pauseEmbeddedImpression = jest.fn();
147+
140148
// set messages function is to set the messages static property
141149
// this is for testing purposes only
142150
static setMessages(messages: IterableInAppMessage[]): void {

src/embedded/classes/IterableEmbeddedManager.test.ts

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,16 @@ describe('IterableEmbeddedManager', () => {
6464
});
6565
});
6666

67+
describe('syncMessages', () => {
68+
it('should call IterableApi.syncEmbeddedMessages', () => {
69+
// WHEN syncMessages is called
70+
embeddedManager.syncMessages();
71+
72+
// THEN IterableApi.syncEmbeddedMessages is called
73+
expect(MockRNIterableAPI.syncEmbeddedMessages).toHaveBeenCalledTimes(1);
74+
});
75+
});
76+
6777
describe('getPlacementIds', () => {
6878
it('should call IterableApi.getEmbeddedPlacementIds', async () => {
6979
// WHEN getPlacementIds is called
@@ -79,6 +89,37 @@ describe('IterableEmbeddedManager', () => {
7989
});
8090
});
8191

92+
describe('getMessages', () => {
93+
it('should call IterableApi.getEmbeddedMessages with placement IDs', async () => {
94+
// GIVEN some placement IDs
95+
const placementIds = [1, 2, 3];
96+
97+
// WHEN getMessages is called
98+
const result = await embeddedManager.getMessages(placementIds);
99+
100+
// THEN IterableApi.getEmbeddedMessages is called with the placement IDs
101+
expect(MockRNIterableAPI.getEmbeddedMessages).toHaveBeenCalledTimes(1);
102+
expect(MockRNIterableAPI.getEmbeddedMessages).toHaveBeenCalledWith(
103+
placementIds
104+
);
105+
106+
// AND the result is returned
107+
expect(result).toEqual([]);
108+
});
109+
110+
it('should call IterableApi.getEmbeddedMessages with null', async () => {
111+
// WHEN getMessages is called with null
112+
const result = await embeddedManager.getMessages(null);
113+
114+
// THEN IterableApi.getEmbeddedMessages is called with null
115+
expect(MockRNIterableAPI.getEmbeddedMessages).toHaveBeenCalledTimes(1);
116+
expect(MockRNIterableAPI.getEmbeddedMessages).toHaveBeenCalledWith(null);
117+
118+
// AND the result is returned
119+
expect(result).toEqual([]);
120+
});
121+
});
122+
82123
describe('startSession', () => {
83124
it('should call IterableApi.startEmbeddedSession', () => {
84125
// WHEN startSession is called
@@ -98,5 +139,93 @@ describe('IterableEmbeddedManager', () => {
98139
expect(MockRNIterableAPI.endEmbeddedSession).toHaveBeenCalledTimes(1);
99140
});
100141
});
142+
143+
describe('startImpression', () => {
144+
it('should call IterableApi.startEmbeddedImpression with messageId and placementId', () => {
145+
// GIVEN a message ID and placement ID
146+
const messageId = 'message-123';
147+
const placementId = 456;
148+
149+
// WHEN startImpression is called
150+
embeddedManager.startImpression(messageId, placementId);
151+
152+
// THEN IterableApi.startEmbeddedImpression is called with the correct parameters
153+
expect(MockRNIterableAPI.startEmbeddedImpression).toHaveBeenCalledTimes(
154+
1
155+
);
156+
expect(MockRNIterableAPI.startEmbeddedImpression).toHaveBeenCalledWith(
157+
messageId,
158+
placementId
159+
);
160+
});
161+
162+
it('should handle multiple impression starts', () => {
163+
// GIVEN multiple messages
164+
const messageId1 = 'message-1';
165+
const placementId1 = 100;
166+
const messageId2 = 'message-2';
167+
const placementId2 = 200;
168+
169+
// WHEN startImpression is called multiple times
170+
embeddedManager.startImpression(messageId1, placementId1);
171+
embeddedManager.startImpression(messageId2, placementId2);
172+
173+
// THEN IterableApi.startEmbeddedImpression is called twice
174+
expect(MockRNIterableAPI.startEmbeddedImpression).toHaveBeenCalledTimes(
175+
2
176+
);
177+
expect(MockRNIterableAPI.startEmbeddedImpression).toHaveBeenNthCalledWith(
178+
1,
179+
messageId1,
180+
placementId1
181+
);
182+
expect(MockRNIterableAPI.startEmbeddedImpression).toHaveBeenNthCalledWith(
183+
2,
184+
messageId2,
185+
placementId2
186+
);
187+
});
188+
});
189+
190+
describe('pauseImpression', () => {
191+
it('should call IterableApi.pauseEmbeddedImpression with messageId', () => {
192+
// GIVEN a message ID
193+
const messageId = 'message-123';
194+
195+
// WHEN pauseImpression is called
196+
embeddedManager.pauseImpression(messageId);
197+
198+
// THEN IterableApi.pauseEmbeddedImpression is called with the correct parameter
199+
expect(MockRNIterableAPI.pauseEmbeddedImpression).toHaveBeenCalledTimes(
200+
1
201+
);
202+
expect(MockRNIterableAPI.pauseEmbeddedImpression).toHaveBeenCalledWith(
203+
messageId
204+
);
205+
});
206+
207+
it('should handle multiple impression pauses', () => {
208+
// GIVEN multiple message IDs
209+
const messageId1 = 'message-1';
210+
const messageId2 = 'message-2';
211+
212+
// WHEN pauseImpression is called multiple times
213+
embeddedManager.pauseImpression(messageId1);
214+
embeddedManager.pauseImpression(messageId2);
215+
216+
// THEN IterableApi.pauseEmbeddedImpression is called twice
217+
expect(MockRNIterableAPI.pauseEmbeddedImpression).toHaveBeenCalledTimes(
218+
2
219+
);
220+
expect(MockRNIterableAPI.pauseEmbeddedImpression).toHaveBeenNthCalledWith(
221+
1,
222+
messageId1
223+
);
224+
expect(MockRNIterableAPI.pauseEmbeddedImpression).toHaveBeenNthCalledWith(
225+
2,
226+
messageId2
227+
);
228+
});
229+
});
101230
});
102231

0 commit comments

Comments
 (0)