diff --git a/web/src/lib/components/SharedLinkFormFields.spec.ts b/web/src/lib/components/SharedLinkFormFields.spec.ts new file mode 100644 index 0000000000..9c65c43833 --- /dev/null +++ b/web/src/lib/components/SharedLinkFormFields.spec.ts @@ -0,0 +1,34 @@ +import { render } from '@testing-library/svelte'; +import userEvent from '@testing-library/user-event'; +import SharedLinkFormFields from './SharedLinkFormFields.svelte'; + +describe('SharedLinkFormFields component', () => { + const isChecked = (element: Element) => + element instanceof HTMLInputElement ? element.checked : element.getAttribute('aria-checked') === 'true'; + + it('turns downloads off when metadata is disabled', async () => { + const { container } = render(SharedLinkFormFields, { + props: { + slug: '', + password: '', + description: '', + allowDownload: true, + allowUpload: false, + showMetadata: true, + expiresAt: null, + }, + }); + const user = userEvent.setup(); + + const switches = Array.from(container.querySelectorAll('[role="switch"], input[type="checkbox"]')); + expect(switches).toHaveLength(3); + + const [showMetadataSwitch, allowDownloadSwitch] = switches; + expect(isChecked(allowDownloadSwitch)).toBe(true); + + await user.click(showMetadataSwitch); + + expect(isChecked(showMetadataSwitch)).toBe(false); + expect(isChecked(allowDownloadSwitch)).toBe(false); + }); +}); diff --git a/web/src/lib/components/SharedLinkFormFields.svelte b/web/src/lib/components/SharedLinkFormFields.svelte new file mode 100644 index 0000000000..1e7b3b754b --- /dev/null +++ b/web/src/lib/components/SharedLinkFormFields.svelte @@ -0,0 +1,65 @@ + + +