aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/atoms/forms/boolean-field.test.tsx
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2022-06-01 22:37:56 +0200
committerGitHub <noreply@github.com>2022-06-01 22:37:56 +0200
commit0a33a4658d848fe056715c6da053763407845b2a (patch)
tree7c679e54ba4bbadaf0a59bbde780f5742e3b875d /src/components/atoms/forms/boolean-field.test.tsx
parent97031a86ca38890e60ecec79828498b7bb13cbfa (diff)
parent6be20422494e3806fba3d1c5ad5c3e98bd6e67e5 (diff)
chore(a11y): improve website settings accessibility (#17)
The previous switch buttons (using checkbox) was not a11y compliant. So I change my approach to use radio buttons and to clearly separate the two different states. I also convert the Ackee select setting to improve consistency between settings.
Diffstat (limited to 'src/components/atoms/forms/boolean-field.test.tsx')
-rw-r--r--src/components/atoms/forms/boolean-field.test.tsx60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/components/atoms/forms/boolean-field.test.tsx b/src/components/atoms/forms/boolean-field.test.tsx
new file mode 100644
index 0000000..95ec4b1
--- /dev/null
+++ b/src/components/atoms/forms/boolean-field.test.tsx
@@ -0,0 +1,60 @@
+import { render, screen } from '@test-utils';
+import BooleanField from './boolean-field';
+
+describe('BooleanField', () => {
+ it('renders an unchecked checkbox', () => {
+ render(
+ <BooleanField
+ checked={false}
+ id="jest-checkbox"
+ name="jest-checkbox"
+ onChange={() => null}
+ type="checkbox"
+ value="checkbox"
+ />
+ );
+ expect(screen.getByRole('checkbox')).not.toBeChecked();
+ });
+
+ it('renders a checked checkbox', () => {
+ render(
+ <BooleanField
+ checked={true}
+ id="jest-checkbox"
+ name="jest-checkbox"
+ onChange={() => null}
+ type="checkbox"
+ value="checkbox"
+ />
+ );
+ expect(screen.getByRole('checkbox')).toBeChecked();
+ });
+
+ it('renders an unchecked radio', () => {
+ render(
+ <BooleanField
+ checked={false}
+ id="jest-radio"
+ name="jest-radio"
+ onChange={() => null}
+ type="radio"
+ value="radio"
+ />
+ );
+ expect(screen.getByRole('radio')).not.toBeChecked();
+ });
+
+ it('renders a checked radio', () => {
+ render(
+ <BooleanField
+ checked={true}
+ id="jest-radio"
+ name="jest-radio"
+ onChange={() => null}
+ type="radio"
+ value="radio"
+ />
+ );
+ expect(screen.getByRole('radio')).toBeChecked();
+ });
+});