diff --git a/client/index.js b/client/index.js index cc57f9e9905..95d360a9810 100644 --- a/client/index.js +++ b/client/index.js @@ -14,6 +14,7 @@ import 'wp-mediaelement'; * Internal dependencies */ import 'wcpay/data'; +import 'multi-currency/data'; import './style.scss'; import ConnectAccountPage from 'connect-account-page'; import DepositsPage from 'deposits'; diff --git a/includes/multi-currency/client/components/preview-modal/index.js b/includes/multi-currency/client/components/preview-modal/index.js index 60d4fac0a13..0eacb8dc05f 100644 --- a/includes/multi-currency/client/components/preview-modal/index.js +++ b/includes/multi-currency/client/components/preview-modal/index.js @@ -3,7 +3,7 @@ */ import { Modal } from '@wordpress/components'; import { __ } from '@wordpress/i18n'; -import { useStoreSettings } from 'multi-currency/data'; +import { useStoreSettings } from 'multi-currency/data/hooks'; /** * Internal dependencies diff --git a/includes/multi-currency/client/interface/data.js b/includes/multi-currency/client/interface/data.js index 6f295aac9c7..0a48415a4e6 100644 --- a/includes/multi-currency/client/interface/data.js +++ b/includes/multi-currency/client/interface/data.js @@ -8,4 +8,4 @@ export { useSettings, useMultiCurrency } from 'wcpay/data/settings/hooks'; /** * Dependencies from MCCY to WooPayments. */ -export { useCurrencies, useEnabledCurrencies } from 'multi-currency/data'; +export { useCurrencies, useEnabledCurrencies } from 'multi-currency/data/hooks'; diff --git a/includes/multi-currency/client/settings/multi-currency/enabled-currencies-list/index.js b/includes/multi-currency/client/settings/multi-currency/enabled-currencies-list/index.js index 00ac75e0c6e..6bd41d0ba64 100644 --- a/includes/multi-currency/client/settings/multi-currency/enabled-currencies-list/index.js +++ b/includes/multi-currency/client/settings/multi-currency/enabled-currencies-list/index.js @@ -15,7 +15,7 @@ import { useCurrencies, useDefaultCurrency, useEnabledCurrencies, -} from 'multi-currency/data'; +} from 'multi-currency/data/hooks'; import EnabledCurrenciesList from './list'; import EnabledCurrenciesListItem from './list-item'; diff --git a/includes/multi-currency/client/settings/multi-currency/enabled-currencies-list/modal.js b/includes/multi-currency/client/settings/multi-currency/enabled-currencies-list/modal.js index 13610e78c17..6e6c530f78b 100644 --- a/includes/multi-currency/client/settings/multi-currency/enabled-currencies-list/modal.js +++ b/includes/multi-currency/client/settings/multi-currency/enabled-currencies-list/modal.js @@ -13,7 +13,7 @@ import { useAvailableCurrencies, useEnabledCurrencies, useDefaultCurrency, -} from 'multi-currency/data'; +} from 'multi-currency/data/hooks'; import EnabledCurrenciesModalCheckboxList from './modal-checkbox-list'; import EnabledCurrenciesModalCheckbox from './modal-checkbox'; import { ConfirmationModal } from 'multi-currency/interface/components'; diff --git a/includes/multi-currency/client/settings/multi-currency/enabled-currencies-list/test/index.js b/includes/multi-currency/client/settings/multi-currency/enabled-currencies-list/test/index.js deleted file mode 100644 index fb4e89bd92c..00000000000 --- a/includes/multi-currency/client/settings/multi-currency/enabled-currencies-list/test/index.js +++ /dev/null @@ -1,292 +0,0 @@ -/** - * External dependencies - */ -import React from 'react'; -import { cleanup, fireEvent, render, screen } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; - -/** - * Internal dependencies - */ -import EnabledCurrencies from '../'; -import { - useAvailableCurrencies, - useCurrencies, - useDefaultCurrency, - useEnabledCurrencies, -} from 'multi-currency/data'; - -import MultiCurrencySettingsContext from 'multi-currency/context'; - -jest.mock( 'multi-currency/data', () => ( { - useAvailableCurrencies: jest.fn(), - useCurrencies: jest.fn(), - useDefaultCurrency: jest.fn(), - useEnabledCurrencies: jest.fn(), -} ) ); - -const availableCurrencies = { - USD: { - code: 'USD', - rate: 1, - name: 'United States (US) dollar', - id: 'usd', - is_default: true, - flag: '🇺🇸', - symbol: '$', - }, - CAD: { - code: 'CAD', - rate: '1.206823', - name: 'Canadian dollar', - id: 'cad', - is_default: false, - flag: '🇨🇦', - symbol: '$', - }, - GBP: { - code: 'GBP', - rate: '0.708099', - name: 'Pound sterling', - id: 'gbp', - is_default: false, - flag: '🇬🇧', - symbol: '£', - }, - EUR: { - code: 'EUR', - rate: '0.826381', - name: 'Euro', - id: 'eur', - is_default: false, - flag: '🇪🇺', - symbol: '€', - }, - AED: { - code: 'AED', - rate: '3.6732', - name: 'United Arab Emirates dirham', - id: 'aed', - is_default: false, - flag: '🇦🇪', - symbol: 'د.إ', - }, - CDF: { - code: 'CDF', - rate: '2000', - name: 'Congolese franc', - id: 'cdf', - is_default: false, - flag: '🇨🇩', - symbol: 'Fr', - }, - NZD: { - code: 'NZD', - rate: '1.387163', - name: 'New Zealand dollar', - id: 'nzd', - is_default: false, - flag: '🇳🇿', - symbol: '$', - }, - DKK: { - code: 'DKK', - rate: '6.144615', - name: 'Danish krone', - id: 'dkk', - is_default: false, - flag: '🇩🇰', - symbol: 'DKK', - }, - BIF: { - code: 'BIF', - rate: '1974', - name: 'Burundian franc', - id: 'bif', - is_default: false, - flag: '🇧🇮', - symbol: 'Fr', - }, - CLP: { - code: 'CLP', - rate: '706.8', - name: 'Chilean peso', - id: 'clp', - is_default: false, - flag: '🇨🇱', - symbol: '$', - }, -}; - -const enabledCurrencies = { - USD: { - code: 'USD', - rate: 1, - name: 'United States (US) dollar', - id: 'usd', - is_default: true, - flag: '🇺🇸', - symbol: '$', - }, - CAD: { - code: 'CAD', - rate: '1.42', - name: 'Canadian dollar', - id: 'cad', - is_default: false, - flag: '🇨🇦', - symbol: '$', - }, - GBP: { - code: 'GBP', - rate: '0.708099', - name: 'Pound sterling', - id: 'gbp', - is_default: false, - flag: '🇬🇧', - symbol: '£', - }, - EUR: { - code: 'EUR', - rate: '0.826381', - name: 'Euro', - id: 'eur', - is_default: false, - flag: '🇪🇺', - symbol: '€', - }, -}; - -const defaultCurrency = { - code: 'USD', - rate: 1, - name: 'United States (US) dollar', - id: 'usd', - is_default: true, - flag: '🇺🇸', - symbol: '$', -}; - -useCurrencies.mockReturnValue( { - currencies: { - available: availableCurrencies, - enabled: enabledCurrencies, - default: defaultCurrency, - }, - isLoading: false, -} ); - -useAvailableCurrencies.mockReturnValue( availableCurrencies ); - -useDefaultCurrency.mockReturnValue( defaultCurrency ); - -useEnabledCurrencies.mockReturnValue( { - enabledCurrencies: enabledCurrencies, - submitEnabledCurrenciesUpdate: () => {}, -} ); - -const containerContext = { - isSingleCurrencyScreenOpen: false, - currencyCodeToShowSettingsFor: null, - openSingleCurrencySettings: jest.fn(), - closeSingleCurrencySettings: jest.fn(), -}; - -const getContainer = () => { - return render( - - - - ); -}; - -describe( 'Multi-Currency enabled currencies list', () => { - beforeEach( () => { - jest.clearAllMocks(); - global.wcpaySettings = { zeroDecimalCurrencies: [] }; - } ); - - test( 'Enabled currencies list renders correctly', () => { - const { container } = getContainer(); - expect( container ).toMatchSnapshot(); - } ); - - test( 'Available currencies modal renders correctly', () => { - getContainer(); - expect( - screen.queryByRole( 'dialog', { name: /add enabled currencies/i } ) - ).not.toBeInTheDocument(); - fireEvent.click( - screen.getByRole( 'button', { name: /add\/remove currencies/i } ) - ); - const modal = screen.queryByRole( 'dialog', { - name: /add enabled currencies/i, - } ); - expect( modal ).toBeInTheDocument(); - // A different css class is generated on each run due to emotion styled div so the snapshot always fails - // expect( modal ).toMatchSnapshot(); - } ); - - test( 'Remove currency modal doesnt render when theres no dependency', () => { - getContainer(); - expect( - screen.queryByRole( 'dialog', { name: /remove euro/i } ) - ).not.toBeInTheDocument(); - fireEvent.click( - screen.getByRole( 'button', { - name: /remove euro as an enabled currency/i, - } ) - ); - const modal = screen.queryByRole( 'dialog', { name: /remove euro/i } ); - expect( modal ).not.toBeInTheDocument(); - } ); - - test( 'Remove currency modal renders correctly', () => { - window.multiCurrencyPaymentMethodsMap = { - EUR: { - giropay: 'giropay', - sofort: 'Sofort', - sepa_debit: 'SEPA Direct Debit', - }, - }; - getContainer(); - expect( - screen.queryByRole( 'dialog', { name: /remove euro/i } ) - ).not.toBeInTheDocument(); - fireEvent.click( - screen.getByRole( 'button', { - name: /remove euro as an enabled currency/i, - } ) - ); - const modal = screen.queryByRole( 'dialog', { name: /remove euro/i } ); - expect( modal ).toBeInTheDocument(); - expect( modal ).toMatchSnapshot(); - window.multiCurrencyPaymentMethodsMap = undefined; - } ); - - test( 'Modal should clear search term on cancel and update selected', () => { - for ( const name of [ /cancel/i, /update selected/i ] ) { - getContainer(); - userEvent.click( - screen.getByRole( 'button', { - name: /add\/remove currencies/i, - } ) - ); - userEvent.type( screen.getByRole( 'textbox' ), 'dollar' ); - userEvent.click( - screen.getByRole( 'button', { - name, - } ) - ); - userEvent.click( - screen.getByRole( 'button', { - name: /add\/remove currencies/i, - } ) - ); - expect( - screen.queryByDisplayValue( 'dollar' ) - ).not.toBeInTheDocument(); - cleanup(); - } - } ); -} ); diff --git a/includes/multi-currency/client/settings/multi-currency/store-settings/index.js b/includes/multi-currency/client/settings/multi-currency/store-settings/index.js index 18972164698..28b4417175a 100644 --- a/includes/multi-currency/client/settings/multi-currency/store-settings/index.js +++ b/includes/multi-currency/client/settings/multi-currency/store-settings/index.js @@ -11,7 +11,7 @@ import { createInterpolateElement } from '@wordpress/element'; */ import './style.scss'; -import { useStoreSettings } from 'multi-currency/data'; +import { useStoreSettings } from 'multi-currency/data/hooks'; import { LoadableBlock, SettingsSection, diff --git a/includes/multi-currency/client/settings/multi-currency/store-settings/test/index.test.js b/includes/multi-currency/client/settings/multi-currency/store-settings/test/index.test.js index 0aadcd7720d..8850bf428cf 100644 --- a/includes/multi-currency/client/settings/multi-currency/store-settings/test/index.test.js +++ b/includes/multi-currency/client/settings/multi-currency/store-settings/test/index.test.js @@ -7,7 +7,7 @@ import { render, screen, fireEvent } from '@testing-library/react'; /** * Internal dependencies */ -import { useStoreSettings } from 'multi-currency/data'; +import { useStoreSettings } from 'multi-currency/data/hooks'; import StoreSettings from '..'; jest.mock( 'multi-currency/data', () => ( { diff --git a/includes/multi-currency/client/settings/single-currency/index.js b/includes/multi-currency/client/settings/single-currency/index.js index d53fe2933f2..17b29e51549 100644 --- a/includes/multi-currency/client/settings/single-currency/index.js +++ b/includes/multi-currency/client/settings/single-currency/index.js @@ -25,7 +25,7 @@ import { useCurrencySettings, useEnabledCurrencies, useStoreSettings, -} from 'multi-currency/data'; +} from 'multi-currency/data/hooks'; import MultiCurrencySettingsContext from 'multi-currency/context'; import { LoadableBlock, diff --git a/includes/multi-currency/client/settings/single-currency/test/index.test.js b/includes/multi-currency/client/settings/single-currency/test/index.test.js index 0559953e54b..bcec8cd76b7 100644 --- a/includes/multi-currency/client/settings/single-currency/test/index.test.js +++ b/includes/multi-currency/client/settings/single-currency/test/index.test.js @@ -15,7 +15,7 @@ import { useEnabledCurrencies, useCurrencySettings, useStoreSettings, -} from 'multi-currency/data'; +} from 'multi-currency/data/hooks'; import MultiCurrencySettingsContext from 'multi-currency/context'; diff --git a/includes/multi-currency/client/setup/tasks/add-currencies-task/index.js b/includes/multi-currency/client/setup/tasks/add-currencies-task/index.js index f33fb5e95a3..2fd7ec66cfc 100644 --- a/includes/multi-currency/client/setup/tasks/add-currencies-task/index.js +++ b/includes/multi-currency/client/setup/tasks/add-currencies-task/index.js @@ -23,7 +23,7 @@ import { useAvailableCurrencies, useEnabledCurrencies, useDefaultCurrency, -} from 'multi-currency/data'; +} from 'multi-currency/data/hooks'; // eslint-disable-next-line max-len import EnabledCurrenciesModalCheckboxList from 'multi-currency/settings/multi-currency/enabled-currencies-list/modal-checkbox-list'; diff --git a/includes/multi-currency/client/setup/tasks/add-currencies-task/test/index.test.js b/includes/multi-currency/client/setup/tasks/add-currencies-task/test/index.test.js index 7041543dadc..fb0a9f55c92 100644 --- a/includes/multi-currency/client/setup/tasks/add-currencies-task/test/index.test.js +++ b/includes/multi-currency/client/setup/tasks/add-currencies-task/test/index.test.js @@ -16,7 +16,7 @@ import { useAvailableCurrencies, useDefaultCurrency, useEnabledCurrencies, -} from 'multi-currency/data'; +} from 'multi-currency/data/hooks'; import { recommendedCurrencyCodes } from '../constants'; import { __ } from '@wordpress/i18n'; diff --git a/includes/multi-currency/client/setup/tasks/setup-complete-task/index.js b/includes/multi-currency/client/setup/tasks/setup-complete-task/index.js index 6c467ec3a08..255f7fff5af 100644 --- a/includes/multi-currency/client/setup/tasks/setup-complete-task/index.js +++ b/includes/multi-currency/client/setup/tasks/setup-complete-task/index.js @@ -18,7 +18,7 @@ import { WizardTaskContext } from 'multi-currency/interface/functions'; import './index.scss'; -import { useDefaultCurrency } from 'multi-currency/data'; +import { useDefaultCurrency } from 'multi-currency/data/hooks'; const SetupComplete = () => { const { isActive } = useContext( WizardTaskContext ); diff --git a/includes/multi-currency/client/setup/tasks/store-settings-task/index.js b/includes/multi-currency/client/setup/tasks/store-settings-task/index.js index 9a3ca8f0666..16513d05ccf 100644 --- a/includes/multi-currency/client/setup/tasks/store-settings-task/index.js +++ b/includes/multi-currency/client/setup/tasks/store-settings-task/index.js @@ -18,7 +18,7 @@ import { useSettings, useMultiCurrency } from 'multi-currency/interface/data'; import PreviewModal from 'multi-currency/components/preview-modal'; import './index.scss'; -import { useStoreSettings } from 'multi-currency/data'; +import { useStoreSettings } from 'multi-currency/data/hooks'; const StoreSettingsTask = () => { const { storeSettings, submitStoreSettingsUpdate } = useStoreSettings(); diff --git a/includes/multi-currency/client/setup/tasks/store-settings-task/test/index.test.js b/includes/multi-currency/client/setup/tasks/store-settings-task/test/index.test.js index d80e8f8d12a..9cef2cdaff0 100644 --- a/includes/multi-currency/client/setup/tasks/store-settings-task/test/index.test.js +++ b/includes/multi-currency/client/setup/tasks/store-settings-task/test/index.test.js @@ -7,7 +7,7 @@ import { render, screen, fireEvent } from '@testing-library/react'; /** * Internal dependencies */ -import { useCurrencies, useStoreSettings } from 'multi-currency/data'; +import { useCurrencies, useStoreSettings } from 'multi-currency/data/hooks'; import { useSettings, useMultiCurrency } from 'multi-currency/interface/data'; import { WizardTaskContext } from 'multi-currency/interface/functions'; import StoreSettingsTask from '..';