diff options
Diffstat (limited to 'spec/frontend/diffs/store')
-rw-r--r-- | spec/frontend/diffs/store/actions_spec.js | 82 | ||||
-rw-r--r-- | spec/frontend/diffs/store/utils_spec.js | 22 |
2 files changed, 90 insertions, 14 deletions
diff --git a/spec/frontend/diffs/store/actions_spec.js b/spec/frontend/diffs/store/actions_spec.js index 7d79dcfbfe3..ec6ad031813 100644 --- a/spec/frontend/diffs/store/actions_spec.js +++ b/spec/frontend/diffs/store/actions_spec.js @@ -6,6 +6,8 @@ import { INLINE_DIFF_VIEW_TYPE, PARALLEL_DIFF_VIEW_TYPE, DIFFS_PER_PAGE, + DIFF_WHITESPACE_COOKIE_NAME, + SHOW_WHITESPACE, } from '~/diffs/constants'; import { setBaseConfig, @@ -44,6 +46,8 @@ import { setSuggestPopoverDismissed, changeCurrentCommit, moveToNeighboringCommit, + setCurrentDiffFileIdFromNote, + navigateToDiffFileIndex, } from '~/diffs/store/actions'; import eventHub from '~/notes/event_hub'; import * as types from '~/diffs/store/mutation_types'; @@ -55,6 +59,7 @@ import { mergeUrlParams } from '~/lib/utils/url_utility'; import { useLocalStorageSpy } from 'helpers/local_storage_helper'; import { diffMetadata } from '../mock_data/diff_metadata'; import createFlash from '~/flash'; +import { TEST_HOST } from 'jest/helpers/test_constants'; jest.mock('~/flash', () => jest.fn()); @@ -187,8 +192,8 @@ describe('DiffsStoreActions', () => { it('should fetch batch diff files', done => { const endpointBatch = '/fetch/diffs_batch'; - const res1 = { diff_files: [], pagination: { next_page: 2 } }; - const res2 = { diff_files: [], pagination: {} }; + const res1 = { diff_files: [{ file_hash: 'test' }], pagination: { next_page: 2 } }; + const res2 = { diff_files: [{ file_hash: 'test2' }], pagination: {} }; mock .onGet( mergeUrlParams( @@ -224,8 +229,10 @@ describe('DiffsStoreActions', () => { { type: types.SET_RETRIEVING_BATCHES, payload: true }, { type: types.SET_DIFF_DATA_BATCH, payload: { diff_files: res1.diff_files } }, { type: types.SET_BATCH_LOADING, payload: false }, - { type: types.SET_DIFF_DATA_BATCH, payload: { diff_files: [] } }, + { type: types.UPDATE_CURRENT_DIFF_FILE_ID, payload: 'test' }, + { type: types.SET_DIFF_DATA_BATCH, payload: { diff_files: res2.diff_files } }, { type: types.SET_BATCH_LOADING, payload: false }, + { type: types.UPDATE_CURRENT_DIFF_FILE_ID, payload: 'test2' }, { type: types.SET_RETRIEVING_BATCHES, payload: false }, ], [], @@ -309,6 +316,7 @@ describe('DiffsStoreActions', () => { showWhitespace: false, diffViewType: 'inline', useSingleDiffStyle: false, + currentDiffFileId: null, }, [ { type: types.SET_LOADING, payload: true }, @@ -345,8 +353,8 @@ describe('DiffsStoreActions', () => { it('should fetch batch diff files', done => { const endpointBatch = '/fetch/diffs_batch'; - const res1 = { diff_files: [], pagination: { next_page: 2 } }; - const res2 = { diff_files: [], pagination: {} }; + const res1 = { diff_files: [{ file_hash: 'test' }], pagination: { next_page: 2 } }; + const res2 = { diff_files: [{ file_hash: 'test2' }], pagination: {} }; mock .onGet(mergeUrlParams({ per_page: DIFFS_PER_PAGE, w: '1', page: 1 }, endpointBatch)) .reply(200, res1) @@ -356,14 +364,16 @@ describe('DiffsStoreActions', () => { testAction( fetchDiffFilesBatch, {}, - { endpointBatch, useSingleDiffStyle: false }, + { endpointBatch, useSingleDiffStyle: false, currentDiffFileId: null }, [ { type: types.SET_BATCH_LOADING, payload: true }, { type: types.SET_RETRIEVING_BATCHES, payload: true }, { type: types.SET_DIFF_DATA_BATCH, payload: { diff_files: res1.diff_files } }, { type: types.SET_BATCH_LOADING, payload: false }, - { type: types.SET_DIFF_DATA_BATCH, payload: { diff_files: [] } }, + { type: types.UPDATE_CURRENT_DIFF_FILE_ID, payload: 'test' }, + { type: types.SET_DIFF_DATA_BATCH, payload: { diff_files: res2.diff_files } }, { type: types.SET_BATCH_LOADING, payload: false }, + { type: types.UPDATE_CURRENT_DIFF_FILE_ID, payload: 'test2' }, { type: types.SET_RETRIEVING_BATCHES, payload: false }, ], [], @@ -475,6 +485,10 @@ describe('DiffsStoreActions', () => { }); describe('assignDiscussionsToDiff', () => { + afterEach(() => { + window.location.hash = ''; + }); + it('should merge discussions into diffs', done => { window.location.hash = 'ABC_123'; @@ -568,6 +582,19 @@ describe('DiffsStoreActions', () => { done, ); }); + + it('dispatches setCurrentDiffFileIdFromNote with note ID', done => { + window.location.hash = 'note_123'; + + testAction( + assignDiscussionsToDiff, + [], + { diffFiles: [], useSingleDiffStyle: true }, + [], + [{ type: 'setCurrentDiffFileIdFromNote', payload: '123' }], + done, + ); + }); }); describe('removeDiscussionsFromDiff', () => { @@ -1187,10 +1214,10 @@ describe('DiffsStoreActions', () => { ); }); - it('sets localStorage', () => { + it('sets cookie', () => { setShowWhitespace({ commit() {} }, { showWhitespace: true }); - expect(localStorage.setItem).toHaveBeenCalledWith('mr_show_whitespace', true); + expect(Cookies.get(DIFF_WHITESPACE_COOKIE_NAME)).toEqual(SHOW_WHITESPACE); }); it('calls history pushState', () => { @@ -1250,12 +1277,12 @@ describe('DiffsStoreActions', () => { describe('success', () => { beforeEach(() => { - mock.onGet(`${gl.TEST_HOST}/context`).replyOnce(200, ['test']); + mock.onGet(`${TEST_HOST}/context`).replyOnce(200, ['test']); }); it('commits the success and dispatches an action to expand the new lines', done => { const file = { - context_lines_path: `${gl.TEST_HOST}/context`, + context_lines_path: `${TEST_HOST}/context`, file_path: 'test', file_hash: 'test', }; @@ -1272,13 +1299,13 @@ describe('DiffsStoreActions', () => { describe('error', () => { beforeEach(() => { - mock.onGet(`${gl.TEST_HOST}/context`).replyOnce(500); + mock.onGet(`${TEST_HOST}/context`).replyOnce(500); }); it('dispatches receiveFullDiffError', done => { testAction( fetchFullDiff, - { context_lines_path: `${gl.TEST_HOST}/context`, file_path: 'test', file_hash: 'test' }, + { context_lines_path: `${TEST_HOST}/context`, file_path: 'test', file_hash: 'test' }, null, [], [{ type: 'receiveFullDiffError', payload: 'test' }], @@ -1442,7 +1469,7 @@ describe('DiffsStoreActions', () => { describe('setSuggestPopoverDismissed', () => { it('commits SET_SHOW_SUGGEST_POPOVER', done => { - const state = { dismissEndpoint: `${gl.TEST_HOST}/-/user_callouts` }; + const state = { dismissEndpoint: `${TEST_HOST}/-/user_callouts` }; const mock = new MockAdapter(axios); mock.onPost(state.dismissEndpoint).reply(200, {}); @@ -1563,4 +1590,31 @@ describe('DiffsStoreActions', () => { }, ); }); + + describe('setCurrentDiffFileIdFromNote', () => { + it('commits UPDATE_CURRENT_DIFF_FILE_ID', () => { + const commit = jest.fn(); + const rootGetters = { + getDiscussion: () => ({ diff_file: { file_hash: '123' } }), + notesById: { '1': { discussion_id: '2' } }, + }; + + setCurrentDiffFileIdFromNote({ commit, rootGetters }, '1'); + + expect(commit).toHaveBeenCalledWith(types.UPDATE_CURRENT_DIFF_FILE_ID, '123'); + }); + }); + + describe('navigateToDiffFileIndex', () => { + it('commits UPDATE_CURRENT_DIFF_FILE_ID', done => { + testAction( + navigateToDiffFileIndex, + 0, + { diffFiles: [{ file_hash: '123' }] }, + [{ type: types.UPDATE_CURRENT_DIFF_FILE_ID, payload: '123' }], + [], + done, + ); + }); + }); }); diff --git a/spec/frontend/diffs/store/utils_spec.js b/spec/frontend/diffs/store/utils_spec.js index 891de45e268..d87619e1e3c 100644 --- a/spec/frontend/diffs/store/utils_spec.js +++ b/spec/frontend/diffs/store/utils_spec.js @@ -1090,4 +1090,26 @@ describe('DiffsStoreUtils', () => { ]); }); }); + + describe('getDefaultWhitespace', () => { + it('defaults to true if querystring and cookie are undefined', () => { + expect(utils.getDefaultWhitespace()).toBe(true); + }); + + it('returns false if querystring is `1`', () => { + expect(utils.getDefaultWhitespace('1', '0')).toBe(false); + }); + + it('returns true if querystring is `0`', () => { + expect(utils.getDefaultWhitespace('0', undefined)).toBe(true); + }); + + it('returns false if cookie is `1`', () => { + expect(utils.getDefaultWhitespace(undefined, '1')).toBe(false); + }); + + it('returns true if cookie is `0`', () => { + expect(utils.getDefaultWhitespace(undefined, '0')).toBe(true); + }); + }); }); |