240 lines
5.9 KiB
JavaScript
240 lines
5.9 KiB
JavaScript
import MockAdapter from 'axios-mock-adapter';
|
|
import { TEST_HOST } from 'helpers/test_constants';
|
|
import testAction from 'helpers/vuex_action_helper';
|
|
import {
|
|
setBaseConfig,
|
|
setTabIndex,
|
|
setCommits,
|
|
createContextCommits,
|
|
fetchContextCommits,
|
|
setContextCommits,
|
|
removeContextCommits,
|
|
setSelectedCommits,
|
|
setSearchText,
|
|
setToRemoveCommits,
|
|
resetModalState,
|
|
} from '~/add_context_commits_modal/store/actions';
|
|
import * as types from '~/add_context_commits_modal/store/mutation_types';
|
|
import axios from '~/lib/utils/axios_utils';
|
|
|
|
describe('AddContextCommitsModalStoreActions', () => {
|
|
const contextCommitEndpoint =
|
|
'/api/v4/projects/gitlab-org%2fgitlab/merge_requests/1/context_commits';
|
|
const mergeRequestIid = 1;
|
|
const projectId = 1;
|
|
const projectPath = 'gitlab-org/gitlab';
|
|
const contextCommitsPath = `${TEST_HOST}/gitlab-org/gitlab/-/merge_requests/1/context_commits.json`;
|
|
const dummyCommit = {
|
|
id: 1,
|
|
title: 'dummy commit',
|
|
short_id: 'abcdef',
|
|
committed_date: '2020-06-12',
|
|
};
|
|
gon.api_version = 'v4';
|
|
let mock;
|
|
|
|
beforeEach(() => {
|
|
mock = new MockAdapter(axios);
|
|
});
|
|
|
|
afterEach(() => {
|
|
mock.restore();
|
|
});
|
|
|
|
describe('setBaseConfig', () => {
|
|
it('commits SET_BASE_CONFIG', (done) => {
|
|
const options = { contextCommitsPath, mergeRequestIid, projectId };
|
|
testAction(
|
|
setBaseConfig,
|
|
options,
|
|
{
|
|
contextCommitsPath: '',
|
|
mergeRequestIid,
|
|
projectId,
|
|
},
|
|
[
|
|
{
|
|
type: types.SET_BASE_CONFIG,
|
|
payload: options,
|
|
},
|
|
],
|
|
[],
|
|
done,
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('setTabIndex', () => {
|
|
it('commits SET_TABINDEX', (done) => {
|
|
testAction(
|
|
setTabIndex,
|
|
{ tabIndex: 1 },
|
|
{ tabIndex: 0 },
|
|
[{ type: types.SET_TABINDEX, payload: { tabIndex: 1 } }],
|
|
[],
|
|
done,
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('setCommits', () => {
|
|
it('commits SET_COMMITS', (done) => {
|
|
testAction(
|
|
setCommits,
|
|
{ commits: [], silentAddition: false },
|
|
{ isLoadingCommits: false, commits: [] },
|
|
[{ type: types.SET_COMMITS, payload: [] }],
|
|
[],
|
|
done,
|
|
);
|
|
});
|
|
|
|
it('commits SET_COMMITS_SILENT', (done) => {
|
|
testAction(
|
|
setCommits,
|
|
{ commits: [], silentAddition: true },
|
|
{ isLoadingCommits: true, commits: [] },
|
|
[{ type: types.SET_COMMITS_SILENT, payload: [] }],
|
|
[],
|
|
done,
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('createContextCommits', () => {
|
|
it('calls API to create context commits', (done) => {
|
|
mock.onPost(contextCommitEndpoint).reply(200, {});
|
|
|
|
testAction(createContextCommits, { commits: [] }, {}, [], [], done);
|
|
|
|
createContextCommits(
|
|
{ state: { projectId, mergeRequestIid }, commit: () => null },
|
|
{ commits: [] },
|
|
)
|
|
.then(() => {
|
|
done();
|
|
})
|
|
.catch(done.fail);
|
|
});
|
|
});
|
|
|
|
describe('fetchContextCommits', () => {
|
|
beforeEach(() => {
|
|
mock
|
|
.onGet(
|
|
`/api/${gon.api_version}/projects/gitlab-org%2Fgitlab/merge_requests/1/context_commits`,
|
|
)
|
|
.reply(200, [dummyCommit]);
|
|
});
|
|
it('commits FETCH_CONTEXT_COMMITS', (done) => {
|
|
const contextCommit = { ...dummyCommit, isSelected: true };
|
|
testAction(
|
|
fetchContextCommits,
|
|
null,
|
|
{
|
|
mergeRequestIid,
|
|
projectId: projectPath,
|
|
isLoadingContextCommits: false,
|
|
contextCommitsLoadingError: false,
|
|
commits: [],
|
|
},
|
|
[{ type: types.FETCH_CONTEXT_COMMITS }],
|
|
[
|
|
{ type: 'setContextCommits', payload: [contextCommit] },
|
|
{ type: 'setCommits', payload: { commits: [contextCommit], silentAddition: true } },
|
|
{ type: 'setSelectedCommits', payload: [contextCommit] },
|
|
],
|
|
done,
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('setContextCommits', () => {
|
|
it('commits SET_CONTEXT_COMMITS', (done) => {
|
|
testAction(
|
|
setContextCommits,
|
|
{ data: [] },
|
|
{ contextCommits: [], isLoadingContextCommits: false },
|
|
[{ type: types.SET_CONTEXT_COMMITS, payload: { data: [] } }],
|
|
[],
|
|
done,
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('removeContextCommits', () => {
|
|
beforeEach(() => {
|
|
mock
|
|
.onDelete('/api/v4/projects/gitlab-org%2Fgitlab/merge_requests/1/context_commits')
|
|
.reply(204);
|
|
});
|
|
it('calls API to remove context commits', (done) => {
|
|
testAction(
|
|
removeContextCommits,
|
|
{ forceReload: false },
|
|
{ mergeRequestIid, projectId, toRemoveCommits: [] },
|
|
[],
|
|
[],
|
|
done,
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('setSelectedCommits', () => {
|
|
it('commits SET_SELECTED_COMMITS', (done) => {
|
|
testAction(
|
|
setSelectedCommits,
|
|
[dummyCommit],
|
|
{ selectedCommits: [] },
|
|
[{ type: types.SET_SELECTED_COMMITS, payload: [dummyCommit] }],
|
|
[],
|
|
done,
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('setSearchText', () => {
|
|
it('commits SET_SEARCH_TEXT', (done) => {
|
|
const searchText = 'Dummy Text';
|
|
testAction(
|
|
setSearchText,
|
|
searchText,
|
|
{ searchText: '' },
|
|
[{ type: types.SET_SEARCH_TEXT, payload: searchText }],
|
|
[],
|
|
done,
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('setToRemoveCommits', () => {
|
|
it('commits SET_TO_REMOVE_COMMITS', (done) => {
|
|
const commitId = 'abcde';
|
|
|
|
testAction(
|
|
setToRemoveCommits,
|
|
[commitId],
|
|
{ toRemoveCommits: [] },
|
|
[{ type: types.SET_TO_REMOVE_COMMITS, payload: [commitId] }],
|
|
[],
|
|
done,
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('resetModalState', () => {
|
|
it('commits RESET_MODAL_STATE', (done) => {
|
|
const commitId = 'abcde';
|
|
|
|
testAction(
|
|
resetModalState,
|
|
null,
|
|
{ toRemoveCommits: [commitId] },
|
|
[{ type: types.RESET_MODAL_STATE }],
|
|
[],
|
|
done,
|
|
);
|
|
});
|
|
});
|
|
});
|