diff options
| -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); + }); +} |
