1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-04 00:18:01 +01:00

test: advanced playground error (#4023)

This commit is contained in:
Mateusz Kwasniewski 2023-06-21 08:17:53 +02:00 committed by GitHub
parent 5b34ceff4c
commit a5ee50cfc9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 4 deletions

View File

@ -3,8 +3,10 @@ import { render } from 'utils/testRenderer';
import { UIProviderContainer } from '../../providers/UIProvider/UIProviderContainer'; 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 userEvent from '@testing-library/user-event';
const testComponent = ( const testDisplayComponent = (
<UIProviderContainer> <UIProviderContainer>
<AdvancedPlayground <AdvancedPlayground
FormComponent={props => ( FormComponent={props => (
@ -22,6 +24,18 @@ const testComponent = (
</UIProviderContainer> </UIProviderContainer>
); );
const testEvaluateComponent = (
<UIProviderContainer>
<AdvancedPlayground
FormComponent={props => (
<form onSubmit={props.onSubmit}>
<button>Submit</button>
</form>
)}
/>
</UIProviderContainer>
);
afterEach(() => { afterEach(() => {
const { setValue } = createLocalStorage('AdvancedPlayground:v1', {}); const { setValue } = createLocalStorage('AdvancedPlayground:v1', {});
setValue({}); setValue({});
@ -35,7 +49,7 @@ test('should fetch initial form data from local storage', async () => {
context: { userId: '1' }, context: { userId: '1' },
}); });
render(testComponent); render(testDisplayComponent);
expect(screen.getByText('Unleash playground')).toBeInTheDocument(); expect(screen.getByText('Unleash playground')).toBeInTheDocument();
expect(screen.getByText('["projectA","projectB"]')).toBeInTheDocument(); expect(screen.getByText('["projectA","projectB"]')).toBeInTheDocument();
@ -53,7 +67,7 @@ test('should fetch initial form data from url', async () => {
context: { userId: '1' }, context: { userId: '1' },
}); });
render(testComponent, { render(testDisplayComponent, {
route: '/playground?context=customContext&environments=customEnv&projects=urlProject&sort=name', route: '/playground?context=customContext&environments=customEnv&projects=urlProject&sort=name',
}); });
@ -62,3 +76,26 @@ test('should fetch initial form data from url', async () => {
expect(screen.getByText('["customEnv"]')).toBeInTheDocument(); expect(screen.getByText('["customEnv"]')).toBeInTheDocument();
expect(screen.getByText('"customContext"')).toBeInTheDocument(); expect(screen.getByText('"customContext"')).toBeInTheDocument();
}); });
const server = testServerSetup();
test('should display error on submit', async () => {
testServerRoute(
server,
'/api/admin/playground/advanced',
{
name: 'BadDataError',
details: [{ message: 'some error about too many items' }],
},
'post',
400
);
render(testEvaluateComponent);
const user = userEvent.setup();
const submitButton = screen.getByText('Submit');
user.click(submitButton);
await screen.findByText('some error about too many items');
});

View File

@ -59,7 +59,7 @@ export const AdvancedPlayground: VFC<{
const { evaluateAdvancedPlayground, loading } = usePlaygroundApi(); const { evaluateAdvancedPlayground, loading } = usePlaygroundApi();
useEffect(() => { useEffect(() => {
if (environments.length === 0) { if (environments?.length === 0) {
setEnvironments([resolveDefaultEnvironment(availableEnvironments)]); setEnvironments([resolveDefaultEnvironment(availableEnvironments)]);
} }
}, [availableEnvironments]); }, [availableEnvironments]);