Skip to content

Commit 59a29da

Browse files
authored
[WALL] Lubega / WALL-3634 / Fiat deposit blank screen fix (deriv-com#14345)
* fix: fiat deposit loading blank screen * fix: applied comments
1 parent 273baec commit 59a29da

File tree

2 files changed

+19
-19
lines changed

2 files changed

+19
-19
lines changed

packages/wallets/src/features/cashier/modules/DepositFiat/DepositFiat.tsx

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
import React, { useEffect } from 'react';
1+
import React, { useEffect, useState } from 'react';
22
import { useAuthorize, useCashierFiatAddress } from '@deriv/api-v2';
33
import { Loader, WalletsErrorScreen } from '../../../../components';
44
import { isServerError } from '../../../../utils/utils';
55
import './DepositFiat.scss';
66

77
const DepositFiat = () => {
88
const { isSuccess: isAuthorizeSuccess } = useAuthorize();
9-
const { data: iframeUrl, error: depositError, isError, isLoading, mutate } = useCashierFiatAddress();
9+
const { data: iframeUrl, error: depositError, isError, mutate } = useCashierFiatAddress();
10+
const [isLoading, setIsLoading] = useState(true);
1011

1112
useEffect(() => {
1213
if (isAuthorizeSuccess) {
@@ -20,12 +21,14 @@ const DepositFiat = () => {
2021
return (
2122
<React.Fragment>
2223
{isLoading && <Loader />}
23-
{iframeUrl && !isLoading && (
24+
{iframeUrl && (
2425
<iframe
2526
className='wallets-deposit-fiat__iframe'
2627
data-testid='dt_deposit-fiat-iframe'
2728
key={iframeUrl}
29+
onLoad={() => setIsLoading(false)}
2830
src={iframeUrl}
31+
style={{ display: isLoading ? 'none' : 'block' }}
2932
/>
3033
)}
3134
</React.Fragment>
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22
import { useAuthorize, useCashierFiatAddress } from '@deriv/api-v2';
3-
import { act, render, screen, waitFor } from '@testing-library/react';
3+
import { fireEvent, render, screen } from '@testing-library/react';
44
import DepositFiat from '../DepositFiat';
55

66
jest.mock('@deriv/api-v2', () => ({
@@ -10,7 +10,7 @@ jest.mock('@deriv/api-v2', () => ({
1010

1111
describe('DepositFiat', () => {
1212
beforeEach(() => {
13-
(useAuthorize as jest.Mock).mockReturnValueOnce({ isSuccess: true });
13+
(useAuthorize as jest.Mock).mockReturnValue({ isSuccess: true });
1414
});
1515

1616
afterEach(() => {
@@ -24,21 +24,19 @@ describe('DepositFiat', () => {
2424
data: null,
2525
error: { error: serverError },
2626
isError: true,
27-
isLoading: false,
2827
mutate: jest.fn(),
2928
});
3029

3130
render(<DepositFiat />);
3231
expect(screen.getByText('Server Error')).toBeInTheDocument();
3332
});
3433

35-
it('should render loader while loading', () => {
34+
it('should render loader initially', () => {
3635
(useAuthorize as jest.Mock).mockReturnValueOnce({ isSuccess: false });
3736
(useCashierFiatAddress as jest.Mock).mockReturnValueOnce({
3837
data: null,
3938
error: null,
4039
isError: false,
41-
isLoading: true,
4240
mutate: jest.fn(),
4341
});
4442

@@ -47,22 +45,21 @@ describe('DepositFiat', () => {
4745
expect(screen.queryByTestId('dt_deposit-fiat-iframe')).not.toBeInTheDocument();
4846
});
4947

50-
it('should render iframe after loading is completed and iframe url is received', async () => {
51-
(useCashierFiatAddress as jest.Mock).mockReturnValueOnce({
48+
it('should display iframe correctly after onLoad event', () => {
49+
(useCashierFiatAddress as jest.Mock).mockReturnValue({
5250
data: 'https://iframe_url',
5351
error: null,
5452
isError: false,
55-
isLoading: false,
5653
mutate: jest.fn(),
5754
});
5855

59-
await act(async () => {
60-
render(<DepositFiat />);
61-
await waitFor(() => {
62-
expect(screen.queryByTestId('dt_wallets_loader')).not.toBeInTheDocument();
63-
});
64-
const iframe = screen.getByTestId('dt_deposit-fiat-iframe');
65-
expect(iframe).toHaveAttribute('src', 'https://iframe_url');
66-
});
56+
render(<DepositFiat />);
57+
58+
const iframe = screen.getByTestId('dt_deposit-fiat-iframe');
59+
expect(iframe).toHaveAttribute('src', 'https://iframe_url');
60+
expect(iframe).toHaveStyle({ display: 'none' });
61+
62+
fireEvent.load(iframe);
63+
expect(iframe).toHaveStyle({ display: 'block' });
6764
});
6865
});

0 commit comments

Comments
 (0)