import React from 'react';
import { describe, it, expect, vi } from 'vitest';
import { screen } from '@testing-library/react';
import { render } from '../utils';
import { AdditionalSection } from '../../components/spool-form/AdditionalSection';
import { defaultFormData } from '../../components/spool-form/types';
vi.mock('react-i18next', () => ({
useTranslation: () => ({
t: (key: string) => key,
}),
}));
const baseProps = {
formData: defaultFormData,
updateField: vi.fn(),
spoolCatalog: [],
currencySymbol: '$',
availableCategories: [],
availableMaterialNumbers: [],
globalLowStockThreshold: 20,
};
describe('AdditionalSection', () => {
it('renders SpoolWeightPicker', () => {
render();
// SpoolWeightPicker renders the 'inventory.coreWeight' label
expect(screen.getByText('inventory.coreWeight')).toBeTruthy();
});
it('renders the material number field in internal mode (#2870)', () => {
render();
expect(screen.getByText('inventory.materialNumber')).toBeTruthy();
});
it('hides the material number field in Spoolman mode (#2870)', () => {
// In Spoolman mode the number is the filament-level article_number,
// maintained in Spoolman itself — the form must not offer an input
// whose value would be silently dropped.
render();
expect(screen.queryByText('inventory.materialNumber')).toBeNull();
});
});