client-renewal-help.test.tsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { expect, it } from 'vitest';
  2. import { screen, waitFor } from '@testing-library/react';
  3. import ClientFormModal from '@/pages/clients/ClientFormModal';
  4. import { chooseSelectOption, renderWithProviders } from './test-utils';
  5. it('shows only the active renewal mode guidance when switching between interval, weekly, monthly, and disabled', async () => {
  6. renderWithProviders(
  7. <ClientFormModal
  8. open
  9. mode="edit"
  10. client={{ email: '[email protected]', reset: 31, expiryTime: 1893427200000 }}
  11. attachedIds={[1]}
  12. inbounds={[{ id: 1, protocol: 'vless', tag: 'calendar' }]}
  13. save={async () => null}
  14. onOpenChange={() => {}}
  15. />,
  16. );
  17. const mode = screen.getByLabelText('Auto renewal');
  18. const interval = /Adds the configured number of 24-hour days/;
  19. const calendar = /Calendar renewal uses midnight/;
  20. const monthly = /Monthly day 1 means valid through/;
  21. await waitFor(() => expect(screen.queryByText(calendar)).toBeNull());
  22. expect(screen.queryByText(interval)).not.toBeNull();
  23. expect(screen.queryByText(monthly)).toBeNull();
  24. chooseSelectOption(mode.id, 'Calendar weekly');
  25. expect(screen.queryByText(calendar)).not.toBeNull();
  26. expect(screen.queryByText(interval)).toBeNull();
  27. expect(screen.queryByText(monthly)).toBeNull();
  28. chooseSelectOption(mode.id, 'Calendar monthly');
  29. expect(screen.queryByText(calendar)).not.toBeNull();
  30. expect(screen.queryByText(monthly)).not.toBeNull();
  31. expect(screen.queryByText(interval)).toBeNull();
  32. chooseSelectOption(mode.id, 'Disabled');
  33. expect(screen.queryByText(calendar)).toBeNull();
  34. expect(screen.queryByText(interval)).toBeNull();
  35. expect(screen.queryByText(monthly)).toBeNull();
  36. });