Skip to content

Commit 95af1fa

Browse files
committed
test(dropdownsConfig): Add tests on filterOption
1 parent 3ea350e commit 95af1fa

1 file changed

Lines changed: 70 additions & 5 deletions

File tree

src/tests/Cron.updateValue.test.tsx

Lines changed: 70 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ describe('Cron update value test suite', () => {
116116

117117
render(<Cron value={value} setValue={setValue} />)
118118

119-
// Open minute dropdown
119+
// Clear cron value
120120
await waitFor(() => {
121121
user.click(screen.getByText('Clear'))
122122
})
@@ -136,7 +136,7 @@ describe('Cron update value test suite', () => {
136136

137137
render(<Cron value={value} setValue={setValue} clearButtonAction='empty' />)
138138

139-
// Open minute dropdown
139+
// Clear cron value
140140
await waitFor(() => {
141141
user.click(screen.getByText('Clear'))
142142
})
@@ -156,7 +156,7 @@ describe('Cron update value test suite', () => {
156156

157157
render(<Cron value={value} setValue={setValue} shortcuts={true} />)
158158

159-
// Open minute dropdown
159+
// Clear cron value
160160
await waitFor(() => {
161161
user.click(screen.getByText('Clear'))
162162
})
@@ -185,7 +185,7 @@ describe('Cron update value test suite', () => {
185185
/>
186186
)
187187

188-
// Open minute dropdown
188+
// Clear cron value
189189
await waitFor(() => {
190190
user.click(screen.getByText('Clear'))
191191
})
@@ -218,7 +218,7 @@ describe('Cron update value test suite', () => {
218218
/>
219219
)
220220

221-
// Open minute dropdown
221+
// Clear cron value
222222
await waitFor(() => {
223223
user.click(screen.getByText('Clear'))
224224
})
@@ -269,4 +269,69 @@ describe('Cron update value test suite', () => {
269269
// Check dropdowns values still the sane
270270
expect(await screen.findByText('1,4')).toBeVisible()
271271
})
272+
273+
it('should check that week-days and minutes options are filtered with dropdownConfig', async () => {
274+
const user = userEvent.setup()
275+
const value = '4,6 * * * 1'
276+
const setValue = jest.fn()
277+
278+
render(
279+
<Cron
280+
value={value}
281+
setValue={setValue}
282+
dropdownsConfig={{
283+
'minutes': {
284+
// Remove minute 59 and 58
285+
filterOption: ({ value }) => Number(value) < 58,
286+
},
287+
'week-days': {
288+
// Remove sunday
289+
filterOption: ({ value }) => Number(value) !== 0,
290+
},
291+
}}
292+
/>
293+
)
294+
295+
// Open minutes dropdown
296+
await waitFor(() => {
297+
user.click(screen.getByText('4,6'))
298+
})
299+
300+
// Check minutes
301+
await waitFor(() => {
302+
for (let i = 0; i < 60; i++) {
303+
if (i < 58) {
304+
expect(screen.getByText(i)).toBeVisible()
305+
} else {
306+
expect(screen.queryByText(58)).not.toBeInTheDocument()
307+
expect(screen.queryByText(59)).not.toBeInTheDocument()
308+
}
309+
}
310+
})
311+
312+
// Open week-days dropdown
313+
await waitFor(() => {
314+
user.click(screen.getByText('MON'))
315+
})
316+
317+
// Check days of the week
318+
await waitFor(() => {
319+
const days = [
320+
'Sunday',
321+
'Monday',
322+
'Tuesday',
323+
'Wednesday',
324+
'Thursday',
325+
'Friday',
326+
'Saturday',
327+
]
328+
for (let i = 0; i < 7; i++) {
329+
if (i === 0) {
330+
expect(screen.queryByText(days[i])).not.toBeInTheDocument()
331+
} else {
332+
expect(screen.getByText(days[i])).toBeVisible()
333+
}
334+
}
335+
})
336+
})
272337
})

0 commit comments

Comments
 (0)