This commit is contained in:
Aerilyn Weber 2026-05-14 19:59:42 +09:00
parent a1801af63b
commit d2a7e652b3
16 changed files with 113 additions and 92 deletions

View file

@ -190,7 +190,7 @@ export function ProductModal({
{error && <p style={{ color: 'var(--danger)', fontSize: 13, marginBottom: 12 }}>{error}</p>}
<form onSubmit={handleSubmit} style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>
<form onSubmit={handleSubmit} noValidate style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>
{/* Basic info */}
<div>
<label style={labelStyle}>Name *</label>

View file

@ -36,10 +36,9 @@ describe('ImportDialog', () => {
expect(screen.getByText('Choose .csv or .json file...')).toBeInTheDocument();
});
it('shows error when upload clicked without file', async () => {
it('Upload button is disabled without file', () => {
render(<ImportDialog {...defaultProps} />);
fireEvent.click(screen.getByText('Upload'));
expect(screen.getByText('Please select a file')).toBeInTheDocument();
expect(screen.getByText('Upload')).toBeDisabled();
});
it('shows file name after selection', () => {

View file

@ -108,11 +108,11 @@ describe('ProductModal', () => {
// Fill nutrition
const numberInputs = screen.getAllByRole('spinbutton');
// serving size is index 0, calories=1, protein=2, carbs=3, fat=4
fireEvent.change(numberInputs[1]!, { target: { value: '165' } });
fireEvent.change(numberInputs[2]!, { target: { value: '31' } });
fireEvent.change(numberInputs[3]!, { target: { value: '0' } });
fireEvent.change(numberInputs[4]!, { target: { value: '3.6' } });
// serving size is index 0, density=1, calories=2, protein=3, carbs=4, fat=5
fireEvent.change(numberInputs[2]!, { target: { value: '165' } });
fireEvent.change(numberInputs[3]!, { target: { value: '31' } });
fireEvent.change(numberInputs[4]!, { target: { value: '0' } });
fireEvent.change(numberInputs[5]!, { target: { value: '3.6' } });
fireEvent.click(screen.getByText('Save'));
@ -141,10 +141,10 @@ describe('ProductModal', () => {
fireEvent.change(screen.getByPlaceholderText('e.g. 100'), { target: { value: '50' } });
const numberInputs = screen.getAllByRole('spinbutton');
fireEvent.change(numberInputs[1]!, { target: { value: '10' } });
fireEvent.change(numberInputs[2]!, { target: { value: '5' } });
fireEvent.change(numberInputs[3]!, { target: { value: '2' } });
fireEvent.change(numberInputs[4]!, { target: { value: '1' } });
fireEvent.change(numberInputs[2]!, { target: { value: '10' } });
fireEvent.change(numberInputs[3]!, { target: { value: '5' } });
fireEvent.change(numberInputs[4]!, { target: { value: '2' } });
fireEvent.change(numberInputs[5]!, { target: { value: '1' } });
fireEvent.click(screen.getByText('Save'));
@ -163,10 +163,10 @@ describe('ProductModal', () => {
fireEvent.change(screen.getByPlaceholderText('e.g. 100'), { target: { value: '50' } });
const numberInputs = screen.getAllByRole('spinbutton');
fireEvent.change(numberInputs[1]!, { target: { value: '10' } });
fireEvent.change(numberInputs[2]!, { target: { value: '5' } });
fireEvent.change(numberInputs[3]!, { target: { value: '2' } });
fireEvent.change(numberInputs[4]!, { target: { value: '1' } });
fireEvent.change(numberInputs[2]!, { target: { value: '10' } });
fireEvent.change(numberInputs[3]!, { target: { value: '5' } });
fireEvent.change(numberInputs[4]!, { target: { value: '2' } });
fireEvent.change(numberInputs[5]!, { target: { value: '1' } });
fireEvent.click(screen.getByText('Save'));
@ -185,10 +185,10 @@ describe('ProductModal', () => {
fireEvent.change(screen.getByPlaceholderText('e.g. 100'), { target: { value: '50' } });
const numberInputs = screen.getAllByRole('spinbutton');
fireEvent.change(numberInputs[1]!, { target: { value: '10' } });
fireEvent.change(numberInputs[2]!, { target: { value: '5' } });
fireEvent.change(numberInputs[3]!, { target: { value: '2' } });
fireEvent.change(numberInputs[4]!, { target: { value: '1' } });
fireEvent.change(numberInputs[2]!, { target: { value: '10' } });
fireEvent.change(numberInputs[3]!, { target: { value: '5' } });
fireEvent.change(numberInputs[4]!, { target: { value: '2' } });
fireEvent.change(numberInputs[5]!, { target: { value: '1' } });
fireEvent.click(screen.getByText('Save'));

View file

@ -1,4 +1,4 @@
import { describe, it, expect, vi } from 'vitest';
import { describe, it, expect, vi, beforeEach } from 'vitest';
import { render, screen } from '@testing-library/react';
const { mockUsePathname } = vi.hoisted(() => ({

View file

@ -1,4 +1,4 @@
import { describe, it, expect, vi } from 'vitest';
import { describe, it, expect, vi, beforeEach } from 'vitest';
import { render, screen, fireEvent, act } from '@testing-library/react';
import { ThemeProvider, useTheme } from '../ThemeProvider';
import { Providers } from '../Providers';

Binary file not shown.