chore: unit test fixes

This commit is contained in:
Bartłomiej Głownia
2023-09-19 12:12:25 +02:00
parent 36243ae571
commit c29b549fbc
13 changed files with 128 additions and 136 deletions
@@ -1,7 +1,7 @@
import { render, screen } from '@testing-library/react';
import { VoteTransactionDialog } from './vote-transaction-dialog';
import { VoteState } from './use-user-vote';
import { VegaTxStatus } from '@vegaprotocol/wallet';
import { VegaTxStatus } from '@vegaprotocol/proposals';
describe('VoteTransactionDialog', () => {
const mockTransactionDialog = jest.fn(({ title, content }) => (
+2 -105
View File
@@ -1,110 +1,7 @@
import { Intent } from '@vegaprotocol/ui-toolkit';
import {
getOrderToastIntent,
getOrderToastTitle,
getRejectionReason,
timeInForceLabel,
} from './utils';
import { timeInForceLabel } from './utils';
import * as Types from '@vegaprotocol/types';
describe('WithdrawalsTable', () => {
describe('getOrderToastTitle', () => {
it('should return the correct title', () => {
expect(getOrderToastTitle(Types.OrderStatus.STATUS_ACTIVE)).toBe(
'Order submitted'
);
expect(getOrderToastTitle(Types.OrderStatus.STATUS_FILLED)).toBe(
'Order filled'
);
expect(
getOrderToastTitle(Types.OrderStatus.STATUS_PARTIALLY_FILLED)
).toBe('Order partially filled');
expect(getOrderToastTitle(Types.OrderStatus.STATUS_PARKED)).toBe(
'Order parked'
);
expect(getOrderToastTitle(Types.OrderStatus.STATUS_STOPPED)).toBe(
'Order stopped'
);
expect(getOrderToastTitle(Types.OrderStatus.STATUS_CANCELLED)).toBe(
'Order cancelled'
);
expect(getOrderToastTitle(Types.OrderStatus.STATUS_EXPIRED)).toBe(
'Order expired'
);
expect(getOrderToastTitle(Types.OrderStatus.STATUS_REJECTED)).toBe(
'Order rejected'
);
expect(getOrderToastTitle(undefined)).toBe(undefined);
});
});
describe('getOrderToastIntent', () => {
it('should return the correct intent', () => {
expect(getOrderToastIntent(Types.OrderStatus.STATUS_PARKED)).toBe(
Intent.Warning
);
expect(getOrderToastIntent(Types.OrderStatus.STATUS_EXPIRED)).toBe(
Intent.Warning
);
expect(
getOrderToastIntent(Types.OrderStatus.STATUS_PARTIALLY_FILLED)
).toBe(Intent.Warning);
expect(getOrderToastIntent(Types.OrderStatus.STATUS_REJECTED)).toBe(
Intent.Danger
);
expect(getOrderToastIntent(Types.OrderStatus.STATUS_STOPPED)).toBe(
Intent.Warning
);
expect(getOrderToastIntent(Types.OrderStatus.STATUS_FILLED)).toBe(
Intent.Success
);
expect(getOrderToastIntent(Types.OrderStatus.STATUS_ACTIVE)).toBe(
Intent.Success
);
expect(getOrderToastIntent(Types.OrderStatus.STATUS_CANCELLED)).toBe(
Intent.Success
);
expect(getOrderToastIntent(undefined)).toBe(undefined);
});
});
describe('getRejectionReason', () => {
it('should return the correct rejection reason for insufficient asset balance', () => {
expect(
getRejectionReason({
rejectionReason:
Types.OrderRejectionReason.ORDER_ERROR_INSUFFICIENT_ASSET_BALANCE,
status: Types.OrderStatus.STATUS_REJECTED,
id: '',
createdAt: undefined,
size: '',
price: '',
timeInForce: Types.OrderTimeInForce.TIME_IN_FORCE_FOK,
side: Types.Side.SIDE_BUY,
marketId: '',
})
).toBe('Insufficient asset balance');
});
it('should return the correct rejection reason when order is stopped', () => {
expect(
getRejectionReason({
rejectionReason: null,
status: Types.OrderStatus.STATUS_STOPPED,
id: '',
createdAt: undefined,
size: '',
price: '',
timeInForce: Types.OrderTimeInForce.TIME_IN_FORCE_FOK,
side: Types.Side.SIDE_BUY,
marketId: '',
})
).toBe(
'Your Fill or Kill (FOK) order was not filled and it has been stopped'
);
});
});
describe('utils', () => {
describe('timeInForceLabel', () => {
it('should return the correct label for time in force', () => {
expect(timeInForceLabel(Types.OrderTimeInForce.TIME_IN_FORCE_FOK)).toBe(
@@ -2,8 +2,11 @@ import { act, renderHook } from '@testing-library/react';
import type { VegaWalletContextShape, Transaction } from '@vegaprotocol/wallet';
import { VegaWalletContext, WalletError } from '@vegaprotocol/wallet';
import type { ReactNode } from 'react';
import { initialState, useVegaTransaction } from './use-vega-transaction';
import { VegaTxStatus } from './types';
import {
initialState,
useVegaTransaction,
VegaTxStatus,
} from './use-vega-transaction';
const mockPubKey = '0x123';
@@ -3,15 +3,13 @@ import type { MockedResponse } from '@apollo/client/testing';
import { MockedProvider } from '@apollo/client/testing';
import type { ReactNode } from 'react';
import { useEthTransactionUpdater } from './use-ethereum-transaction-updater';
import {
DepositBusEventDocument,
VegaWalletContext,
} from '@vegaprotocol/wallet';
import { DepositBusEventDocument } from './__generated__/TransactionResult';
import { VegaWalletContext } from '@vegaprotocol/wallet';
import type {
DepositBusEventSubscription,
DepositBusEventFieldsFragment,
VegaWalletContextShape,
} from '@vegaprotocol/wallet';
} from './__generated__/TransactionResult';
import type { VegaWalletContextShape } from '@vegaprotocol/wallet';
import type { EthTransactionStore } from './use-ethereum-transaction-store';
import { DepositStatus } from '@vegaprotocol/types';
@@ -16,8 +16,8 @@ import type {
} from './use-ethereum-withdraw-approvals-store';
import type { EthTransactionStore } from './use-ethereum-transaction-store';
import { WithdrawalApprovalDocument } from '@vegaprotocol/wallet';
import type { WithdrawalApprovalQuery } from '@vegaprotocol/wallet';
import { WithdrawalApprovalDocument } from './__generated__/WithdrawalApproval';
import type { WithdrawalApprovalQuery } from './__generated__/WithdrawalApproval';
import { NetworkParamsDocument } from '@vegaprotocol/network-parameters';
import type { NetworkParamsQuery } from '@vegaprotocol/network-parameters';
@@ -1,12 +1,12 @@
import { useEthWithdrawApprovalsStore } from './use-ethereum-withdraw-approvals-store';
import type { VegaStoredTxState } from '@vegaprotocol/wallet';
import type { VegaStoredTxState } from './use-vega-transaction-store';
import { ApprovalStatus } from './use-ethereum-withdraw-approvals-store';
import type { EthWithdrawalApprovalState } from './use-ethereum-withdraw-approvals-store';
const mockFindVegaTransaction = jest.fn<VegaStoredTxState, []>();
const mockDismissVegaTransaction = jest.fn();
jest.mock('@vegaprotocol/wallet', () => ({
jest.mock('./use-vega-transaction-store', () => ({
useVegaTransactionStore: {
getState: () => ({
transactions: {
@@ -1,10 +1,10 @@
import { create } from 'zustand';
import produce from 'immer';
import type BigNumber from 'bignumber.js';
import type { WithdrawalBusEventFieldsFragment } from '__generated__/TransactionResult';
import { useVegaTransactionStore } from './use-vega-transaction-toasts';
import type { WithdrawalBusEventFieldsFragment } from './__generated__/TransactionResult';
import { useVegaTransactionStore } from './use-vega-transaction-store';
import type { WithdrawalApprovalQuery } from '__generated__/WithdrawalApproval';
import type { WithdrawalApprovalQuery } from './__generated__/WithdrawalApproval';
import { subscribeWithSelector } from 'zustand/middleware';
export enum ApprovalStatus {
@@ -8,12 +8,13 @@ import type {
VegaStoredTxState,
} from './use-vega-transaction-store';
const mockSendTx = jest.fn<Promise<Partial<TransactionResponse> | null>, []>();
const mockSendTx = jest.fn();
const pubKey = 'pubKey';
const mockDisconnect = jest.fn();
jest.mock('./use-vega-wallet', () => ({
jest.mock('@vegaprotocol/wallet', () => ({
...jest.requireActual('@vegaprotocol/wallet'),
useVegaWallet: () => ({
sendTx: mockSendTx,
pubKey,
@@ -13,8 +13,8 @@ import {
} from '@vegaprotocol/types';
import { VegaTxStatus } from './types';
jest.mock('./utils', () => ({
...jest.requireActual('./utils'),
jest.mock('@vegaprotocol/wallet', () => ({
...jest.requireActual('@vegaprotocol/wallet'),
determineId: jest.fn((v) => v),
}));
@@ -1,4 +1,5 @@
import { render } from '@testing-library/react';
import * as Types from '@vegaprotocol/types';
import {
OrderStatus,
OrderTimeInForce,
@@ -9,6 +10,9 @@ import {
import {
VegaTransactionDetails,
getVegaTransactionContentIntent,
getOrderToastIntent,
getOrderToastTitle,
getRejectionReason,
} from './use-vega-transaction-toasts';
import { Intent } from '@vegaprotocol/ui-toolkit';
import type {
@@ -59,9 +63,8 @@ jest.mock('@vegaprotocol/markets', () => {
};
});
jest.mock('@vegaprotocol/orders', () => {
jest.mock('./__generated__/Orders', () => {
return {
...jest.requireActual('@vegaprotocol/orders'),
useOrderByIdQuery: jest.fn(({ variables: { orderId } }) => {
if (orderId === '0') {
const data: OrderByIdQuery = {
@@ -411,3 +414,99 @@ describe('getVegaTransactionContentIntent', () => {
expect(getVegaTransactionContentIntent(batch).intent).toBe(Intent.Primary);
});
});
describe('getOrderToastTitle', () => {
it('should return the correct title', () => {
expect(getOrderToastTitle(Types.OrderStatus.STATUS_ACTIVE)).toBe(
'Order submitted'
);
expect(getOrderToastTitle(Types.OrderStatus.STATUS_FILLED)).toBe(
'Order filled'
);
expect(getOrderToastTitle(Types.OrderStatus.STATUS_PARTIALLY_FILLED)).toBe(
'Order partially filled'
);
expect(getOrderToastTitle(Types.OrderStatus.STATUS_PARKED)).toBe(
'Order parked'
);
expect(getOrderToastTitle(Types.OrderStatus.STATUS_STOPPED)).toBe(
'Order stopped'
);
expect(getOrderToastTitle(Types.OrderStatus.STATUS_CANCELLED)).toBe(
'Order cancelled'
);
expect(getOrderToastTitle(Types.OrderStatus.STATUS_EXPIRED)).toBe(
'Order expired'
);
expect(getOrderToastTitle(Types.OrderStatus.STATUS_REJECTED)).toBe(
'Order rejected'
);
expect(getOrderToastTitle(undefined)).toBe(undefined);
});
});
describe('getOrderToastIntent', () => {
it('should return the correct intent', () => {
expect(getOrderToastIntent(Types.OrderStatus.STATUS_PARKED)).toBe(
Intent.Warning
);
expect(getOrderToastIntent(Types.OrderStatus.STATUS_EXPIRED)).toBe(
Intent.Warning
);
expect(getOrderToastIntent(Types.OrderStatus.STATUS_PARTIALLY_FILLED)).toBe(
Intent.Warning
);
expect(getOrderToastIntent(Types.OrderStatus.STATUS_REJECTED)).toBe(
Intent.Danger
);
expect(getOrderToastIntent(Types.OrderStatus.STATUS_STOPPED)).toBe(
Intent.Warning
);
expect(getOrderToastIntent(Types.OrderStatus.STATUS_FILLED)).toBe(
Intent.Success
);
expect(getOrderToastIntent(Types.OrderStatus.STATUS_ACTIVE)).toBe(
Intent.Success
);
expect(getOrderToastIntent(Types.OrderStatus.STATUS_CANCELLED)).toBe(
Intent.Success
);
expect(getOrderToastIntent(undefined)).toBe(undefined);
});
});
describe('getRejectionReason', () => {
it('should return the correct rejection reason for insufficient asset balance', () => {
expect(
getRejectionReason({
rejectionReason:
Types.OrderRejectionReason.ORDER_ERROR_INSUFFICIENT_ASSET_BALANCE,
status: Types.OrderStatus.STATUS_REJECTED,
id: '',
createdAt: undefined,
size: '',
price: '',
timeInForce: Types.OrderTimeInForce.TIME_IN_FORCE_FOK,
side: Types.Side.SIDE_BUY,
marketId: '',
})
).toBe('Insufficient asset balance');
});
it('should return the correct rejection reason when order is stopped', () => {
expect(
getRejectionReason({
rejectionReason: null,
status: Types.OrderStatus.STATUS_STOPPED,
id: '',
createdAt: undefined,
size: '',
price: '',
timeInForce: Types.OrderTimeInForce.TIME_IN_FORCE_FOK,
side: Types.Side.SIDE_BUY,
marketId: '',
})
).toBe(
'Your Fill or Kill (FOK) order was not filled and it has been stopped'
);
});
});
@@ -38,7 +38,7 @@ const render = (mocks?: MockedResponse[]) => {
const pubKey = 'pubKey';
jest.mock('./use-vega-wallet', () => ({
jest.mock('@vegaprotocol/wallet', () => ({
useVegaWallet: () => ({
pubKey,
}),
+1 -7
View File
@@ -20,11 +20,5 @@
"jest.config.ts",
"__mocks__"
],
"include": [
"**/*.js",
"**/*.jsx",
"**/*.ts",
"**/*.tsx",
"../proposals/src/lib/proposals-hooks/use-vega-transaction.tsx"
]
"include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"]
}
@@ -3,7 +3,7 @@ import { waitFor } from '@testing-library/react';
import type { MockedResponse } from '@apollo/client/testing';
import { MockedProvider } from '@apollo/client/testing';
import type { ReactNode } from 'react';
import { useCompleteWithdraw } from './use-complete-withdraw.ts';
import { useCompleteWithdraw } from './use-complete-withdraw';
import type { Erc20ApprovalQuery } from './__generated__/Erc20Approval';
import { Erc20ApprovalDocument } from './__generated__/Erc20Approval';
import * as web3 from '@vegaprotocol/web3';