From 6d2816809ea3c05a613a5f894baf20c43fe83593 Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 11 Apr 2022 17:21:43 +0200 Subject: [PATCH] Created switchBox + test, added it to users settings --- src/lib/components/index.ts | 1 + src/lib/components/switchBox.svelte | 34 +++++++++++ .../console/[project]/users/settings.svelte | 17 +++++- tests/unit/components/switchBox.test.ts | 56 +++++++++++++++++++ 4 files changed, 105 insertions(+), 3 deletions(-) create mode 100644 src/lib/components/switchBox.svelte create mode 100644 tests/unit/components/switchBox.test.ts diff --git a/src/lib/components/index.ts b/src/lib/components/index.ts index 21fa3228e..1ab386a80 100644 --- a/src/lib/components/index.ts +++ b/src/lib/components/index.ts @@ -14,3 +14,4 @@ export { default as DropListItem } from './dropListItem.svelte'; export { default as DropListLink } from './dropListLink.svelte'; export { default as Collapsible } from './collapsible.svelte'; export { default as Avatar } from './avatar.svelte'; +export { default as SwitchBox } from './switchBox.svelte'; diff --git a/src/lib/components/switchBox.svelte b/src/lib/components/switchBox.svelte new file mode 100644 index 000000000..0f8d7f24e --- /dev/null +++ b/src/lib/components/switchBox.svelte @@ -0,0 +1,34 @@ + + +
  • + +
  • diff --git a/src/routes/console/[project]/users/settings.svelte b/src/routes/console/[project]/users/settings.svelte index c270642c7..275106066 100644 --- a/src/routes/console/[project]/users/settings.svelte +++ b/src/routes/console/[project]/users/settings.svelte @@ -1,10 +1,21 @@

    Settings

    - - +

    Choose auth methods you wish to use.

    +
      + +
    diff --git a/tests/unit/components/switchBox.test.ts b/tests/unit/components/switchBox.test.ts new file mode 100644 index 000000000..83b6bdfaf --- /dev/null +++ b/tests/unit/components/switchBox.test.ts @@ -0,0 +1,56 @@ +import '@testing-library/jest-dom'; +import { render, fireEvent } from '@testing-library/svelte'; +import { SwitchBox } from '../../../src/lib/components'; +const src = 'https://via.placeholder.com/50'; + +test('shows boolean input', () => { + const { getByText, getByRole, getByAltText } = render(SwitchBox, { + id: 'input', + src, + label: 'Bool', + alt: 'image' + }); + const checkbox = getByRole('switch'); + const img = getByAltText('image'); + + expect(getByText('Bool')).toBeInTheDocument(); + expect(img).toBeInTheDocument(); + expect(checkbox).toBeInTheDocument(); + expect(checkbox).toHaveAttribute('type', 'checkbox'); +}); + +test('shows boolean input - required', () => { + const { getByRole } = render(SwitchBox, { id: 'input', src, label: 'Bool', required: true }); + + expect(getByRole('switch')).toBeRequired(); +}); + +test('shows boolean input - disabled', () => { + const { getByRole } = render(SwitchBox, { id: 'input', src, label: 'Bool', disabled: true }); + + expect(getByRole('switch')).toBeDisabled(); +}); + +test('state', async () => { + const { getByRole, component } = render(SwitchBox, { id: 'input', src, label: 'Bool' }); + const checkbox = getByRole('switch'); + + expect(checkbox).not.toBeChecked(); + expect(component.value).toStrictEqual(false); + + await fireEvent.click(checkbox); + expect(checkbox).toBeChecked(); + expect(component.value).toStrictEqual(true); + + await fireEvent.click(checkbox); + expect(checkbox).not.toBeChecked(); + expect(component.value).toStrictEqual(false); + + component.value = true; + expect(checkbox).toBeChecked(); + expect(component.value).toStrictEqual(true); + + component.value = false; + expect(checkbox).not.toBeChecked(); + expect(component.value).toStrictEqual(false); +});