Skip to content

Commit ff18c06

Browse files
committed
Improve test coverage
1 parent c5b42af commit ff18c06

File tree

1 file changed

+48
-15
lines changed

1 file changed

+48
-15
lines changed

src/queries/__tests__/role.test.tsx

Lines changed: 48 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -192,14 +192,15 @@ describe('supports name option', () => {
192192
describe('supports accessibility states', () => {
193193
describe('disabled', () => {
194194
test('returns a disabled element when required', () => {
195-
const { getByRole } = render(
195+
const { getByRole, queryByRole } = render(
196196
<TouchableOpacity
197197
accessibilityRole="button"
198198
accessibilityState={{ disabled: true }}
199199
/>
200200
);
201201

202202
expect(getByRole('button', { disabled: true })).toBeTruthy();
203+
expect(queryByRole('button', { disabled: false })).toBe(null);
203204
});
204205

205206
test('returns the correct element when only one matches all the requirements', () => {
@@ -224,22 +225,24 @@ describe('supports accessibility states', () => {
224225
});
225226

226227
test('returns an implicitly enabled element', () => {
227-
const { getByRole } = render(
228+
const { getByRole, queryByRole } = render(
228229
<TouchableOpacity accessibilityRole="button"></TouchableOpacity>
229230
);
230231

231232
expect(getByRole('button', { disabled: false })).toBeTruthy();
233+
expect(queryByRole('button', { disabled: true })).toBe(null);
232234
});
233235

234236
test('returns an explicitly enabled element', () => {
235-
const { getByRole } = render(
237+
const { getByRole, queryByRole } = render(
236238
<TouchableOpacity
237239
accessibilityRole="button"
238240
accessibilityState={{ disabled: false }}
239241
></TouchableOpacity>
240242
);
241243

242244
expect(getByRole('button', { disabled: false })).toBeTruthy();
245+
expect(queryByRole('button', { disabled: true })).toBe(null);
243246
});
244247

245248
test('does not return disabled elements when querying for non disabled', () => {
@@ -288,14 +291,15 @@ describe('supports accessibility states', () => {
288291

289292
describe('selected', () => {
290293
test('returns a selected element when required', () => {
291-
const { getByRole } = render(
294+
const { getByRole, queryByRole } = render(
292295
<TouchableOpacity
293296
accessibilityRole="tab"
294297
accessibilityState={{ selected: true }}
295298
/>
296299
);
297300

298301
expect(getByRole('tab', { selected: true })).toBeTruthy();
302+
expect(queryByRole('tab', { selected: false })).toBe(null);
299303
});
300304

301305
test('returns the correct element when only one matches all the requirements', () => {
@@ -320,22 +324,24 @@ describe('supports accessibility states', () => {
320324
});
321325

322326
test('returns an implicitly non selected element', () => {
323-
const { getByRole } = render(
327+
const { getByRole, queryByRole } = render(
324328
<TouchableOpacity accessibilityRole="tab"></TouchableOpacity>
325329
);
326330

327331
expect(getByRole('tab', { selected: false })).toBeTruthy();
332+
expect(queryByRole('tab', { selected: true })).toBe(null);
328333
});
329334

330335
test('returns an explicitly non selected element', () => {
331-
const { getByRole } = render(
336+
const { getByRole, queryByRole } = render(
332337
<TouchableOpacity
333338
accessibilityRole="tab"
334339
accessibilityState={{ selected: false }}
335340
></TouchableOpacity>
336341
);
337342

338343
expect(getByRole('tab', { selected: false })).toBeTruthy();
344+
expect(queryByRole('tab', { selected: true })).toBe(null);
339345
});
340346

341347
test('does not return selected elements when querying for non selected', () => {
@@ -352,25 +358,29 @@ describe('supports accessibility states', () => {
352358

353359
describe('checked', () => {
354360
test('returns a checked element when required', () => {
355-
const { getByRole } = render(
361+
const { getByRole, queryByRole } = render(
356362
<TouchableOpacity
357363
accessibilityRole="checkbox"
358364
accessibilityState={{ checked: true }}
359365
/>
360366
);
361367

362368
expect(getByRole('checkbox', { checked: true })).toBeTruthy();
369+
expect(queryByRole('checkbox', { checked: false })).toBe(null);
370+
expect(queryByRole('checkbox', { checked: 'mixed' })).toBe(null);
363371
});
364372

365373
it('returns `mixed` checkboxes', () => {
366-
const { getByRole } = render(
374+
const { queryByRole, getByRole } = render(
367375
<TouchableOpacity
368376
accessibilityRole="checkbox"
369377
accessibilityState={{ checked: 'mixed' }}
370378
/>
371379
);
372380

373381
expect(getByRole('checkbox', { checked: 'mixed' })).toBeTruthy();
382+
expect(queryByRole('checkbox', { checked: true })).toBe(null);
383+
expect(queryByRole('checkbox', { checked: false })).toBe(null);
374384
});
375385

376386
it('does not return mixed checkboxes when querying for checked: true', () => {
@@ -414,14 +424,15 @@ describe('supports accessibility states', () => {
414424
});
415425

416426
test('returns an explicitly non checked element', () => {
417-
const { getByRole } = render(
427+
const { getByRole, queryByRole } = render(
418428
<TouchableOpacity
419429
accessibilityRole="checkbox"
420430
accessibilityState={{ checked: false }}
421431
></TouchableOpacity>
422432
);
423433

424434
expect(getByRole('checkbox', { checked: false })).toBeTruthy();
435+
expect(queryByRole('checkbox', { checked: true })).toBe(null);
425436
});
426437

427438
test('does not return checked elements when querying for non checked', () => {
@@ -434,18 +445,30 @@ describe('supports accessibility states', () => {
434445

435446
expect(queryByRole('checkbox', { checked: false })).toBe(null);
436447
});
448+
449+
test('does not return mixed elements when querying for non checked', () => {
450+
const { queryByRole } = render(
451+
<TouchableOpacity
452+
accessibilityRole="checkbox"
453+
accessibilityState={{ checked: 'mixed' }}
454+
></TouchableOpacity>
455+
);
456+
457+
expect(queryByRole('checkbox', { checked: false })).toBe(null);
458+
});
437459
});
438460

439461
describe('busy', () => {
440462
test('returns a busy element when required', () => {
441-
const { getByRole } = render(
463+
const { getByRole, queryByRole } = render(
442464
<TouchableOpacity
443465
accessibilityRole="button"
444466
accessibilityState={{ busy: true }}
445467
/>
446468
);
447469

448470
expect(getByRole('button', { busy: true })).toBeTruthy();
471+
expect(queryByRole('button', { busy: false })).toBe(null);
449472
});
450473

451474
test('returns the correct element when only one matches all the requirements', () => {
@@ -470,22 +493,24 @@ describe('supports accessibility states', () => {
470493
});
471494

472495
test('returns an implicitly non busy element', () => {
473-
const { getByRole } = render(
496+
const { getByRole, queryByRole } = render(
474497
<TouchableOpacity accessibilityRole="button"></TouchableOpacity>
475498
);
476499

477500
expect(getByRole('button', { busy: false })).toBeTruthy();
501+
expect(queryByRole('button', { busy: true })).toBe(null);
478502
});
479503

480504
test('returns an explicitly non busy element', () => {
481-
const { getByRole } = render(
505+
const { getByRole, queryByRole } = render(
482506
<TouchableOpacity
483507
accessibilityRole="button"
484508
accessibilityState={{ busy: false }}
485509
></TouchableOpacity>
486510
);
487511

488512
expect(getByRole('button', { busy: false })).toBeTruthy();
513+
expect(queryByRole('button', { busy: true })).toBe(null);
489514
});
490515

491516
test('does not return busy elements when querying for non busy', () => {
@@ -502,14 +527,15 @@ describe('supports accessibility states', () => {
502527

503528
describe('expanded', () => {
504529
test('returns a expanded element when required', () => {
505-
const { getByRole } = render(
530+
const { getByRole, queryByRole } = render(
506531
<TouchableOpacity
507532
accessibilityRole="button"
508533
accessibilityState={{ expanded: true }}
509534
/>
510535
);
511536

512537
expect(getByRole('button', { expanded: true })).toBeTruthy();
538+
expect(queryByRole('button', { expanded: false })).toBe(null);
513539
});
514540

515541
test('returns the correct element when only one matches all the requirements', () => {
@@ -542,14 +568,15 @@ describe('supports accessibility states', () => {
542568
});
543569

544570
test('returns an explicitly non expanded element', () => {
545-
const { getByRole } = render(
571+
const { getByRole, queryByRole } = render(
546572
<TouchableOpacity
547573
accessibilityRole="button"
548574
accessibilityState={{ expanded: false }}
549575
></TouchableOpacity>
550576
);
551577

552578
expect(getByRole('button', { expanded: false })).toBeTruthy();
579+
expect(queryByRole('button', { expanded: true })).toBe(null);
553580
});
554581

555582
test('does not return expanded elements when querying for non expanded', () => {
@@ -565,7 +592,7 @@ describe('supports accessibility states', () => {
565592
});
566593

567594
test('ignores non queried accessibilityState', () => {
568-
const { getByRole } = render(
595+
const { getByRole, queryByRole } = render(
569596
<TouchableOpacity
570597
accessibilityRole="button"
571598
accessibilityState={{
@@ -584,6 +611,12 @@ describe('supports accessibility states', () => {
584611
disabled: true,
585612
})
586613
).toBeTruthy();
614+
expect(
615+
queryByRole('button', {
616+
name: 'Save',
617+
disabled: false,
618+
})
619+
).toBe(null);
587620
});
588621

589622
test('matches an element combining all the options', () => {

0 commit comments

Comments
 (0)