From d50a81abd02ad1715152854d7dd8586157987195 Mon Sep 17 00:00:00 2001 From: Maryia <103177211+maryia-binary@users.noreply.github.com> Date: Mon, 11 Jul 2022 12:11:59 +0300 Subject: [PATCH] Maryia/used local state for setting selected card & updated flow (#17) * Maryia/used local state for setting selected card & updated flow * fix: for tests --- .../cfd-demo-account-display.spec.js | 10 ++--- .../cfd-real-account-display.spec.js | 10 ++--- .../Containers/jurisdiction-modal-content.tsx | 37 +++++++++---------- .../cfd/src/Containers/jurisdiction-modal.tsx | 25 +++++++++---- .../cfd/src/Stores/Modules/CFD/cfd-store.js | 8 ---- 5 files changed, 46 insertions(+), 44 deletions(-) diff --git a/packages/cfd/src/Components/__tests__/cfd-demo-account-display.spec.js b/packages/cfd/src/Components/__tests__/cfd-demo-account-display.spec.js index 50cfdbe0c984..8846870352f7 100644 --- a/packages/cfd/src/Components/__tests__/cfd-demo-account-display.spec.js +++ b/packages/cfd/src/Components/__tests__/cfd-demo-account-display.spec.js @@ -7,6 +7,7 @@ const mock_connect_props = { demo: '', real: '', }, + setMT5TradeAccount: jest.fn(), }; jest.mock('Stores/connect.js', () => ({ @@ -51,6 +52,7 @@ describe('', () => { maltainvest: false, svg: true, }, + toggleMT5TradeModal: jest.fn(), }; }); @@ -201,17 +203,15 @@ describe('', () => { checkAccountCardsRendering(TESTED_CASES.NON_EU_DMT5); expect(screen.getAllByRole('button', { name: /add demo account/i }).length).toBe(1); const dmt5_top_up_button = screen.getByRole('button', { name: /top up/i }); - const dmt5_trade_button = screen.getByRole('link', { name: /trade/i }); - expect(dmt5_trade_button).toHaveAttribute( - 'href', - 'https://trade.mql5.com/trade?servers=Deriv-Demo&trade_server=Deriv-Demo&login=20103240' - ); + const dmt5_trade_button = screen.getByRole('button', { name: /trade/i }); fireEvent.click(dmt5_top_up_button); expect(props.openAccountTransfer).toHaveBeenCalledWith(props.current_list['mt5.demo.financial@p01_ts02'], { category: 'demo', type: 'financial', }); + fireEvent.click(dmt5_trade_button); + expect(props.toggleMT5TradeModal).toHaveBeenCalledTimes(1); rerender( ({ @@ -57,6 +58,7 @@ describe('', () => { svg: true, }, toggleAccountsDialog: jest.fn(), + toggleMT5TradeModal: jest.fn(), toggleShouldShowRealAccountsList: jest.fn(), }; }); @@ -289,17 +291,15 @@ describe('', () => { checkAccountCardsRendering(TESTED_CASES.NON_EU_DMT5); expect(screen.getAllByRole('button', { name: /add real account/i }).length).toBe(1); const dmt5_top_up_button = screen.getByRole('button', { name: /top up/i }); - const dmt5_trade_button = screen.getByRole('link', { name: /trade/i }); - expect(dmt5_trade_button).toHaveAttribute( - 'href', - 'https://trade.mql5.com/trade?servers=Deriv-Server&trade_server=Deriv-Server&login=1927245' - ); + const dmt5_trade_button = screen.getByRole('button', { name: /trade/i }); fireEvent.click(dmt5_top_up_button); expect(props.openAccountTransfer).toHaveBeenCalledWith(props.current_list['mt5.real.financial@p01_ts01'], { category: 'real', type: 'financial', }); + fireEvent.click(dmt5_trade_button); + expect(props.toggleMT5TradeModal).toHaveBeenCalledTimes(1); rerender( string | undefined; + jurisdiction_selected_card: string; + setJurisdictionSelectedCard: (card_type: string) => void; synthetic_available_accounts: TAvailableAccountAPI; financial_available_accounts: TAvailableAccountAPI; poa_status: string; @@ -41,7 +41,7 @@ type TJurisdictionModalContent = { }; type TJurisdictionCard = { - jurisdiction_selected_card: string | undefined; + jurisdiction_selected_card: string; synthetic_available_accounts: TAvailableAccountAPI; financial_available_accounts: TAvailableAccountAPI; account_type: string; @@ -49,7 +49,7 @@ type TJurisdictionCard = { poi_status: string; is_fully_authenticated: boolean; is_pending_authentication: boolean; - selectTypeOfCard: (card_type: string | undefined) => string | undefined; + setJurisdictionSelectedCard: (card_type: string) => void; type_of_card: string; disabled: boolean; poa_failed: boolean; @@ -65,7 +65,7 @@ const JurisdictionCard = ({ poi_status, is_fully_authenticated, is_pending_authentication, - selectTypeOfCard, + setJurisdictionSelectedCard, type_of_card, disabled, poa_failed, @@ -87,9 +87,9 @@ const JurisdictionCard = ({ const cardSelection = (cardType: string) => { if (jurisdiction_selected_card === cardType) { - selectTypeOfCard(undefined); + setJurisdictionSelectedCard(''); } else { - selectTypeOfCard(cardType); + setJurisdictionSelectedCard(cardType); } }; @@ -218,7 +218,7 @@ const JurisdictionCard = ({ const JurisdictionModalContent = ({ jurisdiction_selected_card, account_type, - selectTypeOfCard, + setJurisdictionSelectedCard, synthetic_available_accounts, financial_available_accounts, poa_status, @@ -235,6 +235,7 @@ const JurisdictionModalContent = ({ }: TJurisdictionModalContent) => { const poa_none = poa_status === PoaStatusCodes.none; const poi_none = poi_status === PoaStatusCodes.none; + const poi_poa_verified = poi_status === PoaStatusCodes.verified && poa_status === PoaStatusCodes.verified; const cardsToBeShown = (type_of_card: string) => { const is_available = @@ -341,7 +342,7 @@ const JurisdictionModalContent = ({ is_pending_authentication={is_pending_authentication} poa_status={poa_status} poi_status={poi_status} - selectTypeOfCard={selectTypeOfCard} + setJurisdictionSelectedCard={setJurisdictionSelectedCard} disabled={disableCard('bvi')} poa_failed={poa_failed} poi_failed={poi_failed} @@ -359,7 +360,7 @@ const JurisdictionModalContent = ({ account_type={account_type} poa_status={poa_status} poi_status={poi_status} - selectTypeOfCard={selectTypeOfCard} + setJurisdictionSelectedCard={setJurisdictionSelectedCard} disabled={disableCard('mf')} poa_failed={poa_failed} poi_failed={poi_failed} @@ -377,7 +378,7 @@ const JurisdictionModalContent = ({ account_type={account_type} poa_status={poa_status} poi_status={poi_status} - selectTypeOfCard={selectTypeOfCard} + setJurisdictionSelectedCard={setJurisdictionSelectedCard} disabled={disableCard('vanuatu')} poa_failed={poa_failed} poi_failed={poi_failed} @@ -394,7 +395,7 @@ const JurisdictionModalContent = ({ account_type={account_type} poa_status={poa_status} poi_status={poi_status} - selectTypeOfCard={selectTypeOfCard} + setJurisdictionSelectedCard={setJurisdictionSelectedCard} disabled={disableCard('labuan')} poa_failed={poa_failed} poi_failed={poi_failed} @@ -412,7 +413,7 @@ const JurisdictionModalContent = ({ account_type={account_type} poa_status={poa_status} poi_status={poi_status} - selectTypeOfCard={selectTypeOfCard} + setJurisdictionSelectedCard={setJurisdictionSelectedCard} disabled={disableCard('svg')} poa_failed={poa_failed} poi_failed={poi_failed} @@ -420,18 +421,16 @@ const JurisdictionModalContent = ({ )} - {((is_eu && is_fully_authenticated && jurisdiction_selected_card === 'malta') || - (is_fully_authenticated && jurisdiction_selected_card === 'bvi') || - (is_fully_authenticated && jurisdiction_selected_card === 'vanuatu') || - jurisdiction_selected_card === 'labuan') && } + {is_fully_authenticated && + poi_poa_verified && + jurisdiction_selected_card && + jurisdiction_selected_card !== 'svg' && } ); }; export default connect(({ modules: { cfd }, client }: RootStore) => ({ account_status: client.account_status, - selectTypeOfCard: cfd.selectTypeOfCard, - jurisdiction_selected_card: cfd.jurisdiction_selected_card, real_financial_accounts_existing_data: cfd.real_financial_accounts_existing_data, real_synthetic_accounts_existing_data: cfd.real_synthetic_accounts_existing_data, }))(JurisdictionModalContent); diff --git a/packages/cfd/src/Containers/jurisdiction-modal.tsx b/packages/cfd/src/Containers/jurisdiction-modal.tsx index 45690154fb52..bf10f88d981d 100644 --- a/packages/cfd/src/Containers/jurisdiction-modal.tsx +++ b/packages/cfd/src/Containers/jurisdiction-modal.tsx @@ -47,12 +47,12 @@ type TJurisdictionModalProps = TCompareAccountsReusedProps & { disableApp: () => void; enableApp: () => void; has_real_mt5_login: boolean; + is_authentication_needed: boolean; is_jurisdiction_modal_visible: boolean; is_loading: boolean; is_eu: boolean; is_eu_country: boolean; residence: string; - jurisdiction_selected_card: string; toggleCFDPersonalDetailsModal: () => void; toggleJurisdictionModal: () => void; trading_platform_available_accounts: TTradingPlatformAvailableAccount[]; @@ -68,9 +68,9 @@ const JurisdictionModal = ({ disableApp, enableApp, has_real_mt5_login, + is_authentication_needed, is_jurisdiction_modal_visible, is_eu, - jurisdiction_selected_card, toggleCFDPersonalDetailsModal, toggleJurisdictionModal, trading_platform_available_accounts, @@ -79,7 +79,8 @@ const JurisdictionModal = ({ openPasswordModal, toggleCFDVerificationModal, }: TJurisdictionModalProps) => { - const [checked, setChecked] = React.useState(false); + const [jurisdiction_selected_card, setJurisdictionSelectedCard] = React.useState(''); + const [checked, setChecked] = React.useState(false); const financial_available_accounts = trading_platform_available_accounts.filter( available_account => available_account.market_type === 'financial' @@ -124,7 +125,7 @@ const JurisdictionModal = ({ if (is_eu) { if (poi_poa_verified) { openPasswordModal(type_of_account); - } else { + } else if (is_authentication_needed) { toggleCFDVerificationModal(); } } else if (jurisdiction_selected_card === 'svg') { @@ -140,9 +141,12 @@ const JurisdictionModal = ({ } else { openPasswordModal(type_of_account); } - } else { + } else if (is_authentication_needed) { toggleCFDVerificationModal(); + } else { + openPasswordModal(type_of_account); } + setJurisdictionSelectedCard(''); }; const buttonText = () => { @@ -174,6 +178,8 @@ const JurisdictionModal = ({ > { + toggleJurisdictionModal(); + setJurisdictionSelectedCard(''); + }} footer={