45 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
import { InMemoryCache } from 'apollo-cache-inmemory';
 | 
						|
import {
 | 
						|
  updateStoreAfterDesignsDelete,
 | 
						|
  updateStoreAfterAddDiscussionComment,
 | 
						|
  updateStoreAfterAddImageDiffNote,
 | 
						|
  updateStoreAfterUploadDesign,
 | 
						|
  updateStoreAfterUpdateImageDiffNote,
 | 
						|
} from '~/design_management/utils/cache_update';
 | 
						|
import {
 | 
						|
  designDeletionError,
 | 
						|
  ADD_DISCUSSION_COMMENT_ERROR,
 | 
						|
  ADD_IMAGE_DIFF_NOTE_ERROR,
 | 
						|
  UPDATE_IMAGE_DIFF_NOTE_ERROR,
 | 
						|
} from '~/design_management/utils/error_messages';
 | 
						|
import design from '../mock_data/design';
 | 
						|
import createFlash from '~/flash';
 | 
						|
 | 
						|
jest.mock('~/flash.js');
 | 
						|
 | 
						|
describe('Design Management cache update', () => {
 | 
						|
  const mockErrors = ['code red!'];
 | 
						|
 | 
						|
  let mockStore;
 | 
						|
 | 
						|
  beforeEach(() => {
 | 
						|
    mockStore = new InMemoryCache();
 | 
						|
  });
 | 
						|
 | 
						|
  describe('error handling', () => {
 | 
						|
    it.each`
 | 
						|
      fnName                                    | subject                                 | errorMessage                               | extraArgs
 | 
						|
      ${'updateStoreAfterDesignsDelete'}        | ${updateStoreAfterDesignsDelete}        | ${designDeletionError({ singular: true })} | ${[[design]]}
 | 
						|
      ${'updateStoreAfterAddDiscussionComment'} | ${updateStoreAfterAddDiscussionComment} | ${ADD_DISCUSSION_COMMENT_ERROR}            | ${[]}
 | 
						|
      ${'updateStoreAfterAddImageDiffNote'}     | ${updateStoreAfterAddImageDiffNote}     | ${ADD_IMAGE_DIFF_NOTE_ERROR}               | ${[]}
 | 
						|
      ${'updateStoreAfterUploadDesign'}         | ${updateStoreAfterUploadDesign}         | ${mockErrors[0]}                           | ${[]}
 | 
						|
      ${'updateStoreAfterUpdateImageDiffNote'}  | ${updateStoreAfterUpdateImageDiffNote}  | ${UPDATE_IMAGE_DIFF_NOTE_ERROR}            | ${[]}
 | 
						|
    `('$fnName handles errors in response', ({ subject, extraArgs, errorMessage }) => {
 | 
						|
      expect(createFlash).not.toHaveBeenCalled();
 | 
						|
      expect(() => subject(mockStore, { errors: mockErrors }, {}, ...extraArgs)).toThrow();
 | 
						|
      expect(createFlash).toHaveBeenCalledTimes(1);
 | 
						|
      expect(createFlash).toHaveBeenCalledWith(errorMessage);
 | 
						|
    });
 | 
						|
  });
 | 
						|
});
 |