diff options
| author | Tobias Järvelöv <tobias.jarvelov@mullvad.net> | 2025-10-29 15:44:15 +0100 |
|---|---|---|
| committer | Tobias Järvelöv <tobias.jarvelov@mullvad.net> | 2025-10-30 17:05:44 +0100 |
| commit | 3808e093a10acf233ba29c449f3c2fdfe0bc70cf (patch) | |
| tree | ca8484868c7bed0a56cb67a602642fac87fccb3b | |
| parent | c291bea599e41c891d2700ea5db4896c4780ec56 (diff) | |
| download | mullvadvpn-3808e093a10acf233ba29c449f3c2fdfe0bc70cf.tar.xz mullvadvpn-3808e093a10acf233ba29c449f3c2fdfe0bc70cf.zip | |
Add unit test utility to verify React element children and type
| -rw-r--r-- | desktop/packages/mullvad-vpn/test/unit/utils.ts | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/desktop/packages/mullvad-vpn/test/unit/utils.ts b/desktop/packages/mullvad-vpn/test/unit/utils.ts index 715bcfe03c..5d2f48b52d 100644 --- a/desktop/packages/mullvad-vpn/test/unit/utils.ts +++ b/desktop/packages/mullvad-vpn/test/unit/utils.ts @@ -31,3 +31,28 @@ export function expectChildrenToMatch( expect(elementChild.props.children).to.equal(expectedParts[index]); }); } + +export function expectChildrenToMatchElements( + element: React.ReactElement<unknown>, + expectedElements: React.ReactElement[], +) { + if (!isReactElementWithChildren(element)) { + throw new Error('React element does not have children on it'); + } + + const elementChildren = React.Children.toArray(element.props.children); + expect(elementChildren).to.have.lengthOf(expectedElements.length); + elementChildren.forEach((elementChild, index) => { + if (!isReactElementWithChildren(elementChild)) { + throw new Error('React element child does not have children on it'); + } + + const expectedElement = expectedElements[index]; + if (!isReactElementWithChildren(expectedElement)) { + throw new Error('Expected React element does not have children on it'); + } + + expect(elementChild.type).to.equal(expectedElement.type); + expect(elementChild.props.children).to.equal(expectedElement.props.children); + }); +} |
