more specs!
This commit is contained in:
parent
d4fce4dc2f
commit
47fe2a5248
3 changed files with 229 additions and 68 deletions
|
@ -10,8 +10,7 @@ export const getMergeRequestData = (
|
|||
if (!state.projects[projectId].mergeRequests[mergeRequestId] || force) {
|
||||
service
|
||||
.getProjectMergeRequestData(projectId, mergeRequestId)
|
||||
.then(res => res.data)
|
||||
.then(data => {
|
||||
.then(({ data }) => {
|
||||
commit(types.SET_MERGE_REQUEST, {
|
||||
projectPath: projectId,
|
||||
mergeRequestId,
|
||||
|
@ -45,8 +44,7 @@ export const getMergeRequestChanges = (
|
|||
if (!state.projects[projectId].mergeRequests[mergeRequestId].changes.length || force) {
|
||||
service
|
||||
.getProjectMergeRequestChanges(projectId, mergeRequestId)
|
||||
.then(res => res.data)
|
||||
.then(data => {
|
||||
.then(({ data }) => {
|
||||
commit(types.SET_MERGE_REQUEST_CHANGES, {
|
||||
projectPath: projectId,
|
||||
mergeRequestId,
|
||||
|
|
|
@ -1,23 +1,38 @@
|
|||
import MockAdapter from 'axios-mock-adapter';
|
||||
import axios from '~/lib/utils/axios_utils';
|
||||
import store from '~/ide/stores';
|
||||
import {
|
||||
getMergeRequestData,
|
||||
getMergeRequestChanges,
|
||||
getMergeRequestVersions,
|
||||
} from '~/ide/stores/actions/merge_request';
|
||||
import service from '~/ide/services';
|
||||
import { resetStore } from '../../helpers';
|
||||
|
||||
describe('IDE store merge request actions', () => {
|
||||
let mock;
|
||||
|
||||
beforeEach(() => {
|
||||
mock = new MockAdapter(axios);
|
||||
|
||||
store.state.projects.abcproject = {
|
||||
mergeRequests: {},
|
||||
};
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
mock.restore();
|
||||
resetStore(store);
|
||||
});
|
||||
|
||||
describe('getMergeRequestData', () => {
|
||||
describe('success', () => {
|
||||
beforeEach(() => {
|
||||
spyOn(service, 'getProjectMergeRequestData').and.returnValue(
|
||||
Promise.resolve({ data: { title: 'mergerequest' } }),
|
||||
);
|
||||
spyOn(service, 'getProjectMergeRequestData').and.callThrough();
|
||||
|
||||
mock
|
||||
.onGet(/api\/(.*)\/projects\/abcproject\/merge_requests\/1/)
|
||||
.reply(200, { title: 'mergerequest' });
|
||||
});
|
||||
|
||||
it('calls getProjectMergeRequestData service method', done => {
|
||||
|
@ -44,15 +59,55 @@ describe('IDE store merge request actions', () => {
|
|||
});
|
||||
});
|
||||
|
||||
describe('error', () => {
|
||||
beforeEach(() => {
|
||||
mock.onGet(/api\/(.*)\/projects\/abcproject\/merge_requests\/1/).networkError();
|
||||
});
|
||||
|
||||
it('dispatches error action', done => {
|
||||
const dispatch = jasmine.createSpy('dispatch');
|
||||
|
||||
getMergeRequestData(
|
||||
{
|
||||
commit() {},
|
||||
dispatch,
|
||||
state: store.state,
|
||||
},
|
||||
{ projectId: 'abcproject', mergeRequestId: 1 },
|
||||
)
|
||||
.then(done.fail)
|
||||
.catch(() => {
|
||||
expect(dispatch).toHaveBeenCalledWith('setErrorMessage', {
|
||||
text: 'An error occured whilst loading the merge request.',
|
||||
action: jasmine.any(Function),
|
||||
actionText: 'Please try again',
|
||||
actionPayload: {
|
||||
projectId: 'abcproject',
|
||||
mergeRequestId: 1,
|
||||
force: false,
|
||||
},
|
||||
});
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('getMergeRequestChanges', () => {
|
||||
beforeEach(() => {
|
||||
spyOn(service, 'getProjectMergeRequestChanges').and.returnValue(
|
||||
Promise.resolve({ data: { title: 'mergerequest' } }),
|
||||
);
|
||||
|
||||
store.state.projects.abcproject.mergeRequests['1'] = { changes: [] };
|
||||
});
|
||||
|
||||
describe('success', () => {
|
||||
beforeEach(() => {
|
||||
spyOn(service, 'getProjectMergeRequestChanges').and.callThrough();
|
||||
|
||||
mock
|
||||
.onGet(/api\/(.*)\/projects\/abcproject\/merge_requests\/1\/changes/)
|
||||
.reply(200, { title: 'mergerequest' });
|
||||
});
|
||||
|
||||
it('calls getProjectMergeRequestChanges service method', done => {
|
||||
store
|
||||
.dispatch('getMergeRequestChanges', { projectId: 'abcproject', mergeRequestId: 1 })
|
||||
|
@ -77,15 +132,54 @@ describe('IDE store merge request actions', () => {
|
|||
});
|
||||
});
|
||||
|
||||
describe('error', () => {
|
||||
beforeEach(() => {
|
||||
mock.onGet(/api\/(.*)\/projects\/abcproject\/merge_requests\/1\/changes/).networkError();
|
||||
});
|
||||
|
||||
it('dispatches error action', done => {
|
||||
const dispatch = jasmine.createSpy('dispatch');
|
||||
|
||||
getMergeRequestChanges(
|
||||
{
|
||||
commit() {},
|
||||
dispatch,
|
||||
state: store.state,
|
||||
},
|
||||
{ projectId: 'abcproject', mergeRequestId: 1 },
|
||||
)
|
||||
.then(done.fail)
|
||||
.catch(() => {
|
||||
expect(dispatch).toHaveBeenCalledWith('setErrorMessage', {
|
||||
text: 'An error occured whilst loading the merge request changes.',
|
||||
action: jasmine.any(Function),
|
||||
actionText: 'Please try again',
|
||||
actionPayload: {
|
||||
projectId: 'abcproject',
|
||||
mergeRequestId: 1,
|
||||
force: false,
|
||||
},
|
||||
});
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('getMergeRequestVersions', () => {
|
||||
beforeEach(() => {
|
||||
spyOn(service, 'getProjectMergeRequestVersions').and.returnValue(
|
||||
Promise.resolve({ data: [{ id: 789 }] }),
|
||||
);
|
||||
|
||||
store.state.projects.abcproject.mergeRequests['1'] = { versions: [] };
|
||||
});
|
||||
|
||||
describe('success', () => {
|
||||
beforeEach(() => {
|
||||
mock
|
||||
.onGet(/api\/(.*)\/projects\/abcproject\/merge_requests\/1\/versions/)
|
||||
.reply(200, [{ id: 789 }]);
|
||||
spyOn(service, 'getProjectMergeRequestVersions').and.callThrough();
|
||||
});
|
||||
|
||||
it('calls getProjectMergeRequestVersions service method', done => {
|
||||
store
|
||||
.dispatch('getMergeRequestVersions', { projectId: 'abcproject', mergeRequestId: 1 })
|
||||
|
@ -107,4 +201,39 @@ describe('IDE store merge request actions', () => {
|
|||
.catch(done.fail);
|
||||
});
|
||||
});
|
||||
|
||||
describe('error', () => {
|
||||
beforeEach(() => {
|
||||
mock.onGet(/api\/(.*)\/projects\/abcproject\/merge_requests\/1\/versions/).networkError();
|
||||
});
|
||||
|
||||
it('dispatches error action', done => {
|
||||
const dispatch = jasmine.createSpy('dispatch');
|
||||
|
||||
getMergeRequestVersions(
|
||||
{
|
||||
commit() {},
|
||||
dispatch,
|
||||
state: store.state,
|
||||
},
|
||||
{ projectId: 'abcproject', mergeRequestId: 1 },
|
||||
)
|
||||
.then(done.fail)
|
||||
.catch(() => {
|
||||
expect(dispatch).toHaveBeenCalledWith('setErrorMessage', {
|
||||
text: 'An error occured whilst loading the merge request version data.',
|
||||
action: jasmine.any(Function),
|
||||
actionText: 'Please try again',
|
||||
actionPayload: {
|
||||
projectId: 'abcproject',
|
||||
mergeRequestId: 1,
|
||||
force: false,
|
||||
},
|
||||
});
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -116,6 +116,40 @@ describe('Multi-file store tree actions', () => {
|
|||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('dispatches error action', done => {
|
||||
const dispatch = jasmine.createSpy('dispatchSpy');
|
||||
|
||||
store.state.projects = {
|
||||
'abc/def': {
|
||||
web_url: `${gl.TEST_HOST}/files`,
|
||||
},
|
||||
};
|
||||
|
||||
mock.onGet(/(.*)/).replyOnce(500);
|
||||
|
||||
getFiles(
|
||||
{
|
||||
commit() {},
|
||||
dispatch,
|
||||
state: store.state,
|
||||
},
|
||||
{
|
||||
projectId: 'abc/def',
|
||||
branchId: 'master-testing',
|
||||
},
|
||||
)
|
||||
.then(done.fail)
|
||||
.catch(() => {
|
||||
expect(dispatch).toHaveBeenCalledWith('setErrorMessage', {
|
||||
text: 'An error occured whilst loading all the files.',
|
||||
action: jasmine.any(Function),
|
||||
actionText: 'Please try again',
|
||||
actionPayload: { projectId: 'abc/def', branchId: 'master-testing' },
|
||||
});
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in a new issue