vega-frontend-monorepo/libs/wallet/src/use-transaction-result.spec.tsx

58 lines
1.8 KiB
TypeScript
Raw Normal View History

Feat/522 close position (#1762) * feat: use close position hook and dialog setup * chore: update wallet tx interface for batch market instruction * feat: add usage of data provider to show relevant order information * feat: render correctly formatted values in close position dialog * feat: make vega tx dialog more flexibly by allowing custom ui for every state of the tx * feat: adjust text alignment and spacing between active orders and order to close * feat: add unit tests * chore: remove stray log * chore: fix lint * chore: ignore ts error for formatter function of vesting chart * feat: split components up, memozie variables * feat: add shared loading state to prevent content popping in * feat: add time in force label * feat: move transaction result hook to wallet lib * feat: prevent being able to close vega tx dialog, must reject tx * chore: add test for useTransactionResult hook * chore: fix positiosn test after hook relocation * Revert "feat: prevent being able to close vega tx dialog, must reject tx" This reverts commit d1ecda69c3c55822bb042320f82b2e1c3833b99a. * chore: add check for order edge to be defined * chore: remove close callback * feat: use tx result state to determine dialog state * chore: update close position hook to check for transaction result * fix: readd types tif selection persistance * feat: convert order event func to be async, use it in close position for more result context * fix: rename utils * chore: adjust error language Co-authored-by: Madalina Raicu <madalina@raygroup.uk>
2022-10-24 18:16:15 +00:00
import type { ReactNode } from 'react';
import type { MockedResponse } from '@apollo/client/testing';
import { MockedProvider } from '@apollo/client/testing';
import { renderHook } from '@testing-library/react';
import * as Types from '@vegaprotocol/types';
import type { TransactionEventSubscription } from './__generated__/TransactionResult';
import { TransactionEventDocument } from './__generated__/TransactionResult';
Feat/522 close position (#1762) * feat: use close position hook and dialog setup * chore: update wallet tx interface for batch market instruction * feat: add usage of data provider to show relevant order information * feat: render correctly formatted values in close position dialog * feat: make vega tx dialog more flexibly by allowing custom ui for every state of the tx * feat: adjust text alignment and spacing between active orders and order to close * feat: add unit tests * chore: remove stray log * chore: fix lint * chore: ignore ts error for formatter function of vesting chart * feat: split components up, memozie variables * feat: add shared loading state to prevent content popping in * feat: add time in force label * feat: move transaction result hook to wallet lib * feat: prevent being able to close vega tx dialog, must reject tx * chore: add test for useTransactionResult hook * chore: fix positiosn test after hook relocation * Revert "feat: prevent being able to close vega tx dialog, must reject tx" This reverts commit d1ecda69c3c55822bb042320f82b2e1c3833b99a. * chore: add check for order edge to be defined * chore: remove close callback * feat: use tx result state to determine dialog state * chore: update close position hook to check for transaction result * fix: readd types tif selection persistance * feat: convert order event func to be async, use it in close position for more result context * fix: rename utils * chore: adjust error language Co-authored-by: Madalina Raicu <madalina@raygroup.uk>
2022-10-24 18:16:15 +00:00
import { useTransactionResult } from './use-transaction-result';
const pubKey = 'test-pubkey';
const txHash = '0x123';
const event = {
__typename: 'TransactionResult',
partyId: pubKey,
hash: txHash,
status: true,
error: null,
};
function setup(mock: MockedResponse) {
const wrapper = ({ children }: { children: ReactNode }) => (
<MockedProvider mocks={[mock]}>{children}</MockedProvider>
);
return renderHook(() => useTransactionResult(), { wrapper });
}
describe('useTransactionResult', () => {
it('resolves when a matching txhash is found', async () => {
const mock: MockedResponse<TransactionEventSubscription> = {
request: {
query: TransactionEventDocument,
variables: {
partyId: pubKey,
},
},
result: {
data: {
busEvents: [
{
type: Types.BusEventType.TransactionResult,
event,
__typename: 'BusEvent',
},
] as TransactionEventSubscription['busEvents'],
},
},
};
const { result } = setup(mock);
expect(result.current).toEqual(expect.any(Function));
const promi = result.current(txHash, pubKey);
expect(typeof promi === 'object' && typeof promi.then === 'function').toBe(
true
);
const res = await promi;
expect(res).toEqual(event);
});
});