71 lines
1.7 KiB
JavaScript
71 lines
1.7 KiB
JavaScript
/**
|
|
* External dependencies
|
|
*/
|
|
import { dispatch } from '@wordpress/data';
|
|
|
|
/**
|
|
* Internal dependencies
|
|
*/
|
|
import { createNoticesFromResponse } from '../../notices';
|
|
|
|
jest.mock( '@wordpress/data', () => ( {
|
|
dispatch: jest.fn().mockReturnValue( {
|
|
createNotice: jest.fn(),
|
|
} ),
|
|
} ) );
|
|
|
|
describe( 'createNoticesFromResponse', () => {
|
|
beforeEach( () => {
|
|
jest.clearAllMocks();
|
|
} );
|
|
|
|
const { createNotice } = dispatch( 'core/notices' );
|
|
|
|
test( 'should create notice based on message when no errors exist', () => {
|
|
const response = { message: 'Generic response message' };
|
|
|
|
createNoticesFromResponse( response );
|
|
expect( createNotice ).toHaveBeenCalledWith(
|
|
'success',
|
|
response.message
|
|
);
|
|
} );
|
|
|
|
test( 'should create an error notice when an error code and message exists', () => {
|
|
const response = { code: 'invalid_code', message: 'Error message' };
|
|
|
|
createNoticesFromResponse( response );
|
|
expect( createNotice ).toHaveBeenCalledWith(
|
|
'error',
|
|
response.message
|
|
);
|
|
} );
|
|
|
|
test( 'should create error messages for each item', () => {
|
|
const response = {
|
|
errors: {
|
|
item1: [ 'Item1 - Error 1.', 'Item1 - Error 2.' ],
|
|
item2: [ 'Item2 - Error 1.' ],
|
|
},
|
|
error_data: [],
|
|
};
|
|
|
|
createNoticesFromResponse( response );
|
|
expect( createNotice ).toHaveBeenCalledTimes( 2 );
|
|
const call1 = createNotice.mock.calls[ 0 ];
|
|
const call2 = createNotice.mock.calls[ 1 ];
|
|
expect( call1 ).toEqual( [
|
|
'error',
|
|
response.errors.item1.join( ' ' ),
|
|
] );
|
|
expect( call2 ).toEqual( [ 'error', response.errors.item2[ 0 ] ] );
|
|
} );
|
|
|
|
test( 'should not call createNotice when no message or errors exist', () => {
|
|
const response = { data: {} };
|
|
|
|
createNoticesFromResponse( response );
|
|
expect( createNotice ).not.toHaveBeenCalled();
|
|
} );
|
|
} );
|