Skip to content

Commit ef4e682

Browse files
committed
[WIP] Ledger page test
1 parent 8723b86 commit ef4e682

File tree

4 files changed

+49
-56
lines changed

4 files changed

+49
-56
lines changed

src/containers/Ledger/LedgerTransactionTable.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ export const LedgerTransactionTable = ({
1717
return (
1818
<>
1919
<ol className="transaction-table">
20-
<li className="transaction-li transaction-li-header">
20+
<li
21+
className="transaction-li transaction-li-header"
22+
data-testid="transaction-li-header"
23+
>
2124
<div className="col col-type">{t('transaction_type')}</div>
2225
<div className="col col-account">{t('account')}</div>
2326
<div className="col col-sequence">{t('sequence_number_short')}</div>

src/containers/Ledger/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ export const Ledger = () => {
9393
const nextIndex = LedgerIndex + 1
9494
const date = new Date(data.close_time)
9595
return (
96-
<div className="ledger-header">
96+
<div className="ledger-header" data-testid="ledger-header">
9797
<div className="ledger-nav">
9898
<RouteLink to={LEDGER_ROUTE} params={{ identifier: previousIndex }}>
9999
<div className="previous">
Lines changed: 43 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { mount } from 'enzyme'
1+
import { render, screen, cleanup } from '@testing-library/react'
22
import { Route } from 'react-router'
33
import mockLedger from './storedLedger.json'
44
import i18n from '../../../i18n/testConfig'
@@ -20,127 +20,117 @@ jest.mock('../../../rippled', () => {
2020
const mockedGetLedger = getLedger
2121

2222
describe('Ledger container', () => {
23-
const createWrapper = (identifier = 38079857) =>
24-
mount(
23+
const renderComponent = (identifier = 38079857) =>
24+
render(
2525
<QuickHarness i18n={i18n} initialEntries={[`/ledgers/${identifier}`]}>
2626
<Route path="/ledgers/:identifier" element={<Ledger />} />
2727
</QuickHarness>,
2828
)
2929

3030
afterEach(() => {
31+
cleanup()
3132
mockedGetLedger.mockReset()
3233
})
3334

3435
it('renders without crashing', () => {
35-
const wrapper = createWrapper()
36-
wrapper.unmount()
36+
renderComponent()
3737
})
3838

3939
it('renders loading', () => {
40-
const wrapper = createWrapper()
41-
expect(wrapper.find('.loader').length).toBe(1)
42-
wrapper.unmount()
40+
renderComponent()
41+
expect(screen.queryAllByTestId('loader')).toBeDefined()
4342
})
4443

4544
it('renders ledger navbar', async () => {
4645
mockedGetLedger.mockImplementation(() => Promise.resolve(mockLedger))
4746

48-
const wrapper = createWrapper()
47+
renderComponent()
4948
await flushPromises()
50-
wrapper.update()
5149

52-
const header = wrapper.find('.ledger-header')
53-
expect(header.length).toBe(1)
54-
expect(header.find('.ledger-nav').length).toBe(1)
55-
expect(header.find('.ledger-nav a').length).toBe(2)
56-
wrapper.unmount()
50+
const header = screen.queryAllByTestId('ledger-header')
51+
expect(header).toBeDefined()
52+
expect(header.queryByTestId('ledger-nav')).toBeDefined()
53+
expect(header.queryByTestId('ledger-nav a')).toHaveLength(2)
5754
})
5855

5956
it('renders ledger summary', async () => {
6057
mockedGetLedger.mockImplementation(() => Promise.resolve(mockLedger))
6158

62-
const wrapper = createWrapper()
59+
renderComponent()
6360
await flushPromises()
64-
wrapper.update()
6561

66-
const summary = wrapper.find('.ledger-header .ledger-info')
62+
const summary = screen.queryAllByTestId('ledger-info')
6763

68-
expect(summary.length).toBe(1)
69-
expect(summary.find('.ledger-cols').length).toBe(1)
70-
expect(summary.find('.ledger-col').length).toBe(3)
71-
expect(summary.find('.ledger-index').length).toBe(1)
72-
expect(summary.find('.closed-date').length).toBe(1)
73-
expect(summary.find('.ledger-hash').length).toBe(1)
74-
75-
wrapper.unmount()
64+
expect(summary).toBeDefined()
65+
expect(summary.queryByTestId('ledger-cols')).toBeDefined()
66+
expect(summary.queryByTestId('ledger-col')).toHaveLength(3)
67+
expect(summary.queryByTestId('ledger-index')).toBeDefined()
68+
expect(summary.queryByTestId('closed-date')).toBeDefined()
69+
expect(summary.queryByTestId('ledger-hash')).toBeDefined()
7670
})
7771

7872
it('renders transaction table header', async () => {
7973
mockedGetLedger.mockImplementation(() => Promise.resolve(mockLedger))
8074

81-
const wrapper = createWrapper()
75+
renderComponent()
8276
await flushPromises()
83-
wrapper.update()
84-
85-
const table = wrapper.find('.transaction-table')
86-
expect(table.length).toBe(1)
87-
expect(table.find('.transaction-li-header').length).toBe(1)
88-
expect(table.find('.transaction-li-header .col-type').length).toBe(1)
89-
expect(table.find('.transaction-li-header .col-account').length).toBe(1)
90-
wrapper.unmount()
77+
78+
const table = screen.queryByTitle('transaction-table')
79+
expect(table).toBeDefined()
80+
expect(table.queryByTestId('transaction-li-header')).toBeDefined()
81+
expect(table.queryByTestId('transaction-li-header .col-type')).toHaveLength(
82+
1,
83+
)
84+
expect(
85+
table.queryByTestId('transaction-li-header .col-account'),
86+
).toBeDefined()
9187
})
9288

9389
it('renders all transactions', async () => {
9490
mockedGetLedger.mockImplementation(() => Promise.resolve(mockLedger))
9591

96-
const wrapper = createWrapper()
92+
renderComponent()
9793
await flushPromises()
98-
wrapper.update()
9994

100-
const table = wrapper.find('.transaction-table')
101-
expect(table.length).toBe(1)
102-
expect(table.find('.transaction-li').length).toBe(
95+
const table = screen.queryByTitle('transaction-table')
96+
expect(table).toBeDefined()
97+
expect(table.queryByTestId('transaction-li')).toHaveLength(
10398
mockLedger.transactions.length + 1, // include the header
10499
)
105-
wrapper.unmount()
106100
})
107101

108102
it('renders 404 page on no match', async () => {
109103
mockedGetLedger.mockImplementation(() =>
110104
Promise.reject(new RippledError('ledger not found', 404)),
111105
)
112106

113-
const wrapper = createWrapper()
107+
renderComponent()
114108
await flushPromises()
115-
wrapper.update()
116109

117-
expect(wrapper.find('.no-match .title').text()).toEqual('ledger_not_found')
118-
wrapper.unmount()
110+
expect(screen.queryByTitle('no-match')).toHaveTextContent(
111+
'ledger_not_found',
112+
)
119113
})
120114

121115
it('renders server error', async () => {
122116
mockedGetLedger.mockImplementation(() =>
123117
Promise.reject(new RippledError('ledger failed', 500)),
124118
)
125119

126-
const wrapper = createWrapper()
120+
renderComponent()
127121
await flushPromises()
128-
wrapper.update()
129122

130-
expect(wrapper.find('.no-match .title').text()).toEqual('generic_error')
131-
wrapper.unmount()
123+
expect(screen.getByTitle('no-match')).toHaveTextContent('generic_error')
132124
})
133125

134126
it('renders invalid id error', async () => {
135127
mockedGetLedger.mockImplementation(() =>
136128
Promise.reject(new RippledError('invalid ledger index/hash', 400)),
137129
)
138130

139-
const wrapper = createWrapper('aaaa')
131+
renderComponent('aaaa')
140132
await flushPromises()
141-
wrapper.update()
142133

143-
expect(wrapper.find('.no-match .title').text()).toEqual('invalid_ledger_id')
144-
wrapper.unmount()
134+
expect(screen.getByTitle('no-match')).toHaveTextContent('invalid_ledger_id')
145135
})
146136
})

src/containers/shared/components/Loader.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import '../css/loader.scss'
66
export const Loader: FC<{ className?: string }> = ({ className }) => {
77
const { t } = useTranslation()
88
return (
9-
<div className={`loader ${className}`}>
9+
<div className={`loader ${className}`} data-testid="loader">
1010
<img src={LoaderPath} alt={t('loading')} title="loader" />
1111
</div>
1212
)

0 commit comments

Comments
 (0)