Skip to content

Commit bbb46ff

Browse files
Add: Test case for parameter slider component
1 parent 481b1de commit bbb46ff

File tree

4 files changed

+167
-1
lines changed

4 files changed

+167
-1
lines changed

package-lock.json

+111
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+2
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,15 @@
2828
"zod": "^3.23.8"
2929
},
3030
"devDependencies": {
31+
"@testing-library/dom": "^10.4.0",
3132
"@testing-library/jest-dom": "^6.6.3",
3233
"@testing-library/react": "^16.0.1",
3334
"@types/jest": "^29.5.14",
3435
"@types/node": "^20",
3536
"@types/react": "^18",
3637
"@types/react-dom": "^18",
3738
"@types/react-syntax-highlighter": "^15.5.13",
39+
"@types/testing-library__jest-dom": "^5.14.9",
3840
"eslint": "^8",
3941
"eslint-config-next": "15.0.3",
4042
"postcss": "^8",
+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// Import from '@testing-library/react' and '@testing-library/user-event'
2+
import { render } from '@testing-library/react';
3+
import { screen, fireEvent } from '@testing-library/dom';
4+
import '@testing-library/jest-dom'; // This adds the custom matchers like toBeInTheDocument
5+
6+
import { ParameterSlider } from '@/components/controls/parameter-slider';
7+
8+
// Add proper types for the mock function
9+
const mockOnChange = jest.fn() as jest.MockedFunction<(value: number) => void>;
10+
11+
describe('ParameterSlider', () => {
12+
beforeEach(() => {
13+
mockOnChange.mockClear();
14+
});
15+
16+
it('renders with correct label and value', () => {
17+
render(
18+
<ParameterSlider
19+
label="Temperature"
20+
value={0.7}
21+
onChange={mockOnChange}
22+
min={0}
23+
max={1}
24+
step={0.1}
25+
/>
26+
);
27+
28+
expect(screen.getByText('Temperature')).toBeInTheDocument();
29+
expect(screen.getByText('0.7')).toBeInTheDocument();
30+
});
31+
32+
it('calls onChange when slider value changes', () => {
33+
render(
34+
<ParameterSlider
35+
label="Temperature"
36+
value={0.7}
37+
onChange={mockOnChange}
38+
min={0}
39+
max={1}
40+
step={0.1}
41+
/>
42+
);
43+
44+
const slider = screen.getByRole('slider') as HTMLInputElement;
45+
fireEvent.change(slider, { target: { value: '0.8' } });
46+
47+
expect(mockOnChange).toHaveBeenCalledWith(0.8);
48+
});
49+
});

tsconfig.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,9 @@
2323
}
2424
},
2525
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
26-
"exclude": ["node_modules"]
26+
"exclude": ["node_modules"],
27+
"types": [
28+
"jest",
29+
"@testing-library/jest-dom"
30+
]
2731
}

0 commit comments

Comments
 (0)