mirror of
https://github.com/Unleash/unleash.git
synced 2025-06-04 01:18:20 +02:00
refactor: custom render should provide container (#4938)
This commit is contained in:
parent
bed26a938c
commit
80eb6e12c6
@ -5,7 +5,6 @@ import { ChangeRequestState } from 'component/changeRequest/changeRequest.types'
|
|||||||
import userEvent from '@testing-library/user-event';
|
import userEvent from '@testing-library/user-event';
|
||||||
import { testServerRoute, testServerSetup } from 'utils/testServer';
|
import { testServerRoute, testServerSetup } from 'utils/testServer';
|
||||||
import { render } from 'utils/testRenderer';
|
import { render } from 'utils/testRenderer';
|
||||||
import { UIProviderContainer } from 'component/providers/UIProvider/UIProviderContainer';
|
|
||||||
|
|
||||||
const changeRequest = {
|
const changeRequest = {
|
||||||
id: 3,
|
id: 3,
|
||||||
@ -50,11 +49,7 @@ const TestComponent: FC = () => {
|
|||||||
|
|
||||||
test('can edit and save title', async () => {
|
test('can edit and save title', async () => {
|
||||||
const user = userEvent.setup();
|
const user = userEvent.setup();
|
||||||
render(
|
render(<TestComponent />);
|
||||||
<UIProviderContainer>
|
|
||||||
<TestComponent />
|
|
||||||
</UIProviderContainer>,
|
|
||||||
);
|
|
||||||
|
|
||||||
const editButton = await screen.findByTestId('EditIcon');
|
const editButton = await screen.findByTestId('EditIcon');
|
||||||
await user.click(editButton);
|
await user.click(editButton);
|
||||||
|
@ -4,7 +4,6 @@ import { screen, waitFor } from '@testing-library/react';
|
|||||||
import { render } from 'utils/testRenderer';
|
import { render } from 'utils/testRenderer';
|
||||||
import { testServerRoute, testServerSetup } from 'utils/testServer';
|
import { testServerRoute, testServerSetup } from 'utils/testServer';
|
||||||
import { FeatureArchiveDialog } from './FeatureArchiveDialog';
|
import { FeatureArchiveDialog } from './FeatureArchiveDialog';
|
||||||
import { UIProviderContainer } from 'component/providers/UIProvider/UIProviderContainer';
|
|
||||||
|
|
||||||
const server = testServerSetup();
|
const server = testServerSetup();
|
||||||
const setupHappyPathForChangeRequest = () => {
|
const setupHappyPathForChangeRequest = () => {
|
||||||
@ -38,16 +37,14 @@ test('Add single archive feature change to change request', async () => {
|
|||||||
const onConfirm = vi.fn();
|
const onConfirm = vi.fn();
|
||||||
setupHappyPathForChangeRequest();
|
setupHappyPathForChangeRequest();
|
||||||
render(
|
render(
|
||||||
<UIProviderContainer>
|
<FeatureArchiveDialog
|
||||||
<FeatureArchiveDialog
|
featureIds={['featureA']}
|
||||||
featureIds={['featureA']}
|
projectId={'projectId'}
|
||||||
projectId={'projectId'}
|
isOpen={true}
|
||||||
isOpen={true}
|
onClose={onClose}
|
||||||
onClose={onClose}
|
onConfirm={onConfirm}
|
||||||
onConfirm={onConfirm}
|
featuresWithUsage={[]}
|
||||||
featuresWithUsage={[]}
|
/>,
|
||||||
/>
|
|
||||||
</UIProviderContainer>,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(screen.getByText('Archive feature toggle')).toBeInTheDocument();
|
expect(screen.getByText('Archive feature toggle')).toBeInTheDocument();
|
||||||
@ -66,16 +63,14 @@ test('Add multiple archive feature changes to change request', async () => {
|
|||||||
const onConfirm = vi.fn();
|
const onConfirm = vi.fn();
|
||||||
setupHappyPathForChangeRequest();
|
setupHappyPathForChangeRequest();
|
||||||
render(
|
render(
|
||||||
<UIProviderContainer>
|
<FeatureArchiveDialog
|
||||||
<FeatureArchiveDialog
|
featureIds={['featureA', 'featureB']}
|
||||||
featureIds={['featureA', 'featureB']}
|
projectId={'projectId'}
|
||||||
projectId={'projectId'}
|
isOpen={true}
|
||||||
isOpen={true}
|
onClose={onClose}
|
||||||
onClose={onClose}
|
onConfirm={onConfirm}
|
||||||
onConfirm={onConfirm}
|
featuresWithUsage={[]}
|
||||||
featuresWithUsage={[]}
|
/>,
|
||||||
/>
|
|
||||||
</UIProviderContainer>,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await screen.findByText('Archive feature toggles');
|
await screen.findByText('Archive feature toggles');
|
||||||
@ -94,16 +89,14 @@ test('Skip change request', async () => {
|
|||||||
const onConfirm = vi.fn();
|
const onConfirm = vi.fn();
|
||||||
setupHappyPathForChangeRequest();
|
setupHappyPathForChangeRequest();
|
||||||
render(
|
render(
|
||||||
<UIProviderContainer>
|
<FeatureArchiveDialog
|
||||||
<FeatureArchiveDialog
|
featureIds={['featureA', 'featureB']}
|
||||||
featureIds={['featureA', 'featureB']}
|
projectId={'projectId'}
|
||||||
projectId={'projectId'}
|
isOpen={true}
|
||||||
isOpen={true}
|
onClose={onClose}
|
||||||
onClose={onClose}
|
onConfirm={onConfirm}
|
||||||
onConfirm={onConfirm}
|
featuresWithUsage={[]}
|
||||||
featuresWithUsage={[]}
|
/>,
|
||||||
/>
|
|
||||||
</UIProviderContainer>,
|
|
||||||
{ permissions: [{ permission: 'SKIP_CHANGE_REQUEST' }] },
|
{ permissions: [{ permission: 'SKIP_CHANGE_REQUEST' }] },
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1,23 +1,20 @@
|
|||||||
import { createLocalStorage } from 'utils/createLocalStorage';
|
import { createLocalStorage } from 'utils/createLocalStorage';
|
||||||
import { render } from 'utils/testRenderer';
|
import { render } from 'utils/testRenderer';
|
||||||
import { fireEvent, screen } from '@testing-library/react';
|
import { fireEvent, screen } from '@testing-library/react';
|
||||||
import { UIProviderContainer } from '../../providers/UIProvider/UIProviderContainer';
|
|
||||||
import { Search } from './Search';
|
import { Search } from './Search';
|
||||||
import { SEARCH_INPUT } from 'utils/testIds';
|
import { SEARCH_INPUT } from 'utils/testIds';
|
||||||
|
|
||||||
const testDisplayComponent = (
|
const testDisplayComponent = (
|
||||||
<UIProviderContainer>
|
<Search
|
||||||
<Search
|
hasFilters
|
||||||
hasFilters
|
onChange={() => {}}
|
||||||
onChange={() => {}}
|
id='localStorageId'
|
||||||
id='localStorageId'
|
getSearchContext={() => ({
|
||||||
getSearchContext={() => ({
|
data: [],
|
||||||
data: [],
|
columns: [],
|
||||||
columns: [],
|
searchValue: '',
|
||||||
searchValue: '',
|
})}
|
||||||
})}
|
/>
|
||||||
/>
|
|
||||||
</UIProviderContainer>
|
|
||||||
);
|
);
|
||||||
|
|
||||||
test('should read saved query from local storage', async () => {
|
test('should read saved query from local storage', async () => {
|
||||||
|
@ -2,7 +2,6 @@ import { screen } from '@testing-library/react';
|
|||||||
import { render } from 'utils/testRenderer';
|
import { render } from 'utils/testRenderer';
|
||||||
import { StrategyItemContainer } from './StrategyItemContainer';
|
import { StrategyItemContainer } from './StrategyItemContainer';
|
||||||
import { IFeatureStrategy } from 'interfaces/strategy';
|
import { IFeatureStrategy } from 'interfaces/strategy';
|
||||||
import { UIProviderContainer } from '../../providers/UIProvider/UIProviderContainer';
|
|
||||||
|
|
||||||
test('should render strategy name, custom title and description', async () => {
|
test('should render strategy name, custom title and description', async () => {
|
||||||
const strategy: IFeatureStrategy = {
|
const strategy: IFeatureStrategy = {
|
||||||
@ -14,12 +13,10 @@ test('should render strategy name, custom title and description', async () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
render(
|
render(
|
||||||
<UIProviderContainer>
|
<StrategyItemContainer
|
||||||
<StrategyItemContainer
|
strategy={strategy}
|
||||||
strategy={strategy}
|
description={'description'}
|
||||||
description={'description'}
|
/>,
|
||||||
/>
|
|
||||||
</UIProviderContainer>,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(screen.getByText('strategy name')).toBeInTheDocument();
|
expect(screen.getByText('strategy name')).toBeInTheDocument();
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
import { render } from '../../../utils/testRenderer';
|
import { render } from 'utils/testRenderer';
|
||||||
import { screen } from '@testing-library/react';
|
import { screen } from '@testing-library/react';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { testServerRoute, testServerSetup } from '../../../utils/testServer';
|
import { testServerRoute, testServerSetup } from 'utils/testServer';
|
||||||
import { UIProviderContainer } from '../../providers/UIProvider/UIProviderContainer';
|
|
||||||
import { ContextFieldUsage } from './ContextFieldUsage';
|
import { ContextFieldUsage } from './ContextFieldUsage';
|
||||||
|
|
||||||
const server = testServerSetup();
|
const server = testServerSetup();
|
||||||
@ -38,11 +37,7 @@ test('should show usage of context field', async () => {
|
|||||||
setupRoutes();
|
setupRoutes();
|
||||||
|
|
||||||
const contextFieldName = 'appName';
|
const contextFieldName = 'appName';
|
||||||
render(
|
render(<ContextFieldUsage contextName={contextFieldName} />);
|
||||||
<UIProviderContainer>
|
|
||||||
<ContextFieldUsage contextName={contextFieldName} />
|
|
||||||
</UIProviderContainer>,
|
|
||||||
);
|
|
||||||
|
|
||||||
await screen.findByText('Usage of this context field:');
|
await screen.findByText('Usage of this context field:');
|
||||||
await screen.findByText('tests (Gradual rollout)');
|
await screen.findByText('tests (Gradual rollout)');
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
import { render } from '../../../../utils/testRenderer';
|
import { render } from 'utils/testRenderer';
|
||||||
import { screen } from '@testing-library/react';
|
import { screen } from '@testing-library/react';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { testServerRoute, testServerSetup } from '../../../../utils/testServer';
|
import { testServerRoute, testServerSetup } from '../../../../utils/testServer';
|
||||||
import { UIProviderContainer } from 'component/providers/UIProvider/UIProviderContainer';
|
|
||||||
import ContextList from './ContextList';
|
import ContextList from './ContextList';
|
||||||
|
|
||||||
const server = testServerSetup();
|
const server = testServerSetup();
|
||||||
@ -26,9 +25,7 @@ test('should show the count of projects and features used in', async () => {
|
|||||||
setupRoutes();
|
setupRoutes();
|
||||||
|
|
||||||
render(
|
render(
|
||||||
<UIProviderContainer>
|
<ContextList />,
|
||||||
<ContextList />
|
|
||||||
</UIProviderContainer>,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await screen.findByText('2 feature toggles');
|
await screen.findByText('2 feature toggles');
|
||||||
|
@ -3,7 +3,6 @@ import userEvent from '@testing-library/user-event';
|
|||||||
import { render } from 'utils/testRenderer';
|
import { render } from 'utils/testRenderer';
|
||||||
import { AddDependencyDialogue } from './AddDependencyDialogue';
|
import { AddDependencyDialogue } from './AddDependencyDialogue';
|
||||||
import { testServerRoute, testServerSetup } from 'utils/testServer';
|
import { testServerRoute, testServerSetup } from 'utils/testServer';
|
||||||
import { UIProviderContainer } from '../../providers/UIProvider/UIProviderContainer';
|
|
||||||
|
|
||||||
const server = testServerSetup();
|
const server = testServerSetup();
|
||||||
|
|
||||||
@ -39,16 +38,14 @@ test('Delete dependency', async () => {
|
|||||||
let closed = false;
|
let closed = false;
|
||||||
setupApi();
|
setupApi();
|
||||||
render(
|
render(
|
||||||
<UIProviderContainer>
|
<AddDependencyDialogue
|
||||||
<AddDependencyDialogue
|
project='default'
|
||||||
project='default'
|
featureId='child'
|
||||||
featureId='child'
|
showDependencyDialogue={true}
|
||||||
showDependencyDialogue={true}
|
onClose={() => {
|
||||||
onClose={() => {
|
closed = true;
|
||||||
closed = true;
|
}}
|
||||||
}}
|
/>,
|
||||||
/>
|
|
||||||
</UIProviderContainer>,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
const removeDependency = await screen.findByText('Remove');
|
const removeDependency = await screen.findByText('Remove');
|
||||||
@ -68,16 +65,14 @@ test('Add dependency', async () => {
|
|||||||
let closed = false;
|
let closed = false;
|
||||||
setupApi();
|
setupApi();
|
||||||
render(
|
render(
|
||||||
<UIProviderContainer>
|
<AddDependencyDialogue
|
||||||
<AddDependencyDialogue
|
project='default'
|
||||||
project='default'
|
featureId='child'
|
||||||
featureId='child'
|
showDependencyDialogue={true}
|
||||||
showDependencyDialogue={true}
|
onClose={() => {
|
||||||
onClose={() => {
|
closed = true;
|
||||||
closed = true;
|
}}
|
||||||
}}
|
/>,
|
||||||
/>
|
|
||||||
</UIProviderContainer>,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
const removeDependency = await screen.findByText('Remove');
|
const removeDependency = await screen.findByText('Remove');
|
||||||
|
@ -3,7 +3,6 @@ import { render } from 'utils/testRenderer';
|
|||||||
import { testServerRoute, testServerSetup } from 'utils/testServer';
|
import { testServerRoute, testServerSetup } from 'utils/testServer';
|
||||||
import FeatureSettingsProjectConfirm from './FeatureSettingsProjectConfirm';
|
import FeatureSettingsProjectConfirm from './FeatureSettingsProjectConfirm';
|
||||||
import { IFeatureToggle } from 'interfaces/featureToggle';
|
import { IFeatureToggle } from 'interfaces/featureToggle';
|
||||||
import { UIProviderContainer } from '../../../../../providers/UIProvider/UIProviderContainer';
|
|
||||||
import { Route, Routes } from 'react-router-dom';
|
import { Route, Routes } from 'react-router-dom';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import userEvent from '@testing-library/user-event';
|
import userEvent from '@testing-library/user-event';
|
||||||
@ -22,31 +21,29 @@ test('Cannot change project for feature with dependencies', async () => {
|
|||||||
let closed = false;
|
let closed = false;
|
||||||
setupApi();
|
setupApi();
|
||||||
render(
|
render(
|
||||||
<UIProviderContainer>
|
<Routes>
|
||||||
<Routes>
|
<Route
|
||||||
<Route
|
path={'projects/:projectId/features/:featureId/settings'}
|
||||||
path={'projects/:projectId/features/:featureId/settings'}
|
element={
|
||||||
element={
|
<FeatureSettingsProjectConfirm
|
||||||
<FeatureSettingsProjectConfirm
|
projectId={'newProjectId'}
|
||||||
projectId={'newProjectId'}
|
feature={
|
||||||
feature={
|
{
|
||||||
{
|
environments: [],
|
||||||
environments: [],
|
dependencies: [],
|
||||||
dependencies: [],
|
children: ['child'],
|
||||||
children: ['child'],
|
} as unknown as IFeatureToggle
|
||||||
} as unknown as IFeatureToggle
|
}
|
||||||
}
|
onClose={() => {
|
||||||
onClose={() => {
|
closed = true;
|
||||||
closed = true;
|
}}
|
||||||
}}
|
onClick={() => {}}
|
||||||
onClick={() => {}}
|
open={true}
|
||||||
open={true}
|
changeRequests={[]}
|
||||||
changeRequests={[]}
|
/>
|
||||||
/>
|
}
|
||||||
}
|
/>
|
||||||
/>
|
</Routes>,
|
||||||
</Routes>
|
|
||||||
</UIProviderContainer>,
|
|
||||||
{
|
{
|
||||||
route: 'projects/default/features/parent/settings',
|
route: 'projects/default/features/parent/settings',
|
||||||
},
|
},
|
||||||
|
@ -1,39 +1,32 @@
|
|||||||
import { screen } from '@testing-library/react';
|
import { screen } from '@testing-library/react';
|
||||||
import { render } from 'utils/testRenderer';
|
import { render } from 'utils/testRenderer';
|
||||||
import { UIProviderContainer } from '../../providers/UIProvider/UIProviderContainer';
|
|
||||||
import AdvancedPlayground from './AdvancedPlayground';
|
import AdvancedPlayground from './AdvancedPlayground';
|
||||||
import { createLocalStorage } from 'utils/createLocalStorage';
|
import { createLocalStorage } from 'utils/createLocalStorage';
|
||||||
import { testServerRoute, testServerSetup } from 'utils/testServer';
|
import { testServerRoute, testServerSetup } from 'utils/testServer';
|
||||||
import userEvent from '@testing-library/user-event';
|
import userEvent from '@testing-library/user-event';
|
||||||
|
|
||||||
const testDisplayComponent = (
|
const testDisplayComponent = (
|
||||||
<UIProviderContainer>
|
<AdvancedPlayground
|
||||||
<AdvancedPlayground
|
FormComponent={(props) => (
|
||||||
FormComponent={(props) => (
|
<div>
|
||||||
<div>
|
<div data-id='projects'>{JSON.stringify(props.projects)}</div>
|
||||||
<div data-id='projects'>
|
<div data-id='environments'>
|
||||||
{JSON.stringify(props.projects)}
|
{JSON.stringify(props.environments)}
|
||||||
</div>
|
|
||||||
<div data-id='environments'>
|
|
||||||
{JSON.stringify(props.environments)}
|
|
||||||
</div>
|
|
||||||
<div data-id='context'>{JSON.stringify(props.context)}</div>
|
|
||||||
</div>
|
</div>
|
||||||
)}
|
<div data-id='context'>{JSON.stringify(props.context)}</div>
|
||||||
/>
|
</div>
|
||||||
</UIProviderContainer>
|
)}
|
||||||
|
/>
|
||||||
);
|
);
|
||||||
|
|
||||||
const testEvaluateComponent = (
|
const testEvaluateComponent = (
|
||||||
<UIProviderContainer>
|
<AdvancedPlayground
|
||||||
<AdvancedPlayground
|
FormComponent={(props) => (
|
||||||
FormComponent={(props) => (
|
<form onSubmit={props.onSubmit}>
|
||||||
<form onSubmit={props.onSubmit}>
|
<button type='submit'>Submit</button>
|
||||||
<button type='submit'>Submit</button>
|
</form>
|
||||||
</form>
|
)}
|
||||||
)}
|
/>
|
||||||
/>
|
|
||||||
</UIProviderContainer>
|
|
||||||
);
|
);
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
|
@ -1,109 +1,104 @@
|
|||||||
import { screen } from '@testing-library/react';
|
import { screen } from '@testing-library/react';
|
||||||
import { render } from 'utils/testRenderer';
|
import { render } from 'utils/testRenderer';
|
||||||
import { UIProviderContainer } from 'component/providers/UIProvider/UIProviderContainer';
|
|
||||||
import { AdvancedPlaygroundResultsTable } from './AdvancedPlaygroundResultsTable';
|
import { AdvancedPlaygroundResultsTable } from './AdvancedPlaygroundResultsTable';
|
||||||
|
|
||||||
test('should render advanced playground table', async () => {
|
test('should render advanced playground table', async () => {
|
||||||
render(
|
render(
|
||||||
<UIProviderContainer>
|
<AdvancedPlaygroundResultsTable
|
||||||
<AdvancedPlaygroundResultsTable
|
loading={false}
|
||||||
loading={false}
|
features={[
|
||||||
features={[
|
{
|
||||||
{
|
name: 'Infinite',
|
||||||
name: 'Infinite',
|
projectId: 'ChangeReqs',
|
||||||
projectId: 'ChangeReqs',
|
environments: {
|
||||||
environments: {
|
development: [
|
||||||
development: [
|
{
|
||||||
{
|
isEnabled: false,
|
||||||
isEnabled: false,
|
isEnabledInCurrentEnvironment: false,
|
||||||
isEnabledInCurrentEnvironment: false,
|
strategies: {
|
||||||
strategies: {
|
result: true,
|
||||||
result: true,
|
data: [
|
||||||
data: [
|
{
|
||||||
{
|
name: 'flexibleRollout',
|
||||||
name: 'flexibleRollout',
|
id: '45971fe0-1122-40a7-a68c-3a1430c44062',
|
||||||
id: '45971fe0-1122-40a7-a68c-3a1430c44062',
|
disabled: false,
|
||||||
disabled: false,
|
parameters: {
|
||||||
parameters: {
|
groupId: 'Infinite',
|
||||||
groupId: 'Infinite',
|
rollout: '50',
|
||||||
rollout: '50',
|
stickiness: 'default',
|
||||||
stickiness: 'default',
|
|
||||||
},
|
|
||||||
result: {
|
|
||||||
enabled: true,
|
|
||||||
evaluationStatus:
|
|
||||||
'complete',
|
|
||||||
},
|
|
||||||
constraints: [],
|
|
||||||
segments: [],
|
|
||||||
links: {
|
|
||||||
edit: '/projects/ChangeReqs/features/Infinite/strategies/edit?environmenId=development&strategyId=45971fe0-1122-40a7-a68c-3a1430c44062',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
{
|
result: {
|
||||||
name: 'default',
|
enabled: true,
|
||||||
id: 'bf5e35b6-edc1-4e54-8f7e-a6cc8d4f352a',
|
evaluationStatus: 'complete',
|
||||||
disabled: false,
|
|
||||||
parameters: {},
|
|
||||||
result: {
|
|
||||||
enabled: true,
|
|
||||||
evaluationStatus:
|
|
||||||
'complete',
|
|
||||||
},
|
|
||||||
constraints: [],
|
|
||||||
segments: [],
|
|
||||||
links: {
|
|
||||||
edit: '/projects/ChangeReqs/features/Infinite/strategies/edit?environmenId=development&strategyId=bf5e35b6-edc1-4e54-8f7e-a6cc8d4f352a',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
],
|
constraints: [],
|
||||||
},
|
segments: [],
|
||||||
projectId: 'ChangeReqs',
|
links: {
|
||||||
variant: {
|
edit: '/projects/ChangeReqs/features/Infinite/strategies/edit?environmenId=development&strategyId=45971fe0-1122-40a7-a68c-3a1430c44062',
|
||||||
name: 'disabled',
|
},
|
||||||
enabled: false,
|
},
|
||||||
},
|
{
|
||||||
name: 'Infinite',
|
name: 'default',
|
||||||
environment: 'development',
|
id: 'bf5e35b6-edc1-4e54-8f7e-a6cc8d4f352a',
|
||||||
context: {
|
disabled: false,
|
||||||
appName: 'MyApp',
|
parameters: {},
|
||||||
},
|
result: {
|
||||||
variants: [],
|
enabled: true,
|
||||||
|
evaluationStatus: 'complete',
|
||||||
|
},
|
||||||
|
constraints: [],
|
||||||
|
segments: [],
|
||||||
|
links: {
|
||||||
|
edit: '/projects/ChangeReqs/features/Infinite/strategies/edit?environmenId=development&strategyId=bf5e35b6-edc1-4e54-8f7e-a6cc8d4f352a',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
],
|
projectId: 'ChangeReqs',
|
||||||
production: [
|
variant: {
|
||||||
{
|
name: 'disabled',
|
||||||
isEnabled: false,
|
enabled: false,
|
||||||
isEnabledInCurrentEnvironment: false,
|
|
||||||
strategies: {
|
|
||||||
result: false,
|
|
||||||
data: [],
|
|
||||||
},
|
|
||||||
projectId: 'ChangeReqs',
|
|
||||||
variant: {
|
|
||||||
name: 'disabled',
|
|
||||||
enabled: false,
|
|
||||||
},
|
|
||||||
name: 'Infinite',
|
|
||||||
environment: 'production',
|
|
||||||
context: {
|
|
||||||
appName: 'MyApp',
|
|
||||||
},
|
|
||||||
variants: [],
|
|
||||||
},
|
},
|
||||||
],
|
name: 'Infinite',
|
||||||
},
|
environment: 'development',
|
||||||
|
context: {
|
||||||
|
appName: 'MyApp',
|
||||||
|
},
|
||||||
|
variants: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
production: [
|
||||||
|
{
|
||||||
|
isEnabled: false,
|
||||||
|
isEnabledInCurrentEnvironment: false,
|
||||||
|
strategies: {
|
||||||
|
result: false,
|
||||||
|
data: [],
|
||||||
|
},
|
||||||
|
projectId: 'ChangeReqs',
|
||||||
|
variant: {
|
||||||
|
name: 'disabled',
|
||||||
|
enabled: false,
|
||||||
|
},
|
||||||
|
name: 'Infinite',
|
||||||
|
environment: 'production',
|
||||||
|
context: {
|
||||||
|
appName: 'MyApp',
|
||||||
|
},
|
||||||
|
variants: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
]}
|
},
|
||||||
input={{
|
]}
|
||||||
environments: ['development', 'production'],
|
input={{
|
||||||
projects: '*',
|
environments: ['development', 'production'],
|
||||||
context: {
|
projects: '*',
|
||||||
appName: 'MyApp',
|
context: {
|
||||||
},
|
appName: 'MyApp',
|
||||||
}}
|
},
|
||||||
/>
|
}}
|
||||||
</UIProviderContainer>,
|
/>,
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(screen.getByText('Infinite')).toBeInTheDocument();
|
expect(screen.getByText('Infinite')).toBeInTheDocument();
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import { screen } from '@testing-library/react';
|
import { screen } from '@testing-library/react';
|
||||||
import { render } from 'utils/testRenderer';
|
import { render } from 'utils/testRenderer';
|
||||||
import { PlaygroundEnvironmentDiffTable } from './PlaygroundEnvironmentDiffTable';
|
import { PlaygroundEnvironmentDiffTable } from './PlaygroundEnvironmentDiffTable';
|
||||||
import { UIProviderContainer } from '../../../providers/UIProvider/UIProviderContainer';
|
|
||||||
|
|
||||||
const irrelevantDetails = {
|
const irrelevantDetails = {
|
||||||
strategies: {
|
strategies: {
|
||||||
@ -23,38 +22,36 @@ const irrelevantDetails = {
|
|||||||
|
|
||||||
test('should render environment diff table', async () => {
|
test('should render environment diff table', async () => {
|
||||||
render(
|
render(
|
||||||
<UIProviderContainer>
|
<PlaygroundEnvironmentDiffTable
|
||||||
<PlaygroundEnvironmentDiffTable
|
features={{
|
||||||
features={{
|
development: [
|
||||||
development: [
|
{
|
||||||
{
|
name: 'featureA',
|
||||||
name: 'featureA',
|
isEnabled: true,
|
||||||
isEnabled: true,
|
environment: 'development',
|
||||||
environment: 'development',
|
context: {
|
||||||
context: {
|
channel: 'web',
|
||||||
channel: 'web',
|
client: 'clientA',
|
||||||
client: 'clientA',
|
appName: 'myapp',
|
||||||
appName: 'myapp',
|
|
||||||
},
|
|
||||||
...irrelevantDetails,
|
|
||||||
},
|
},
|
||||||
],
|
...irrelevantDetails,
|
||||||
production: [
|
},
|
||||||
{
|
],
|
||||||
name: 'featureA',
|
production: [
|
||||||
isEnabled: false,
|
{
|
||||||
environment: 'production',
|
name: 'featureA',
|
||||||
context: {
|
isEnabled: false,
|
||||||
channel: 'web',
|
environment: 'production',
|
||||||
client: 'clientA',
|
context: {
|
||||||
appName: 'myapp',
|
channel: 'web',
|
||||||
},
|
client: 'clientA',
|
||||||
...irrelevantDetails,
|
appName: 'myapp',
|
||||||
},
|
},
|
||||||
],
|
...irrelevantDetails,
|
||||||
}}
|
},
|
||||||
/>
|
],
|
||||||
</UIProviderContainer>,
|
}}
|
||||||
|
/>,
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(screen.getByText('web')).toBeInTheDocument();
|
expect(screen.getByText('web')).toBeInTheDocument();
|
||||||
|
@ -1,41 +1,38 @@
|
|||||||
import { screen } from '@testing-library/react';
|
import { screen } from '@testing-library/react';
|
||||||
import { render } from 'utils/testRenderer';
|
import { render } from 'utils/testRenderer';
|
||||||
import { PlaygroundEnvironmentTable } from './PlaygroundEnvironmentTable';
|
import { PlaygroundEnvironmentTable } from './PlaygroundEnvironmentTable';
|
||||||
import { UIProviderContainer } from '../../../providers/UIProvider/UIProviderContainer';
|
|
||||||
|
|
||||||
test('should render environment table', async () => {
|
test('should render environment table', async () => {
|
||||||
render(
|
render(
|
||||||
<UIProviderContainer>
|
<PlaygroundEnvironmentTable
|
||||||
<PlaygroundEnvironmentTable
|
features={[
|
||||||
features={[
|
{
|
||||||
{
|
name: 'featureA',
|
||||||
name: 'featureA',
|
strategies: {
|
||||||
strategies: {
|
data: [],
|
||||||
data: [],
|
result: false,
|
||||||
result: false,
|
},
|
||||||
},
|
isEnabled: false,
|
||||||
isEnabled: false,
|
isEnabledInCurrentEnvironment: false,
|
||||||
isEnabledInCurrentEnvironment: false,
|
variants: [],
|
||||||
variants: [],
|
projectId: 'projectA',
|
||||||
projectId: 'projectA',
|
variant: {
|
||||||
variant: {
|
name: 'variantName',
|
||||||
name: 'variantName',
|
enabled: true,
|
||||||
enabled: true,
|
payload: {
|
||||||
payload: {
|
type: 'string',
|
||||||
type: 'string',
|
value: 'variantValue',
|
||||||
value: 'variantValue',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
environment: 'dev',
|
|
||||||
context: {
|
|
||||||
channel: 'web',
|
|
||||||
client: 'clientA',
|
|
||||||
appName: 'myapp',
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
]}
|
environment: 'dev',
|
||||||
/>
|
context: {
|
||||||
</UIProviderContainer>,
|
channel: 'web',
|
||||||
|
client: 'clientA',
|
||||||
|
appName: 'myapp',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>,
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(screen.getByText('web')).toBeInTheDocument();
|
expect(screen.getByText('web')).toBeInTheDocument();
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
import { render } from '../../../utils/testRenderer';
|
import { render } from 'utils/testRenderer';
|
||||||
import { screen } from '@testing-library/react';
|
import { screen } from '@testing-library/react';
|
||||||
import { SegmentTable } from './SegmentTable';
|
import { SegmentTable } from './SegmentTable';
|
||||||
import { testServerRoute, testServerSetup } from '../../../utils/testServer';
|
import { testServerRoute, testServerSetup } from 'utils/testServer';
|
||||||
import { UIProviderContainer } from '../../providers/UIProvider/UIProviderContainer';
|
|
||||||
|
|
||||||
const server = testServerSetup();
|
const server = testServerSetup();
|
||||||
|
|
||||||
@ -31,11 +30,7 @@ const setupRoutes = () => {
|
|||||||
test('should show the count of projects and features used in', async () => {
|
test('should show the count of projects and features used in', async () => {
|
||||||
setupRoutes();
|
setupRoutes();
|
||||||
|
|
||||||
render(
|
render(<SegmentTable />);
|
||||||
<UIProviderContainer>
|
|
||||||
<SegmentTable />
|
|
||||||
</UIProviderContainer>,
|
|
||||||
);
|
|
||||||
|
|
||||||
await screen.findByText('2 feature toggles');
|
await screen.findByText('2 feature toggles');
|
||||||
await screen.findByText('3 projects');
|
await screen.findByText('3 projects');
|
||||||
|
@ -3,7 +3,6 @@ import { render } from 'utils/testRenderer';
|
|||||||
import { testServerRoute, testServerSetup } from 'utils/testServer';
|
import { testServerRoute, testServerSetup } from 'utils/testServer';
|
||||||
import { PasswordTab } from './PasswordTab';
|
import { PasswordTab } from './PasswordTab';
|
||||||
import userEvent from '@testing-library/user-event';
|
import userEvent from '@testing-library/user-event';
|
||||||
import { UIProviderContainer } from '../../../providers/UIProvider/UIProviderContainer';
|
|
||||||
|
|
||||||
const server = testServerSetup();
|
const server = testServerSetup();
|
||||||
testServerRoute(server, '/api/admin/ui-config', {});
|
testServerRoute(server, '/api/admin/ui-config', {});
|
||||||
@ -16,11 +15,7 @@ testServerRoute(server, '/auth/reset/validate-password', {}, 'post');
|
|||||||
test('should render authorization error on missing old password', async () => {
|
test('should render authorization error on missing old password', async () => {
|
||||||
const user = userEvent.setup();
|
const user = userEvent.setup();
|
||||||
|
|
||||||
render(
|
render(<PasswordTab />);
|
||||||
<UIProviderContainer>
|
|
||||||
<PasswordTab />
|
|
||||||
</UIProviderContainer>,
|
|
||||||
);
|
|
||||||
|
|
||||||
await screen.findByText('Change password');
|
await screen.findByText('Change password');
|
||||||
const passwordInput = await screen.findByLabelText('Password');
|
const passwordInput = await screen.findByLabelText('Password');
|
||||||
|
@ -6,6 +6,7 @@ import { ThemeProvider } from 'themes/ThemeProvider';
|
|||||||
import { IPermission } from 'interfaces/user';
|
import { IPermission } from 'interfaces/user';
|
||||||
import { AnnouncerProvider } from 'component/common/Announcer/AnnouncerProvider/AnnouncerProvider';
|
import { AnnouncerProvider } from 'component/common/Announcer/AnnouncerProvider/AnnouncerProvider';
|
||||||
import { AccessProviderMock } from 'component/providers/AccessProvider/AccessProviderMock';
|
import { AccessProviderMock } from 'component/providers/AccessProvider/AccessProviderMock';
|
||||||
|
import { UIProviderContainer } from '../component/providers/UIProvider/UIProviderContainer';
|
||||||
|
|
||||||
export const render = (
|
export const render = (
|
||||||
ui: JSX.Element,
|
ui: JSX.Element,
|
||||||
@ -21,15 +22,17 @@ export const render = (
|
|||||||
window.history.pushState({}, 'Test page', route);
|
window.history.pushState({}, 'Test page', route);
|
||||||
|
|
||||||
const Wrapper: FC = ({ children }) => (
|
const Wrapper: FC = ({ children }) => (
|
||||||
<SWRConfig value={{ provider: () => new Map() }}>
|
<UIProviderContainer>
|
||||||
<AccessProviderMock permissions={permissions}>
|
<SWRConfig value={{ provider: () => new Map() }}>
|
||||||
<ThemeProvider>
|
<AccessProviderMock permissions={permissions}>
|
||||||
<AnnouncerProvider>
|
<ThemeProvider>
|
||||||
<BrowserRouter>{children}</BrowserRouter>
|
<AnnouncerProvider>
|
||||||
</AnnouncerProvider>
|
<BrowserRouter>{children}</BrowserRouter>
|
||||||
</ThemeProvider>
|
</AnnouncerProvider>
|
||||||
</AccessProviderMock>
|
</ThemeProvider>
|
||||||
</SWRConfig>
|
</AccessProviderMock>
|
||||||
|
</SWRConfig>
|
||||||
|
</UIProviderContainer>
|
||||||
);
|
);
|
||||||
|
|
||||||
return rtlRender(ui, {
|
return rtlRender(ui, {
|
||||||
|
Loading…
Reference in New Issue
Block a user