-
Notifications
You must be signed in to change notification settings - Fork 415
Expand file tree
/
Copy pathschema-registry-step.test.tsx
More file actions
79 lines (66 loc) · 2.13 KB
/
schema-registry-step.test.tsx
File metadata and controls
79 lines (66 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/**
* Copyright 2025 Redpanda Data, Inc.
*
* Use of this software is governed by the Business Source License
* included in the file https://github.com/redpanda-data/redpanda/blob/dev/licenses/bsl.md
*
* As of the Change Date specified in that file, in accordance with
* the Business Source License, use of this software will be governed
* by the Apache License, Version 2.0
*/
import { zodResolver } from '@hookform/resolvers/zod';
import { Form } from 'components/redpanda-ui/components/form';
import { useForm } from 'react-hook-form';
import { fireEvent, render, screen, waitFor } from 'test-utils';
import { SchemaRegistryStep } from './schema-registry-step';
import { FormSchema, type FormValues, initialValues } from '../model';
const TestWrapper = ({
defaultValues = initialValues,
onFormChange,
}: {
defaultValues?: FormValues;
onFormChange?: (values: FormValues) => void;
}) => {
const form = useForm<FormValues>({
resolver: zodResolver(FormSchema),
defaultValues,
});
if (onFormChange) {
form.watch((values) => {
onFormChange(values as FormValues);
});
}
return (
<Form {...form}>
<form>
<SchemaRegistryStep />
</form>
</Form>
);
};
describe('SchemaRegistryStep', () => {
describe('Toggle switch', () => {
test('should toggle enableSchemaRegistrySync value when switch is clicked', async () => {
let formValues: FormValues | undefined;
render(
<TestWrapper
onFormChange={(values) => {
formValues = values;
}}
/>
);
const switchElement = screen.getByTestId('sr-enable-switch');
expect(switchElement).toHaveAttribute('data-state', 'unchecked');
fireEvent.click(switchElement);
await waitFor(() => {
expect(switchElement).toHaveAttribute('data-state', 'checked');
expect(formValues?.enableSchemaRegistrySync).toBe(true);
});
fireEvent.click(switchElement);
await waitFor(() => {
expect(switchElement).toHaveAttribute('data-state', 'unchecked');
expect(formValues?.enableSchemaRegistrySync).toBe(false);
});
});
});
});