fleet/frontend/redux/nodes/entities/base/helpers.tests.js
Mike Stone 92d91fdebc Handle server errors (#730)
* consistent error handling

* Display server errors in InviteUserForm

* Handle errors in Form component

* Refactors query form

* creates KolideAce component

* Renders QueryForm from query page and manage hosts page

* Moves ace editor and select targets dropdown to query form

* Render base errors in Form HOC

* LoginPage and ForgotPasswordPage server errors

* Ensure unique key for user blocks

* Adds base error to login form and forgot password form

* Adds base error to query form

* Adds base error to Pack Form

* Adds errors to confirm invite form

* Adds clearErrors action

* clear errors when confirm invite page unmounts

* Handle errors in the App Setting page

* Handle server errors in the User Settings Page

* Handle server errors in the User Management Page
2017-01-05 19:01:17 -05:00

55 lines
1.4 KiB
JavaScript

import expect from 'expect';
import { entitiesExceptID, formatErrorResponse } from './helpers';
describe('reduxConfig - helpers', () => {
describe('#entitiesExceptID', () => {
it('returns an empty object if all ids are deleted', () => {
const entities = {
1: { name: 'Gnar' },
};
const id = 1;
expect(entitiesExceptID(entities, id)).toEqual({});
});
it('removes the object with the key of the specified id', () => {
const entities = {
1: { name: 'Gnar' },
2: { name: 'Dog' },
};
const id = 1;
expect(entitiesExceptID(entities, id)).toEqual({
2: { name: 'Dog' },
});
});
});
describe('#formatErrorResponse', () => {
it('converts the error response to an object for redux state', () => {
const errors = [
{ name: 'first_name',
reason: 'is not valid',
},
{ name: 'first_name',
reason: 'must be something else',
},
{ name: 'last_name',
reason: 'must be changed or something',
},
];
const errorResponse = {
message: {
message: 'Validation Failed',
errors,
},
};
expect(formatErrorResponse(errorResponse)).toEqual({
first_name: 'is not valid, must be something else',
last_name: 'must be changed or something',
});
});
});
});