summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--desktop/packages/mullvad-vpn/test/unit/utils.ts25
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);
+ });
+}