Use human-readable message from the API as the default
This commit is contained in:
parent
0a02ba99ed
commit
f13ca06569
2 changed files with 29 additions and 4 deletions
|
@ -38,7 +38,11 @@ describe('<Registration />', () => {
|
||||||
describe('with invalid data', () => {
|
describe('with invalid data', () => {
|
||||||
it('handles 422 errors', async() => {
|
it('handles 422 errors', async() => {
|
||||||
__stub(mock => {
|
__stub(mock => {
|
||||||
mock.onPost('/api/v1/pepe/accounts').reply(422, {});
|
mock.onPost('/api/v1/pepe/accounts').reply(
|
||||||
|
422, {
|
||||||
|
error: 'user_taken',
|
||||||
|
},
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
render(<Registration />);
|
render(<Registration />);
|
||||||
|
@ -50,6 +54,25 @@ describe('<Registration />', () => {
|
||||||
expect(screen.getByTestId('toast')).toHaveTextContent(/this username has already been taken/i);
|
expect(screen.getByTestId('toast')).toHaveTextContent(/this username has already been taken/i);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('handles 422 errors with messages', async() => {
|
||||||
|
__stub(mock => {
|
||||||
|
mock.onPost('/api/v1/pepe/accounts').reply(
|
||||||
|
422, {
|
||||||
|
error: 'user_vip',
|
||||||
|
message: 'This username is unavailable.',
|
||||||
|
},
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
render(<Registration />);
|
||||||
|
|
||||||
|
await waitFor(() => {
|
||||||
|
fireEvent.submit(screen.getByTestId('button'), { preventDefault: () => {} });
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(screen.getByTestId('toast')).toHaveTextContent(/this username is unavailable/i);
|
||||||
|
});
|
||||||
|
|
||||||
it('handles generic errors', async() => {
|
it('handles generic errors', async() => {
|
||||||
__stub(mock => {
|
__stub(mock => {
|
||||||
mock.onPost('/api/v1/pepe/accounts').reply(500, {});
|
mock.onPost('/api/v1/pepe/accounts').reply(500, {});
|
||||||
|
|
|
@ -58,9 +58,11 @@ const Registration = () => {
|
||||||
intl.formatMessage(messages.success, { siteTitle: instance.title }),
|
intl.formatMessage(messages.success, { siteTitle: instance.title }),
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
.catch((error: AxiosError) => {
|
.catch((errorResponse: AxiosError<{ error: string, message: string }>) => {
|
||||||
if (error?.response?.status === 422) {
|
const error = errorResponse.response?.data?.error;
|
||||||
toast.error(intl.formatMessage(messages.usernameTaken));
|
|
||||||
|
if (error) {
|
||||||
|
toast.error(errorResponse.response?.data?.message || intl.formatMessage(messages.usernameTaken));
|
||||||
} else {
|
} else {
|
||||||
toast.error(intl.formatMessage(messages.error));
|
toast.error(intl.formatMessage(messages.error));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue