1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-11-10 01:19:53 +01:00
unleash.unleash/frontend/src/component/segments/SegmentFormStepTwo.test.tsx
Thomas Heartman c394800a19
Remove IConstraintWithId type.
The next move is to make id required on IConstraint.
2025-07-18 13:23:18 +02:00

66 lines
1.8 KiB
TypeScript

import { render } from 'utils/testRenderer';
import { screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { testServerRoute, testServerSetup } from 'utils/testServer';
import { SegmentFormStepTwo } from './SegmentFormStepTwo.tsx';
import { vi } from 'vitest';
import {
CREATE_SEGMENT,
UPDATE_PROJECT_SEGMENT,
} from 'component/providers/AccessProvider/permissions';
import type { IConstraint } from 'interfaces/strategy.ts';
const server = testServerSetup();
const setupRoutes = () => {
testServerRoute(server, '/api/admin/context', [
{ name: 'userId' },
{ name: 'appName' },
{ name: 'environment' },
]);
testServerRoute(server, '/api/admin/ui-config', {
flags: {},
});
};
const defaultProps = {
project: undefined,
constraints: [] as IConstraint[],
setConstraints: vi.fn(),
setCurrentStep: vi.fn(),
mode: 'create' as const,
};
describe('SegmentFormStepTwo', () => {
beforeEach(() => {
setupRoutes();
defaultProps.setConstraints.mockClear();
});
test('adding context field through autocomplete updates constraints list', async () => {
const user = userEvent.setup();
render(<SegmentFormStepTwo {...defaultProps} />, {
permissions: [
{ permission: CREATE_SEGMENT },
{ permission: UPDATE_PROJECT_SEGMENT },
],
});
const autocomplete =
await screen.findByPlaceholderText('Select a context');
await user.click(autocomplete);
await waitFor(() => {
expect(screen.getByText('userId')).toBeInTheDocument();
});
await user.click(screen.getByText('userId'));
await waitFor(() => {
expect(defaultProps.setConstraints).toHaveBeenCalled();
});
});
});