11/* eslint-disable @typescript-eslint/no-explicit-any */
2+ import type { ReactElement } from 'react' ;
23import { render } from '@testing-library/react-native' ;
34
5+ import { EmbeddedSessionContext } from '../context/EmbeddedSessionContext' ;
46import { IterableEmbeddedViewType } from '../enums/IterableEmbeddedViewType' ;
57import { IterableEmbeddedView } from './IterableEmbeddedView' ;
68import { IterableEmbeddedBanner } from './IterableEmbeddedBanner' ;
@@ -20,6 +22,12 @@ jest.mock('./IterableEmbeddedNotification', () => ({
2022 IterableEmbeddedNotification : jest . fn ( ( ) => null ) ,
2123} ) ) ;
2224
25+ function renderWithEmbeddedSession ( ui : ReactElement ) {
26+ return render (
27+ < EmbeddedSessionContext . Provider value = { true } > { ui } </ EmbeddedSessionContext . Provider >
28+ ) ;
29+ }
30+
2331describe ( 'IterableEmbeddedView' , ( ) => {
2432 const mockMessage = {
2533 metadata : {
@@ -46,7 +54,7 @@ describe('IterableEmbeddedView', () => {
4654
4755 describe ( 'View Type Rendering' , ( ) => {
4856 it ( 'should render IterableEmbeddedCard when viewType is Card' , ( ) => {
49- render (
57+ renderWithEmbeddedSession (
5058 < IterableEmbeddedView
5159 viewType = { IterableEmbeddedViewType . Card }
5260 message = { mockMessage }
@@ -59,7 +67,7 @@ describe('IterableEmbeddedView', () => {
5967 } ) ;
6068
6169 it ( 'should render IterableEmbeddedNotification when viewType is Notification' , ( ) => {
62- render (
70+ renderWithEmbeddedSession (
6371 < IterableEmbeddedView
6472 viewType = { IterableEmbeddedViewType . Notification }
6573 message = { mockMessage }
@@ -72,7 +80,7 @@ describe('IterableEmbeddedView', () => {
7280 } ) ;
7381
7482 it ( 'should render IterableEmbeddedBanner when viewType is Banner' , ( ) => {
75- render (
83+ renderWithEmbeddedSession (
7684 < IterableEmbeddedView
7785 viewType = { IterableEmbeddedViewType . Banner }
7886 message = { mockMessage }
@@ -85,7 +93,7 @@ describe('IterableEmbeddedView', () => {
8593 } ) ;
8694
8795 it ( 'should render null for invalid viewType' , ( ) => {
88- render (
96+ renderWithEmbeddedSession (
8997 < IterableEmbeddedView
9098 viewType = { 999 as IterableEmbeddedViewType }
9199 message = { mockMessage }
@@ -98,7 +106,7 @@ describe('IterableEmbeddedView', () => {
98106 } ) ;
99107
100108 it ( 'should render null for undefined viewType' , ( ) => {
101- render (
109+ renderWithEmbeddedSession (
102110 < IterableEmbeddedView
103111 viewType = { undefined as any }
104112 message = { mockMessage }
@@ -113,7 +121,7 @@ describe('IterableEmbeddedView', () => {
113121
114122 describe ( 'Props Passing' , ( ) => {
115123 it ( 'should pass message prop to Card component' , ( ) => {
116- render (
124+ renderWithEmbeddedSession (
117125 < IterableEmbeddedView
118126 viewType = { IterableEmbeddedViewType . Card }
119127 message = { mockMessage }
@@ -127,7 +135,7 @@ describe('IterableEmbeddedView', () => {
127135 } ) ;
128136
129137 it ( 'should pass message prop to Banner component' , ( ) => {
130- render (
138+ renderWithEmbeddedSession (
131139 < IterableEmbeddedView
132140 viewType = { IterableEmbeddedViewType . Banner }
133141 message = { mockMessage }
@@ -141,7 +149,7 @@ describe('IterableEmbeddedView', () => {
141149 } ) ;
142150
143151 it ( 'should pass message prop to Notification component' , ( ) => {
144- render (
152+ renderWithEmbeddedSession (
145153 < IterableEmbeddedView
146154 viewType = { IterableEmbeddedViewType . Notification }
147155 message = { mockMessage }
@@ -156,7 +164,7 @@ describe('IterableEmbeddedView', () => {
156164 } ) ;
157165
158166 it ( 'should pass config prop to child component' , ( ) => {
159- render (
167+ renderWithEmbeddedSession (
160168 < IterableEmbeddedView
161169 viewType = { IterableEmbeddedViewType . Card }
162170 message = { mockMessage }
@@ -172,7 +180,7 @@ describe('IterableEmbeddedView', () => {
172180 } ) ;
173181
174182 it ( 'should pass onButtonClick prop to child component' , ( ) => {
175- render (
183+ renderWithEmbeddedSession (
176184 < IterableEmbeddedView
177185 viewType = { IterableEmbeddedViewType . Card }
178186 message = { mockMessage }
@@ -188,7 +196,7 @@ describe('IterableEmbeddedView', () => {
188196 } ) ;
189197
190198 it ( 'should pass all props to child component' , ( ) => {
191- render (
199+ renderWithEmbeddedSession (
192200 < IterableEmbeddedView
193201 viewType = { IterableEmbeddedViewType . Card }
194202 message = { mockMessage }
@@ -208,7 +216,7 @@ describe('IterableEmbeddedView', () => {
208216
209217 describe ( 'Component Memoization' , ( ) => {
210218 it ( 'should memoize component selection based on viewType' , ( ) => {
211- const { rerender } = render (
219+ const { rerender } = renderWithEmbeddedSession (
212220 < IterableEmbeddedView
213221 viewType = { IterableEmbeddedViewType . Card }
214222 message = { mockMessage }
@@ -227,10 +235,12 @@ describe('IterableEmbeddedView', () => {
227235 } ;
228236
229237 rerender (
230- < IterableEmbeddedView
231- viewType = { IterableEmbeddedViewType . Card }
232- message = { newMessage }
233- />
238+ < EmbeddedSessionContext . Provider value = { true } >
239+ < IterableEmbeddedView
240+ viewType = { IterableEmbeddedViewType . Card }
241+ message = { newMessage }
242+ />
243+ </ EmbeddedSessionContext . Provider >
234244 ) ;
235245
236246 // Should still render Card component (memoization means same component reference)
@@ -243,7 +253,7 @@ describe('IterableEmbeddedView', () => {
243253 } ) ;
244254
245255 it ( 'should update component when viewType changes' , ( ) => {
246- const { rerender } = render (
256+ const { rerender } = renderWithEmbeddedSession (
247257 < IterableEmbeddedView
248258 viewType = { IterableEmbeddedViewType . Card }
249259 message = { mockMessage }
@@ -255,10 +265,12 @@ describe('IterableEmbeddedView', () => {
255265
256266 // Re-render with different viewType
257267 rerender (
258- < IterableEmbeddedView
259- viewType = { IterableEmbeddedViewType . Banner }
260- message = { mockMessage }
261- />
268+ < EmbeddedSessionContext . Provider value = { true } >
269+ < IterableEmbeddedView
270+ viewType = { IterableEmbeddedViewType . Banner }
271+ message = { mockMessage }
272+ />
273+ </ EmbeddedSessionContext . Provider >
262274 ) ;
263275
264276 expect ( IterableEmbeddedBanner ) . toHaveBeenCalledTimes ( 1 ) ;
@@ -269,7 +281,7 @@ describe('IterableEmbeddedView', () => {
269281
270282 describe ( 'Edge Cases' , ( ) => {
271283 it ( 'should handle null config gracefully' , ( ) => {
272- render (
284+ renderWithEmbeddedSession (
273285 < IterableEmbeddedView
274286 viewType = { IterableEmbeddedViewType . Card }
275287 message = { mockMessage }
@@ -285,7 +297,7 @@ describe('IterableEmbeddedView', () => {
285297 } ) ;
286298
287299 it ( 'should handle undefined config gracefully' , ( ) => {
288- render (
300+ renderWithEmbeddedSession (
289301 < IterableEmbeddedView
290302 viewType = { IterableEmbeddedViewType . Card }
291303 message = { mockMessage }
@@ -301,7 +313,7 @@ describe('IterableEmbeddedView', () => {
301313 } ) ;
302314
303315 it ( 'should handle missing onButtonClick gracefully' , ( ) => {
304- render (
316+ renderWithEmbeddedSession (
305317 < IterableEmbeddedView
306318 viewType = { IterableEmbeddedViewType . Card }
307319 message = { mockMessage }
@@ -317,27 +329,27 @@ describe('IterableEmbeddedView', () => {
317329
318330 it ( 'should handle numeric viewType values correctly' , ( ) => {
319331 // Test with numeric value 0 (Banner)
320- render ( < IterableEmbeddedView viewType = { 0 } message = { mockMessage } /> ) ;
332+ renderWithEmbeddedSession ( < IterableEmbeddedView viewType = { 0 } message = { mockMessage } /> ) ;
321333 expect ( IterableEmbeddedBanner ) . toHaveBeenCalledTimes ( 1 ) ;
322334
323335 jest . clearAllMocks ( ) ;
324336
325337 // Test with numeric value 1 (Card)
326- render ( < IterableEmbeddedView viewType = { 1 } message = { mockMessage } /> ) ;
338+ renderWithEmbeddedSession ( < IterableEmbeddedView viewType = { 1 } message = { mockMessage } /> ) ;
327339 expect ( IterableEmbeddedCard ) . toHaveBeenCalledTimes ( 1 ) ;
328340
329341 jest . clearAllMocks ( ) ;
330342
331343 // Test with numeric value 2 (Notification)
332- render ( < IterableEmbeddedView viewType = { 2 } message = { mockMessage } /> ) ;
344+ renderWithEmbeddedSession ( < IterableEmbeddedView viewType = { 2 } message = { mockMessage } /> ) ;
333345 expect ( IterableEmbeddedNotification ) . toHaveBeenCalledTimes ( 1 ) ;
334346 } ) ;
335347 } ) ;
336348
337349 describe ( 'Component Type Verification' , ( ) => {
338350 it ( 'should render correct component type for each enum value' , ( ) => {
339351 // Verify Banner enum value
340- const bannerResult = render (
352+ const bannerResult = renderWithEmbeddedSession (
341353 < IterableEmbeddedView
342354 viewType = { IterableEmbeddedViewType . Banner }
343355 message = { mockMessage }
@@ -349,7 +361,7 @@ describe('IterableEmbeddedView', () => {
349361 jest . clearAllMocks ( ) ;
350362
351363 // Verify Card enum value
352- const cardResult = render (
364+ const cardResult = renderWithEmbeddedSession (
353365 < IterableEmbeddedView
354366 viewType = { IterableEmbeddedViewType . Card }
355367 message = { mockMessage }
@@ -361,7 +373,7 @@ describe('IterableEmbeddedView', () => {
361373 jest . clearAllMocks ( ) ;
362374
363375 // Verify Notification enum value
364- render (
376+ renderWithEmbeddedSession (
365377 < IterableEmbeddedView
366378 viewType = { IterableEmbeddedViewType . Notification }
367379 message = { mockMessage }
0 commit comments