AdditionalSection.test.tsx 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import React from 'react';
  2. import { describe, it, expect, vi } from 'vitest';
  3. import { screen } from '@testing-library/react';
  4. import { render } from '../utils';
  5. import { AdditionalSection } from '../../components/spool-form/AdditionalSection';
  6. import { defaultFormData } from '../../components/spool-form/types';
  7. vi.mock('react-i18next', () => ({
  8. useTranslation: () => ({
  9. t: (key: string) => key,
  10. }),
  11. }));
  12. const baseProps = {
  13. formData: defaultFormData,
  14. updateField: vi.fn(),
  15. spoolCatalog: [],
  16. currencySymbol: '$',
  17. availableCategories: [],
  18. availableMaterialNumbers: [],
  19. globalLowStockThreshold: 20,
  20. };
  21. describe('AdditionalSection', () => {
  22. it('renders SpoolWeightPicker', () => {
  23. render(<AdditionalSection {...baseProps} />);
  24. // SpoolWeightPicker renders the 'inventory.coreWeight' label
  25. expect(screen.getByText('inventory.coreWeight')).toBeTruthy();
  26. });
  27. it('renders the material number field in internal mode (#2870)', () => {
  28. render(<AdditionalSection {...baseProps} spoolmanMode={false} />);
  29. expect(screen.getByText('inventory.materialNumber')).toBeTruthy();
  30. });
  31. it('hides the material number field in Spoolman mode (#2870)', () => {
  32. // In Spoolman mode the number is the filament-level article_number,
  33. // maintained in Spoolman itself — the form must not offer an input
  34. // whose value would be silently dropped.
  35. render(<AdditionalSection {...baseProps} spoolmanMode={true} />);
  36. expect(screen.queryByText('inventory.materialNumber')).toBeNull();
  37. });
  38. });