@@ -313,4 +313,50 @@ describe("[Unit] ElementAssertion.test.ts", () => {
313
313
} ) ;
314
314
} ) ;
315
315
} ) ;
316
+
317
+ describe ( ".toContainElement" , ( ) => {
318
+ const element = render (
319
+ < View testID = "grandParentId" >
320
+ < View testID = "parentId" >
321
+ < View testID = "childId" />
322
+ </ View >
323
+ < Text testID = "textId" />
324
+ </ View > ,
325
+ ) ;
326
+
327
+ const container = element . getByTestId ( "grandParentId" ) ;
328
+ const containerElementAssertion = new ElementAssertion ( container ) ;
329
+ const parent = element . getByTestId ( "parentId" ) ;
330
+ const parentElementAssertion = new ElementAssertion ( parent ) ;
331
+ const child = element . getByTestId ( "childId" ) ;
332
+ const text = element . getByTestId ( "textId" ) ;
333
+
334
+ context ( "when the container element contains the target element" , ( ) => {
335
+ it ( "returns the assertion instance" , ( ) => {
336
+ expect ( containerElementAssertion . toContainElement ( parent ) ) . toBe ( containerElementAssertion ) ;
337
+ expect ( containerElementAssertion . toContainElement ( child ) ) . toBe ( containerElementAssertion ) ;
338
+ expect ( containerElementAssertion . toContainElement ( text ) ) . toBe ( containerElementAssertion ) ;
339
+ expect ( parentElementAssertion . toContainElement ( child ) ) . toBe ( parentElementAssertion ) ;
340
+ } ) ;
341
+
342
+ it ( "returns the assertion instance for negated assertions when the target element is not contained" , ( ) => {
343
+ expect ( parentElementAssertion . not . toContainElement ( text ) ) . toBe ( parentElementAssertion ) ;
344
+ expect ( parentElementAssertion . not . toContainElement ( container ) ) . toBe ( parentElementAssertion ) ;
345
+ } ) ;
346
+ } ) ;
347
+
348
+ context ( "when the container element does NOT contain the target element" , ( ) => {
349
+ it ( "throws an error" , ( ) => {
350
+ expect ( ( ) => containerElementAssertion . not . toContainElement ( parent ) )
351
+ . toThrowError ( AssertionError )
352
+ . toHaveMessage ( "Expected element <View ... /> NOT to contain element <View ... />." ) ;
353
+ expect ( ( ) => containerElementAssertion . not . toContainElement ( text ) )
354
+ . toThrowError ( AssertionError )
355
+ . toHaveMessage ( "Expected element <View ... /> NOT to contain element <Text ... />." ) ;
356
+ expect ( ( ) => parentElementAssertion . toContainElement ( text ) )
357
+ . toThrowError ( AssertionError )
358
+ . toHaveMessage ( "Expected element <View ... /> to contain element <Text ... />." ) ;
359
+ } ) ;
360
+ } ) ;
361
+ } ) ;
316
362
} ) ;
0 commit comments