rule-form-preserve-fields.test.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. import { describe, it, expect, vi } from 'vitest';
  2. import { fireEvent, screen } from '@testing-library/react';
  3. import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
  4. import RuleFormModal from '@/pages/xray/routing/RuleFormModal';
  5. import { renderWithProviders } from './test-utils';
  6. describe('RuleFormModal edit preserves unsurfaced fields', () => {
  7. it('keeps a field the form does not surface (ruleTag) when saving an edit', () => {
  8. const onConfirm = vi.fn();
  9. const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false } } });
  10. renderWithProviders(
  11. <QueryClientProvider client={queryClient}>
  12. <RuleFormModal
  13. open
  14. rule={{ type: 'field', outboundTag: 'block', ruleTag: 'my-tag', enabled: true }}
  15. inboundTags={[]}
  16. outboundTags={['block']}
  17. balancerTags={[]}
  18. onClose={vi.fn()}
  19. onConfirm={onConfirm}
  20. />
  21. </QueryClientProvider>,
  22. );
  23. fireEvent.click(screen.getByRole('button', { name: 'Save Changes' }));
  24. expect(onConfirm).toHaveBeenCalledTimes(1);
  25. expect(onConfirm.mock.calls[0][0]).toMatchObject({ ruleTag: 'my-tag' });
  26. });
  27. });