general-tab.test.tsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { fireEvent, screen } from '@testing-library/react';
  2. import { MemoryRouter } from 'react-router';
  3. import { describe, expect, it, vi } from 'vitest';
  4. import { AllSetting } from '@/models/setting';
  5. import GeneralTab from '@/pages/settings/GeneralTab';
  6. import { renderWithProviders } from './test-utils';
  7. describe('GeneralTab', () => {
  8. it('keeps the stored page size when the field is cleared', () => {
  9. const updateSetting = vi.fn();
  10. renderWithProviders(
  11. <MemoryRouter initialEntries={['/settings']}>
  12. <GeneralTab allSetting={new AllSetting({ pageSize: 25 })} updateSetting={updateSetting} />
  13. </MemoryRouter>,
  14. );
  15. const pageSizeInput = screen.getByDisplayValue('25');
  16. fireEvent.change(pageSizeInput, { target: { value: '' } });
  17. fireEvent.blur(pageSizeInput);
  18. expect(updateSetting).not.toHaveBeenCalled();
  19. expect((pageSizeInput as HTMLInputElement).value).toBe('25');
  20. });
  21. it('forwards typed page sizes unchanged, zero included', () => {
  22. const updateSetting = vi.fn();
  23. renderWithProviders(
  24. <MemoryRouter initialEntries={['/settings']}>
  25. <GeneralTab allSetting={new AllSetting({ pageSize: 25 })} updateSetting={updateSetting} />
  26. </MemoryRouter>,
  27. );
  28. fireEvent.change(screen.getByDisplayValue('25'), { target: { value: '0' } });
  29. expect(updateSetting).toHaveBeenCalledWith({ pageSize: 0 });
  30. });
  31. });