observatory-settings-tab.test.tsx 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { describe, expect, it, vi } from 'vitest';
  2. import { screen } from '@testing-library/react';
  3. import ObservatorySettingsTab from '@/pages/xray/balancers/ObservatorySettingsTab';
  4. import type { XraySettingsValue } from '@/hooks/useXraySetting';
  5. import { renderWithProviders } from './test-utils';
  6. function renderTab(templateSettings: XraySettingsValue) {
  7. renderWithProviders(
  8. <ObservatorySettingsTab
  9. templateSettings={templateSettings}
  10. mutate={vi.fn()}
  11. />,
  12. );
  13. }
  14. describe('ObservatorySettingsTab', () => {
  15. it('shows one burst settings panel and warns for legacy mixed observers', () => {
  16. renderTab({
  17. routing: {
  18. balancers: [{ tag: 'll', selector: ['proxy-a'], strategy: { type: 'leastLoad' } }],
  19. },
  20. observatory: { subjectSelector: ['stale-regular'] },
  21. burstObservatory: { subjectSelector: ['proxy-a'] },
  22. } as unknown as XraySettingsValue);
  23. expect(screen.getByText(/This config contains both Observatory and Burst Observatory/)).toBeTruthy();
  24. expect(document.querySelector('.ant-segmented')).toBeFalsy();
  25. expect(screen.getByText('Probe Destination')).toBeTruthy();
  26. expect(screen.queryByText('Probe URL')).toBeFalsy();
  27. });
  28. it('shows regular observatory settings for mixed legacy configs that normalize back to leastPing only', () => {
  29. renderTab({
  30. routing: {
  31. balancers: [{ tag: 'lp', selector: ['proxy-b'], strategy: { type: 'leastPing' } }],
  32. },
  33. observatory: { subjectSelector: ['proxy-b'] },
  34. burstObservatory: { subjectSelector: ['stale-burst'] },
  35. } as unknown as XraySettingsValue);
  36. expect(screen.getByText(/This config contains both Observatory and Burst Observatory/)).toBeTruthy();
  37. expect(document.querySelector('.ant-segmented')).toBeFalsy();
  38. expect(screen.getByText('Probe URL')).toBeTruthy();
  39. expect(screen.queryByText('Probe Destination')).toBeFalsy();
  40. });
  41. });