From 31b3dcf0085e319fe42ef81b214fb7d59a79e7b4 Mon Sep 17 00:00:00 2001
From: Aum Bhatt <125039206+aum-deriv@users.noreply.github.com>
Date: Thu, 5 Sep 2024 19:12:13 +0400
Subject: [PATCH] [WALL] aum / WALL-2957 / unit-test-wallets-VerificationFailed
(#16704)
* chore: added unit tests for VerificationFailed component
* chore: update test description
---
.../__tests__/VerificationFailed.spec.tsx | 122 ++++++++++++++++++
1 file changed, 122 insertions(+)
create mode 100644 packages/wallets/src/features/cfd/screens/VerificationFailed/__tests__/VerificationFailed.spec.tsx
diff --git a/packages/wallets/src/features/cfd/screens/VerificationFailed/__tests__/VerificationFailed.spec.tsx b/packages/wallets/src/features/cfd/screens/VerificationFailed/__tests__/VerificationFailed.spec.tsx
new file mode 100644
index 000000000000..7c93ae688f48
--- /dev/null
+++ b/packages/wallets/src/features/cfd/screens/VerificationFailed/__tests__/VerificationFailed.spec.tsx
@@ -0,0 +1,122 @@
+import React from 'react';
+import { usePOA, usePOI } from '@deriv/api-v2';
+import { render, screen, waitFor } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+import VerificationFailed from '../VerificationFailed';
+
+const mockHideModal = jest.fn();
+const mockShowModal = jest.fn();
+
+jest.mock('../../../flows/ClientVerification/ClientVerification', () => ({
+ ...jest.requireActual('../../../flows/ClientVerification/ClientVerification'),
+ ClientVerification: jest.fn(() =>
ClientVerification
),
+}));
+
+jest.mock('@deriv/api-v2', () => ({
+ ...jest.requireActual('@deriv/api-v2'),
+ usePOA: jest.fn(),
+ usePOI: jest.fn(),
+}));
+
+jest.mock('../../../../../components/ModalProvider', () => ({
+ ...jest.requireActual('../../../../../components/ModalProvider'),
+ useModal: jest.fn(() => ({
+ hide: mockHideModal,
+ show: mockShowModal,
+ })),
+}));
+
+describe('', () => {
+ it('renders failed verification modal for POI failure', () => {
+ (usePOI as jest.Mock).mockReturnValue({
+ data: { is_expired: true, is_rejected: true, is_suspected: true },
+ });
+ (usePOA as jest.Mock).mockReturnValue({
+ data: { is_expired: false, is_rejected: false, is_suspected: false },
+ });
+ render();
+
+ expect(screen.getByText('Why did my verification fail?')).toBeInTheDocument();
+ expect(
+ screen.getByText(
+ 'Your proof of identity document did not pass our verification checks. This could be due to reasons such as:'
+ )
+ ).toBeInTheDocument();
+ expect(screen.getByText('Maybe later')).toBeInTheDocument();
+ expect(screen.getAllByText('Resubmit documents')[1]).toBeInTheDocument();
+ });
+
+ it('renders failed verification modal for POA failure', () => {
+ (usePOI as jest.Mock).mockReturnValue({
+ data: { is_expired: false, is_rejected: false, is_suspected: false },
+ });
+ (usePOA as jest.Mock).mockReturnValue({
+ data: { is_expired: true, is_rejected: true, is_suspected: true },
+ });
+ render();
+
+ expect(screen.getByText('Why did my verification fail?')).toBeInTheDocument();
+ expect(
+ screen.getByText(
+ 'Your proof of address document did not pass our verification checks. This could be due to reasons such as:'
+ )
+ ).toBeInTheDocument();
+ expect(screen.getByText('Maybe later')).toBeInTheDocument();
+ expect(screen.getAllByText('Resubmit documents')[1]).toBeInTheDocument();
+ });
+
+ it('renders failed verification modal for both POI and POA failure', () => {
+ (usePOI as jest.Mock).mockReturnValue({
+ data: { is_expired: true, is_rejected: false, is_suspected: false },
+ });
+ (usePOA as jest.Mock).mockReturnValue({
+ data: { is_expired: true, is_rejected: false, is_suspected: false },
+ });
+ render();
+
+ expect(screen.getByText('Why did my verification fail?')).toBeInTheDocument();
+ expect(
+ screen.getByText(
+ 'Your proof of identity and proof of address documents did not pass our verification checks. This could be due to reasons such as:'
+ )
+ ).toBeInTheDocument();
+ expect(screen.getByText('Maybe later')).toBeInTheDocument();
+ expect(screen.getAllByText('Resubmit documents')[1]).toBeInTheDocument();
+ });
+
+ it('closes the failed verification popup upon clicking `Maybe later`', async () => {
+ (usePOI as jest.Mock).mockReturnValue({
+ data: { is_expired: true, is_rejected: false, is_suspected: false },
+ });
+ (usePOA as jest.Mock).mockReturnValue({
+ data: { is_expired: true, is_rejected: false, is_suspected: false },
+ });
+ render();
+
+ expect(screen.getByText('Why did my verification fail?')).toBeInTheDocument();
+
+ userEvent.click(screen.getByText('Maybe later'));
+
+ await waitFor(() => {
+ expect(mockHideModal).toBeCalled();
+ });
+ });
+
+ it('triggers show function which mounts ClientVerification component on clicking `Resubmit documents`', async () => {
+ (usePOI as jest.Mock).mockReturnValue({
+ data: { is_expired: true, is_rejected: false, is_suspected: false },
+ });
+ (usePOA as jest.Mock).mockReturnValue({
+ data: { is_expired: true, is_rejected: false, is_suspected: false },
+ });
+ render();
+
+ expect(screen.getByText('Why did my verification fail?')).toBeInTheDocument();
+
+ userEvent.click(screen.getAllByText('Resubmit documents')[1]);
+
+ await waitFor(() => {
+ expect(mockShowModal).toBeCalled();
+ });
+ });
+});