@@ -2,11 +2,13 @@ import React from 'react'
22import 'jest-styled-components'
33import { styleSheetSerializer } from 'jest-styled-components/serializer'
44import theme from '../theme'
5+ import { ReactTestRendererJSON , ReactTestRendererNode } from 'react-test-renderer'
56import { getClasses , mount , getComputedStyles , render } from './testing'
7+ import { Nullish } from '@testing-library/react'
68
79expect . addSnapshotSerializer ( styleSheetSerializer )
810
9- const stringify = d => JSON . stringify ( d , null , ' ' )
11+ const stringify = ( d : object ) => JSON . stringify ( d , null , ' ' )
1012
1113/**
1214 * These are props that styled-system aliases for backwards compatibility.
@@ -34,7 +36,9 @@ expect.extend({
3436
3537 toHaveClasses ( node , klasses , only = false ) {
3638 const classes = getClasses ( node )
37- const pass = only ? this . equals ( classes . sort ( ) , klasses . sort ( ) ) : klasses . every ( klass => classes . includes ( klass ) )
39+ const pass = only
40+ ? this . equals ( classes . sort ( ) , klasses . sort ( ) )
41+ : klasses . every ( ( klass : Array < string > ) => classes . includes ( klass ) )
3842 return {
3943 pass,
4044 message : ( ) => `expected ${ stringify ( classes ) } to include: ${ stringify ( klasses ) } `
@@ -69,13 +73,14 @@ expect.extend({
6973 const elem = React . cloneElement ( element , { sx : sxPropValue } )
7074 const rendered = render ( elem )
7175
72- function checkStylesDeep ( rendered ) {
73- const className = rendered . props ? rendered . props . className : ''
76+ function checkStylesDeep ( rendered : ReactTestRendererJSON ) : boolean {
77+ const className = rendered ? .props ? rendered . props . className : ''
7478 const styles = getComputedStyles ( className )
75- if ( styles [ mediaKey ] && styles [ mediaKey ] . color ) {
79+ const mediaStyles = styles [ mediaKey ] as Nullish < Record < string , string > >
80+ if ( mediaStyles && mediaStyles . color ) {
7681 return true
7782 } else if ( rendered . children ) {
78- return rendered . children . some ( child => checkStylesDeep ( child ) )
83+ return rendered . children . some ( ( child : ReactTestRendererNode ) => checkStylesDeep ( child as ReactTestRendererJSON ) )
7984 } else {
8085 return false
8186 }
0 commit comments