Skip to content

Commit 03fbd73

Browse files
committed
feat: added test coverage
1 parent df9dfc0 commit 03fbd73

8 files changed

Lines changed: 610 additions & 164 deletions

File tree

app/component-library/components/SegmentedProgressBar/SegmentedProgressBar.test.tsx

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,32 @@ describe('SegmentedProgressBar', () => {
2020
);
2121
expect(getByTestId('progress').children).toHaveLength(total);
2222
});
23+
24+
it('renders no segments when total is 0', () => {
25+
const { getByTestId } = render(
26+
<SegmentedProgressBar current={0} total={0} testID="progress" />,
27+
);
28+
expect(getByTestId('progress').children).toHaveLength(0);
29+
});
30+
31+
it('renders all segments when current is 0', () => {
32+
const total = 3;
33+
const { getByTestId } = render(
34+
<SegmentedProgressBar current={0} total={total} testID="progress" />,
35+
);
36+
expect(getByTestId('progress').children).toHaveLength(total);
37+
});
38+
39+
it('renders all segments when current equals total', () => {
40+
const total = 3;
41+
const { getByTestId } = render(
42+
<SegmentedProgressBar current={total} total={total} testID="progress" />,
43+
);
44+
expect(getByTestId('progress').children).toHaveLength(total);
45+
});
46+
47+
it('renders without a testID when testID prop is omitted', () => {
48+
const { toJSON } = render(<SegmentedProgressBar current={1} total={2} />);
49+
expect(toJSON()).not.toBeNull();
50+
});
2351
});

app/component-library/components/StepperCard/StepperCard.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ const StepperCard = ({
9090
strings('stepper_card.more_information')
9191
}
9292
accessibilityRole="button"
93+
testID={getTestId('description-tooltip')}
9394
>
9495
<Icon
9596
name={IconName.Info}

app/components/UI/Money/Views/MoneyHomeView/MoneyHomeView.test.tsx

Lines changed: 28 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,25 @@ jest.mock('../../../../../selectors/cardController', () => ({
102102
}));
103103

104104
jest.mock('../../../Card/hooks/useMoneyAccountCardLinkage', () => ({
105+
__esModule: true,
105106
useMoneyAccountCardLinkage: jest.fn(),
107+
default: jest.fn(() => ({
108+
moneyAccountCardToken: null,
109+
canLink: false,
110+
openLinkCardSheet: jest.fn(),
111+
})),
112+
}));
113+
114+
jest.mock('../../../Earn/hooks/useMusdBalance', () => ({
115+
useMusdBalance: jest.fn(() => ({ tokenBalanceAggregated: '0' })),
116+
}));
117+
118+
jest.mock('../../hooks/useMoneyOnboardingStep', () => ({
119+
useMoneyOnboardingStep: jest.fn(() => ({
120+
currentStep: 0,
121+
incrementStep: jest.fn(),
122+
})),
123+
MONEY_STEPPER_ID: 'money',
106124
}));
107125

108126
jest.mock('../../../../../reducers/fiatOrders', () => ({
@@ -536,13 +554,6 @@ describe('MoneyHomeView', () => {
536554
});
537555
});
538556

539-
it('renders onboarding card with step 2', () => {
540-
const { getByTestId } = renderWithProvider(<MoneyHomeView />);
541-
expect(
542-
getByTestId(MoneyOnboardingCardTestIds.STEP_LABEL),
543-
).toHaveTextContent('Step 2 of 2');
544-
});
545-
546557
it('renders the activity list', () => {
547558
const { getByTestId } = renderWithProvider(<MoneyHomeView />);
548559
expect(getByTestId(MoneyActivityListTestIds.CONTAINER)).toBeOnTheScreen();
@@ -573,14 +584,6 @@ describe('MoneyHomeView', () => {
573584
const { getByTestId } = renderWithProvider(<MoneyHomeView />);
574585
expect(getByTestId(MoneyMetaMaskCardTestIds.CONTAINER)).toBeOnTheScreen();
575586
});
576-
577-
it('navigates to Card root when onboarding CTA is tapped', () => {
578-
const { getByTestId } = renderWithProvider(<MoneyHomeView />);
579-
580-
fireEvent.press(getByTestId(MoneyOnboardingCardTestIds.CTA_BUTTON));
581-
582-
expect(mockNavigate).toHaveBeenCalledWith(Routes.CARD.ROOT);
583-
});
584587
});
585588

586589
describe('card-unlinked state (milestone + has cardholder)', () => {
@@ -600,16 +603,6 @@ describe('MoneyHomeView', () => {
600603
mockGetDetectedGeolocation.mockReturnValue('GB');
601604
});
602605

603-
it('renders onboarding card with step 2 and link-card variant', () => {
604-
const { getByTestId } = renderWithProvider(<MoneyHomeView />);
605-
expect(
606-
getByTestId(MoneyOnboardingCardTestIds.STEP_LABEL),
607-
).toHaveTextContent('Step 2 of 2');
608-
expect(getByTestId(MoneyOnboardingCardTestIds.TITLE)).toHaveTextContent(
609-
strings('money.onboarding.link_card_title'),
610-
);
611-
});
612-
613606
it('renders MetaMask Card section in link mode', () => {
614607
const { getByTestId, queryByTestId } = renderWithProvider(
615608
<MoneyHomeView />,
@@ -679,22 +672,6 @@ describe('MoneyHomeView', () => {
679672
expect(getByTestId(MoneyFooterTestIds.CONTAINER)).toBeOnTheScreen();
680673
});
681674

682-
it('delegates to startLinkFlow with the Money home origin when onboarding CTA is tapped', () => {
683-
const { getByTestId } = renderWithProvider(<MoneyHomeView />);
684-
685-
fireEvent.press(getByTestId(MoneyOnboardingCardTestIds.CTA_BUTTON));
686-
687-
expect(mockStartLinkFlow).toHaveBeenCalledTimes(1);
688-
expect(mockStartLinkFlow).toHaveBeenCalledWith({
689-
screen: Routes.MONEY.ROOT,
690-
params: { screen: Routes.MONEY.HOME },
691-
});
692-
expect(mockNavigate).not.toHaveBeenCalledWith(Routes.CARD.ROOT, {
693-
screen: Routes.CARD.HOME,
694-
});
695-
expect(mockOpenLinkCardSheet).not.toHaveBeenCalled();
696-
});
697-
698675
it('delegates to startLinkFlow with the Money home origin when MetaMaskCard link button is tapped', () => {
699676
const { getByTestId } = renderWithProvider(<MoneyHomeView />);
700677

@@ -728,24 +705,6 @@ describe('MoneyHomeView', () => {
728705
} as unknown as ReturnType<typeof useMoneyAccountCardLinkage>);
729706
});
730707

731-
it('still calls startLinkFlow (not openLinkCardSheet directly) when onboarding CTA is tapped', async () => {
732-
const { getByTestId } = renderWithProvider(<MoneyHomeView />);
733-
734-
await act(async () => {
735-
fireEvent.press(getByTestId(MoneyOnboardingCardTestIds.CTA_BUTTON));
736-
});
737-
738-
expect(mockStartLinkFlow).toHaveBeenCalledTimes(1);
739-
expect(mockStartLinkFlow).toHaveBeenCalledWith({
740-
screen: Routes.MONEY.ROOT,
741-
params: { screen: Routes.MONEY.HOME },
742-
});
743-
expect(mockOpenLinkCardSheet).not.toHaveBeenCalled();
744-
expect(mockNavigate).not.toHaveBeenCalledWith(Routes.CARD.ROOT, {
745-
screen: Routes.CARD.HOME,
746-
});
747-
});
748-
749708
it('still calls startLinkFlow (not openLinkCardSheet directly) when MetaMaskCard link button is tapped', async () => {
750709
const { getByTestId } = renderWithProvider(<MoneyHomeView />);
751710

@@ -758,7 +717,6 @@ describe('MoneyHomeView', () => {
758717
screen: Routes.MONEY.ROOT,
759718
params: { screen: Routes.MONEY.HOME },
760719
});
761-
expect(mockOpenLinkCardSheet).not.toHaveBeenCalled();
762720
expect(mockNavigate).not.toHaveBeenCalledWith(Routes.CARD.ROOT, {
763721
screen: Routes.CARD.HOME,
764722
});
@@ -777,13 +735,6 @@ describe('MoneyHomeView', () => {
777735
});
778736
});
779737

780-
it('renders onboarding card with step 1', () => {
781-
const { getByTestId } = renderWithProvider(<MoneyHomeView />);
782-
expect(
783-
getByTestId(MoneyOnboardingCardTestIds.STEP_LABEL),
784-
).toHaveTextContent('Step 1 of 2');
785-
});
786-
787738
it('does not render the activity list', () => {
788739
const { queryByTestId } = renderWithProvider(<MoneyHomeView />);
789740
expect(
@@ -808,18 +759,18 @@ describe('MoneyHomeView', () => {
808759
expect(getByTestId(MoneyWhatYouGetTestIds.CONTAINER)).toBeOnTheScreen();
809760
});
810761

811-
it.each([
812-
['onboarding card CTA', MoneyOnboardingCardTestIds.CTA_BUTTON],
813-
['mUSD row Add', MoneyMusdTokenRowTestIds.ADD_BUTTON],
814-
])('opens the Add money sheet from the %s button', (_label, testId) => {
815-
const { getByTestId } = renderWithProvider(<MoneyHomeView />);
762+
it.each([['mUSD row Add', MoneyMusdTokenRowTestIds.ADD_BUTTON]])(
763+
'opens the Add money sheet from the %s button',
764+
(_label, testId) => {
765+
const { getByTestId } = renderWithProvider(<MoneyHomeView />);
816766

817-
fireEvent.press(getByTestId(testId));
767+
fireEvent.press(getByTestId(testId));
818768

819-
expect(mockNavigate).toHaveBeenCalledWith(Routes.MONEY.MODALS.ROOT, {
820-
screen: Routes.MONEY.MODALS.ADD_MONEY_SHEET,
821-
});
822-
});
769+
expect(mockNavigate).toHaveBeenCalledWith(Routes.MONEY.MODALS.ROOT, {
770+
screen: Routes.MONEY.MODALS.ADD_MONEY_SHEET,
771+
});
772+
},
773+
);
823774

824775
it('navigates to Asset details when the mUSD token row is pressed', () => {
825776
const NavigationService = jest.requireMock(

app/components/UI/Money/components/MoneyBalanceCard/MoneyBalanceCard.test.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@ jest.mock('../../../../../reducers/user/selectors', () => ({
3737
selectMoneyOnboardingSeen: jest.fn(),
3838
}));
3939

40+
jest.mock('../../hooks/useMoneyOnboardingStep', () => ({
41+
useMoneyOnboardingStep: jest.fn(() => ({
42+
currentStep: 0,
43+
incrementStep: jest.fn(),
44+
})),
45+
}));
46+
4047
const mockUseMoneyAccountBalance = jest.mocked(useMoneyAccountBalance);
4148
const mockSelectMoneyOnboardingSeen = jest.mocked(selectMoneyOnboardingSeen);
4249
const mockUseMoneyNavigation = jest.mocked(useMoneyNavigation);

0 commit comments

Comments
 (0)