summaryrefslogtreecommitdiff
path: root/src/components/ui/input.test.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/ui/input.test.tsx')
-rw-r--r--src/components/ui/input.test.tsx16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/components/ui/input.test.tsx b/src/components/ui/input.test.tsx
index aabe76f..036352b 100644
--- a/src/components/ui/input.test.tsx
+++ b/src/components/ui/input.test.tsx
@@ -1,6 +1,8 @@
import { render, screen } from '@testing-library/react';
import { describe, expect, test } from 'vitest';
import { Input } from './input';
+import userEvent from '@testing-library/user-event';
+import { vi } from 'vitest';
describe('Input', () => {
test('renders an input with the expected slot attribute', () => {
@@ -18,5 +20,19 @@ describe('Input', () => {
expect(input).toHaveAttribute('type', 'password');
expect(input).toBeDisabled();
});
+
+ test('handles user typing and triggers onChange event', async () => {
+ const user = userEvent.setup();
+ const handleChange = vi.fn();
+
+ render(<Input aria-label="Username" onChange={handleChange} />);
+ const input = screen.getByLabelText('Username');
+
+ await user.type(input, 'hello world');
+
+ expect(input).toHaveValue('hello world');
+ expect(handleChange).toHaveBeenCalled();
+ expect(handleChange).toHaveBeenCalledTimes(11);
+ });
});