Skip to content

Commit db63ecb

Browse files
Fixed SQL Terminal Tests
1 parent f224b40 commit db63ecb

1 file changed

Lines changed: 51 additions & 23 deletions

File tree

apps/frontend/src/components/modals/SQLTerminal/SQLTerminal.test.tsx

Lines changed: 51 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,20 @@ describe('SQLTerminal', () => {
1616
cln: mockCLNStoreData,
1717
bkpr: mockBKPRStoreData
1818
};
19+
1920
it('should be in the document', async () => {
2021
await renderWithProviders(<SQLTerminal />, { preloadedState: customMockStore });
2122
expect(screen.getByTestId('terminal-container')).not.toBeEmptyDOMElement();
2223
});
2324

2425
it('should render the terminal container', async () => {
2526
await renderWithProviders(<SQLTerminal />, { preloadedState: customMockStore });
26-
const terminalContainer = screen.getByTestId('terminal-container');
27-
expect(terminalContainer).toBeInTheDocument();
27+
expect(screen.getByTestId('terminal-container')).toBeInTheDocument();
2828
});
2929

3030
it('should display initial placeholder in the input field', async () => {
3131
await renderWithProviders(<SQLTerminal />, { preloadedState: customMockStore });
32-
const inputField = screen.getByTestId('query-input');
33-
expect(inputField).toBeInTheDocument();
32+
expect(screen.getByTestId('query-input')).toBeInTheDocument();
3433
});
3534

3635
it('should update query state on input change', async () => {
@@ -40,16 +39,29 @@ describe('SQLTerminal', () => {
4039
expect(inputField).toHaveValue('select * from bkpr_accountevents');
4140
});
4241

43-
it('should call executeSql and display result in the output area', async () => {
42+
it('should call executeSql and display result as table by default', async () => {
4443
spyOnExecuteSql();
4544
await renderWithProviders(<SQLTerminal />, { preloadedState: customMockStore });
4645
const inputField = screen.getByTestId('query-input');
47-
const executeButton = screen.getByText('Execute');
4846
fireEvent.change(inputField, { target: { value: 'select * from bkpr_accountevents' } });
49-
fireEvent.click(executeButton);
47+
fireEvent.click(screen.getByText('Execute'));
48+
await waitFor(() => {
49+
expect(screen.getByTestId('terminal-container').querySelector('.sql-table')).toBeInTheDocument();
50+
});
51+
});
52+
53+
it('should display result as JSON when switched to JSON view', async () => {
54+
spyOnExecuteSql();
55+
await renderWithProviders(<SQLTerminal />, { preloadedState: customMockStore });
56+
const inputField = screen.getByTestId('query-input');
57+
fireEvent.change(inputField, { target: { value: 'select * from bkpr_accountevents' } });
58+
fireEvent.click(screen.getByText('Execute'));
59+
await waitFor(() => {
60+
expect(screen.getByTestId('terminal-container').querySelector('.sql-table')).toBeInTheDocument();
61+
});
62+
fireEvent.click(screen.getByTestId('toggle-switch'));
5063
await waitFor(() => {
5164
const output = screen.getByTestId('terminal-container').textContent;
52-
expect(output).toContain('select * from bkpr_accountevents');
5365
expect(output).toContain(JSON.stringify(mockSQLResponse.rows, null, 2));
5466
});
5567
});
@@ -58,39 +70,55 @@ describe('SQLTerminal', () => {
5870
spyOnExecuteSql();
5971
await renderWithProviders(<SQLTerminal />, { preloadedState: customMockStore });
6072
const inputField = screen.getByTestId('query-input');
61-
const executeButton = screen.getByText('Execute');
6273
fireEvent.change(inputField, { target: { value: 'select * from non_existing_table' } });
63-
fireEvent.click(executeButton);
74+
fireEvent.click(screen.getByText('Execute'));
6475
await waitFor(() => {
6576
const output = screen.getByTestId('terminal-container').textContent;
6677
expect(output).not.toContain(JSON.stringify(mockSQLResponse.rows, null, 2));
6778
});
6879
});
6980

7081
it('should open the help link when Help button is clicked', async () => {
71-
await renderWithProviders(<SQLTerminal />, { preloadedState: customMockStore });
72-
const helpButton = screen.getByText('Help');
82+
await renderWithProviders(<SQLTerminal />, { preloadedState: customMockStore });
7383
const windowOpenSpy = jest.spyOn(window, 'open').mockImplementation(() => null);
74-
fireEvent.click(helpButton);
84+
fireEvent.click(screen.getByText('Help'));
7585
expect(windowOpenSpy).toHaveBeenCalledWith('https://docs.corelightning.org/reference/sql', '_blank');
7686
});
7787

78-
it('should clear the output when Clear button is clicked', async () => {
88+
it('should clear the query and output when Clear button is clicked', async () => {
7989
spyOnExecuteSql();
8090
await renderWithProviders(<SQLTerminal />, { preloadedState: customMockStore });
8191
const inputField = screen.getByTestId('query-input');
82-
const executeButton = screen.getByText('Execute');
83-
const clearButton = screen.getByText('Clear');
8492
fireEvent.change(inputField, { target: { value: 'select * from bkpr_accountevents' } });
85-
fireEvent.click(executeButton);
93+
fireEvent.click(screen.getByText('Execute'));
8694
await waitFor(() => {
87-
const output = screen.getByTestId('terminal-container').textContent;
88-
expect(output).toContain('select * from bkpr_accountevents');
89-
expect(output).toContain(JSON.stringify(mockSQLResponse.rows, null, 2));
95+
expect(screen.getByTestId('terminal-container').querySelector('.sql-table')).toBeInTheDocument();
9096
});
91-
fireEvent.click(clearButton);
97+
fireEvent.click(screen.getByText('Clear'));
98+
await waitFor(() => {
99+
expect(screen.getByTestId('query-input')).toHaveValue('');
100+
expect(screen.getByTestId('terminal-container').querySelector('.sql-table')).not.toBeInTheDocument();
101+
});
102+
});
92103

93-
const outputAfterClear = screen.getByTestId('terminal-container').textContent;
94-
expect(outputAfterClear).not.toContain('select * from bkpr_accountevents');
104+
it('should reset to Table view when Clear button is clicked', async () => {
105+
spyOnExecuteSql();
106+
await renderWithProviders(<SQLTerminal />, { preloadedState: customMockStore });
107+
const inputField = screen.getByTestId('query-input');
108+
fireEvent.change(inputField, { target: { value: 'select * from bkpr_accountevents' } });
109+
fireEvent.click(screen.getByText('Execute'));
110+
await waitFor(() => {
111+
expect(screen.getByTestId('terminal-container').querySelector('.sql-table')).toBeInTheDocument();
112+
});
113+
fireEvent.click(screen.getByTestId('toggle-switch'));
114+
await waitFor(() => {
115+
expect(screen.getByTestId('terminal-container').querySelector('.sql-table')).not.toBeInTheDocument();
116+
});
117+
fireEvent.click(screen.getByText('Clear'));
118+
fireEvent.change(inputField, { target: { value: 'select * from bkpr_accountevents' } });
119+
fireEvent.click(screen.getByText('Execute'));
120+
await waitFor(() => {
121+
expect(screen.getByTestId('terminal-container').querySelector('.sql-table')).toBeInTheDocument();
122+
});
95123
});
96124
});

0 commit comments

Comments
 (0)