Skip to content

Commit 104591e

Browse files
committed
test+sidecar: add unit tests for sidecar wizard
1 parent 0ff874b commit 104591e

File tree

2 files changed

+80
-0
lines changed

2 files changed

+80
-0
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
import React from 'react';
2+
import { fireEvent, waitFor } from '@testing-library/react';
3+
import { renderWithProviders, throwGrpcError } from 'util/tests';
4+
import { createStore, Store } from 'store';
5+
import SidecarWizard from 'components/loop/sidecar/SidecarWizard';
6+
7+
describe('SidecarWizard', () => {
8+
let store: Store;
9+
10+
beforeEach(async () => {
11+
store = createStore();
12+
await store.fetchAllData();
13+
14+
store.registerSidecarView.startRegister();
15+
});
16+
17+
const render = () => {
18+
return renderWithProviders(<SidecarWizard />, store);
19+
};
20+
21+
describe('General behavior', () => {
22+
it('should display the description labels', () => {
23+
const { getByText } = render();
24+
expect(getByText('Step 1 of 2')).toBeInTheDocument();
25+
expect(getByText('Sidecar Registration')).toBeInTheDocument();
26+
});
27+
28+
it('should navigate forward and back through each step', () => {
29+
const { getByText } = render();
30+
expect(getByText('Step 1 of 2')).toBeInTheDocument();
31+
fireEvent.click(getByText('Next'));
32+
expect(getByText('Step 2 of 2')).toBeInTheDocument();
33+
fireEvent.click(getByText('Confirm'));
34+
expect(getByText('Registering Sidecar Ticket')).toBeInTheDocument();
35+
fireEvent.click(getByText('arrow-left.svg'));
36+
expect(getByText('Step 2 of 2')).toBeInTheDocument();
37+
fireEvent.click(getByText('arrow-left.svg'));
38+
expect(getByText('Step 1 of 2')).toBeInTheDocument();
39+
});
40+
});
41+
42+
it('should register a ticket successfully', async () => {
43+
const { getByText, findByText, getByLabelText, changeInput } = render();
44+
expect(getByText('Sidecar Registration')).toBeInTheDocument();
45+
expect(getByLabelText('ticket-input')).toBeInTheDocument();
46+
changeInput('ticket-input', 'sidecar1e84d7ba');
47+
fireEvent.click(getByText('Next'));
48+
expect(getByText('sidecar1e84d7ba')).toBeInTheDocument();
49+
fireEvent.click(getByText('Confirm'));
50+
expect(getByText('Registering Sidecar Ticket')).toBeInTheDocument();
51+
expect(
52+
await findByText('Ticket Registered Successfully', {}, { timeout: 2000 }),
53+
).toBeInTheDocument();
54+
fireEvent.click(getByText('arrow-left.svg'));
55+
expect(store.registerSidecarView.showWizard).toBeFalsy();
56+
});
57+
58+
it('should handle errors when registering a ticket', async () => {
59+
const { getByText, changeInput } = render();
60+
61+
changeInput('ticket-input', 'sidecar1e84d7ba');
62+
fireEvent.click(getByText('Next'));
63+
64+
// throw a GRPC error when getting the account quote
65+
throwGrpcError('reg-err', 'RegisterSidecar');
66+
fireEvent.click(getByText('Confirm'));
67+
68+
// should show error toast
69+
await waitFor(() => {
70+
expect(getByText('Unable to register ticket')).toBeInTheDocument();
71+
expect(getByText('reg-err')).toBeInTheDocument();
72+
});
73+
});
74+
});

app/src/util/tests/sampleData.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -782,6 +782,11 @@ export const poolLeases: POOL.LeasesResponse.AsObject = {
782782
totalAmtPaidSat: 57588,
783783
};
784784

785+
export const poolRegisterSidecar: POOL.SidecarTicket.AsObject = {
786+
ticket:
787+
'sidecar15o9CCm2VAFa14vyskEhpqxmDjiknDgJaKHL6nZdMHv5f9jSpnTM9jSZecJjDzvqgqbeBRLBupcvtL9cPefg3q2iUfcFYMgFCgfxuicf4ZSpZ9ndwYXJ8F7yrw55TSuxMyZMEFyoMh4rWJX95m5iBWeezDXHSXqFzSVmuFCTtp5KXombXZr64waygqNweCUBnvjTDqsz12EnxE1tsmSoHiFYc1t15J8rHNYAucb9yQWRQTRu146QuBbbLtMEPL62Y',
788+
};
789+
785790
// collection of sample API responses
786791
export const sampleApiResponses: Record<string, any> = {
787792
'lnrpc.Lightning.GetInfo': lndGetInfo,
@@ -814,4 +819,5 @@ export const sampleApiResponses: Record<string, any> = {
814819
'poolrpc.Trader.NextBatchInfo': poolNextBatchInfo,
815820
'poolrpc.Trader.NodeRatings': poolNodeRatings,
816821
'poolrpc.Trader.Leases': poolLeases,
822+
'poolrpc.Trader.RegisterSidecar': poolRegisterSidecar,
817823
};

0 commit comments

Comments
 (0)