mirror of
https://github.com/trezor/trezor-suite.git
synced 2026-02-20 00:33:07 +01:00
test(trading): use fixture for provider metadata in selectTradingProviderMetadata test
This commit is contained in:
committed by
vytick
parent
68f5c75281
commit
53075567b7
@@ -3,16 +3,18 @@ import { Provider } from 'react-redux';
|
||||
|
||||
import { combineReducers } from '@reduxjs/toolkit';
|
||||
import { RenderHookOptions, renderHook } from '@testing-library/react';
|
||||
import type { BuyProviderInfo, ExchangeProviderInfo, SellProviderInfo } from 'invity-api';
|
||||
|
||||
import { configureMockStore } from '@suite-common/test-utils';
|
||||
|
||||
import type { BuyInfo } from '../reducers/buyReducer';
|
||||
import type { ExchangeInfo } from '../reducers/exchangeReducer';
|
||||
import type { SellInfo } from '../reducers/sellReducer';
|
||||
import { TradingState, initialState, tradingCommonReducer } from '../reducers/tradingCommonReducer';
|
||||
import { regional } from '../regional';
|
||||
|
||||
/**
|
||||
* TODO This utility is a temporary solution to simplify testing of trading-related hooks and components.
|
||||
* Is should be moved to the correct place defined in the issue below.
|
||||
* @see https://github.com/trezor/trezor-suite/issues/25138
|
||||
*/
|
||||
|
||||
export type TradingTestState = {
|
||||
wallet: {
|
||||
trading: TradingState;
|
||||
@@ -51,19 +53,17 @@ export const createTradingTestState = (
|
||||
/**
|
||||
* Creates a partial BuyInfo state for testing.
|
||||
*
|
||||
* @param providerInfos - Map of provider name to BuyProviderInfo
|
||||
* @returns Partial BuyInfo with minimal required fields
|
||||
* @param providerInfos - Map of provider name to BuyProviderInfo (or Partial for testing)
|
||||
* @returns BuyInfo-like object for testing (with any type for flexibility)
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* const buyInfo = createBuyInfoState({
|
||||
* changenow: getProviderMetadataFixture('changenow') as BuyProviderInfo
|
||||
* changenow: getProviderMetadataFixture('changenow') as any
|
||||
* });
|
||||
* ```
|
||||
*/
|
||||
export const createBuyInfoState = (
|
||||
providerInfos: Record<string, BuyProviderInfo> = {},
|
||||
): Partial<BuyInfo> => ({
|
||||
export const createBuyInfoState = (providerInfos: Record<string, any> = {}): any => ({
|
||||
buyInfo: {
|
||||
country: regional.UNKNOWN_COUNTRY,
|
||||
providers: [],
|
||||
@@ -77,12 +77,10 @@ export const createBuyInfoState = (
|
||||
/**
|
||||
* Creates a partial ExchangeInfo state for testing.
|
||||
*
|
||||
* @param providerInfos - Map of provider name to ExchangeProviderInfo
|
||||
* @returns Partial ExchangeInfo with minimal required fields
|
||||
* @param providerInfos - Map of provider name to ExchangeProviderInfo (or Partial for testing)
|
||||
* @returns ExchangeInfo-like object for testing (with any type for flexibility)
|
||||
*/
|
||||
export const createExchangeInfoState = (
|
||||
providerInfos: Record<string, ExchangeProviderInfo> = {},
|
||||
): Partial<ExchangeInfo> => ({
|
||||
export const createExchangeInfoState = (providerInfos: Record<string, any> = {}): any => ({
|
||||
providerInfos,
|
||||
buyCryptoIds: [],
|
||||
sellCryptoIds: [],
|
||||
@@ -91,12 +89,10 @@ export const createExchangeInfoState = (
|
||||
/**
|
||||
* Creates a partial SellInfo state for testing.
|
||||
*
|
||||
* @param providerInfos - Map of provider name to SellProviderInfo
|
||||
* @returns Partial SellInfo with minimal required fields
|
||||
* @param providerInfos - Map of provider name to SellProviderInfo (or Partial for testing)
|
||||
* @returns SellInfo-like object for testing (with any type for flexibility)
|
||||
*/
|
||||
export const createSellInfoState = (
|
||||
providerInfos: Record<string, SellProviderInfo> = {},
|
||||
): Partial<SellInfo> => ({
|
||||
export const createSellInfoState = (providerInfos: Record<string, any> = {}): any => ({
|
||||
country: regional.UNKNOWN_COUNTRY,
|
||||
providerInfos,
|
||||
supportedCryptoCurrencies: [],
|
||||
|
||||
@@ -143,12 +143,4 @@ describe('useProviderMetadataChangeEffect', () => {
|
||||
unmount();
|
||||
expect(store.getState().wallet.trading.currentProviderMetadata).toBeUndefined();
|
||||
});
|
||||
|
||||
it('should handle undefined quoteName gracefully', () => {
|
||||
const { result } = renderHookWithTradingStore(() =>
|
||||
useProviderMetadataChangeEffect('buy', undefined, true),
|
||||
);
|
||||
|
||||
expect(result.current).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -142,42 +142,12 @@ describe('Testing trading reducer', () => {
|
||||
|
||||
it('should set currentProviderMetadata with complete provider data', () => {
|
||||
const providerMetadata = getProviderMetadataFixture('changenow');
|
||||
|
||||
expect(store.getState().wallet.trading.currentProviderMetadata).toBeUndefined();
|
||||
|
||||
store.dispatch(tradingActions.setCurrentProviderMetadata(providerMetadata));
|
||||
|
||||
expect(store.getState().wallet.trading.currentProviderMetadata).toEqual(
|
||||
providerMetadata,
|
||||
);
|
||||
});
|
||||
|
||||
it('should update currentProviderMetadata when called multiple times', () => {
|
||||
const firstProvider = getProviderMetadataFixture('changenow');
|
||||
const secondProvider = getProviderMetadataFixture('sideshift');
|
||||
|
||||
store.dispatch(tradingActions.setCurrentProviderMetadata(firstProvider));
|
||||
expect(store.getState().wallet.trading.currentProviderMetadata).toEqual(
|
||||
firstProvider,
|
||||
);
|
||||
|
||||
store.dispatch(tradingActions.setCurrentProviderMetadata(secondProvider));
|
||||
expect(store.getState().wallet.trading.currentProviderMetadata).toEqual(
|
||||
secondProvider,
|
||||
);
|
||||
});
|
||||
|
||||
it('should clear currentProviderMetadata when set to undefined', () => {
|
||||
const providerMetadata = getProviderMetadataFixture('changenow');
|
||||
|
||||
store.dispatch(tradingActions.setCurrentProviderMetadata(providerMetadata));
|
||||
expect(store.getState().wallet.trading.currentProviderMetadata).toEqual(
|
||||
providerMetadata,
|
||||
);
|
||||
|
||||
store.dispatch(tradingActions.setCurrentProviderMetadata(undefined));
|
||||
expect(store.getState().wallet.trading.currentProviderMetadata).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
describe('tradingSettings', () => {
|
||||
|
||||
@@ -15,6 +15,7 @@ import coins from '../../__fixtures__/coins.json';
|
||||
import { invityAPIFixtures } from '../../__fixtures__/invityAPI';
|
||||
import platforms from '../../__fixtures__/platforms.json';
|
||||
import { accountBtc, accountEth } from '../../__fixtures__/utils';
|
||||
import { getProviderMetadataFixture } from '../../reducers/__fixtures__/providerMetadata';
|
||||
import { BuyInfo, TradingBuyState } from '../../reducers/buyReducer';
|
||||
import { ExchangeInfo, exchangeInitialState } from '../../reducers/exchangeReducer';
|
||||
import { SellInfo, sellInitialState } from '../../reducers/sellReducer';
|
||||
@@ -1490,12 +1491,7 @@ describe('tradingSelectors', () => {
|
||||
|
||||
describe('selectTradingProviderMetadata', () => {
|
||||
it('should return currentProviderMetadata from state', () => {
|
||||
const providerMetadata = {
|
||||
name: 'TEST_PROVIDER',
|
||||
companyName: 'Test Company',
|
||||
logo: 'https://example.com/logo.png',
|
||||
isActive: true,
|
||||
};
|
||||
const providerMetadata = getProviderMetadataFixture('changenow');
|
||||
state.wallet.trading.currentProviderMetadata = providerMetadata;
|
||||
|
||||
const result = selectTradingProviderMetadata(state);
|
||||
|
||||
Reference in New Issue
Block a user