Skip to content
Snippets Groups Projects
Unverified Commit 2d6022e0 authored by Phil Hughes's avatar Phil Hughes
Browse files

store specs

parent 8c3a2c55
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -99,7 +99,7 @@ export const fetchJobTrace = ({ dispatch, state }) => {
return axios
.get(`${state.detailJob.path}/trace`, { params: { format: 'json' } })
.then(({ data }) => dispatch('receiveJobTraceSuccess', data))
.catch(() => dispatch('requestJobTraceError'));
.catch(() => dispatch('receiveJobTraceError'));
};
 
export default () => {};
Loading
Loading
@@ -75,6 +75,7 @@ export const jobs = [
},
stage: 'test',
duration: 1,
started: new Date(),
},
{
id: 2,
Loading
Loading
@@ -86,6 +87,7 @@ export const jobs = [
},
stage: 'test',
duration: 1,
started: new Date(),
},
{
id: 3,
Loading
Loading
@@ -97,6 +99,7 @@ export const jobs = [
},
stage: 'test',
duration: 1,
started: new Date(),
},
{
id: 4,
Loading
Loading
@@ -108,6 +111,7 @@ export const jobs = [
},
stage: 'build',
duration: 1,
started: new Date(),
},
];
 
Loading
Loading
Loading
Loading
@@ -13,9 +13,15 @@ import actions, {
receiveJobsSuccess,
fetchJobs,
toggleStageCollapsed,
setDetailJob,
requestJobTrace,
receiveJobTraceError,
receiveJobTraceSuccess,
fetchJobTrace,
} from '~/ide/stores/modules/pipelines/actions';
import state from '~/ide/stores/modules/pipelines/state';
import * as types from '~/ide/stores/modules/pipelines/mutation_types';
import { rightSidebarViews } from '~/ide/constants';
import testAction from '../../../../helpers/vuex_action_helper';
import { pipelines, jobs } from '../../../mock_data';
 
Loading
Loading
@@ -281,4 +287,133 @@ describe('IDE pipelines actions', () => {
);
});
});
describe('setDetailJob', () => {
it('commits job', done => {
testAction(
setDetailJob,
'job',
mockedState,
[{ type: types.SET_DETAIL_JOB, payload: 'job' }],
[{ type: 'setRightPane' }],
done,
);
});
it('dispatches setRightPane as pipeline when job is null', done => {
testAction(
setDetailJob,
null,
mockedState,
[{ type: types.SET_DETAIL_JOB }],
[{ type: 'setRightPane', payload: rightSidebarViews.pipelines }],
done,
);
});
it('dispatches setRightPane as job', done => {
testAction(
setDetailJob,
'job',
mockedState,
[{ type: types.SET_DETAIL_JOB }],
[{ type: 'setRightPane', payload: rightSidebarViews.jobsDetail }],
done,
);
});
});
describe('requestJobTrace', () => {
it('commits request', done => {
testAction(requestJobTrace, null, mockedState, [{ type: types.REQUEST_JOB_TRACE }], [], done);
});
});
describe('receiveJobTraceError', () => {
it('commits error', done => {
testAction(
receiveJobTraceError,
null,
mockedState,
[{ type: types.RECEIVE_JOB_TRACE_ERROR }],
[],
done,
);
});
it('creates flash message', () => {
const flashSpy = spyOnDependency(actions, 'flash');
receiveJobTraceError({ commit() {} });
expect(flashSpy).toHaveBeenCalled();
});
});
describe('receiveJobTraceSuccess', () => {
it('commits data', done => {
testAction(
receiveJobTraceSuccess,
'data',
mockedState,
[{ type: types.RECEIVE_JOB_TRACE_SUCCESS, payload: 'data' }],
[],
done,
);
});
});
describe('fetchJobTrace', () => {
beforeEach(() => {
mockedState.detailJob = {
path: `${gl.TEST_HOST}/project/builds`,
};
});
describe('success', () => {
beforeEach(() => {
spyOn(axios, 'get').and.callThrough();
mock.onGet(`${gl.TEST_HOST}/project/builds/trace`).replyOnce(200, { html: 'html' });
});
it('dispatches request', done => {
testAction(
fetchJobTrace,
null,
mockedState,
[],
[
{ type: 'requestJobTrace' },
{ type: 'receiveJobTraceSuccess', payload: { html: 'html' } },
],
done,
);
});
it('sends get request to correct URL', () => {
fetchJobTrace({ state: mockedState, dispatch() {} });
expect(axios.get).toHaveBeenCalledWith(`${gl.TEST_HOST}/project/builds/trace`, {
params: { format: 'json' },
});
});
});
describe('error', () => {
beforeEach(() => {
mock.onGet(`${gl.TEST_HOST}/project/builds/trace`).replyOnce(500);
});
it('dispatches error', done => {
testAction(
fetchJobTrace,
null,
mockedState,
[],
[{ type: 'requestJobTrace' }, { type: 'receiveJobTraceError' }],
done,
);
});
});
});
});
Loading
Loading
@@ -147,6 +147,10 @@ describe('IDE pipelines mutations', () => {
name: job.name,
status: job.status,
path: job.build_path,
rawPath: `${job.build_path}/raw`,
started: job.started,
isLoading: false,
output: '',
})),
);
});
Loading
Loading
@@ -171,4 +175,49 @@ describe('IDE pipelines mutations', () => {
expect(mockedState.stages[0].isCollapsed).toBe(false);
});
});
describe(types.SET_DETAIL_JOB, () => {
it('sets detail job', () => {
mutations[types.SET_DETAIL_JOB](mockedState, jobs[0]);
expect(mockedState.detailJob).toEqual(jobs[0]);
});
});
describe(types.REQUEST_JOB_TRACE, () => {
beforeEach(() => {
mockedState.detailJob = { ...jobs[0] };
});
it('sets loading on detail job', () => {
mutations[types.REQUEST_JOB_TRACE](mockedState);
expect(mockedState.detailJob.isLoading).toBe(true);
});
});
describe(types.RECEIVE_JOB_TRACE_ERROR, () => {
beforeEach(() => {
mockedState.detailJob = { ...jobs[0], isLoading: true };
});
it('sets loading to false on detail job', () => {
mutations[types.RECEIVE_JOB_TRACE_ERROR](mockedState);
expect(mockedState.detailJob.isLoading).toBe(false);
});
});
describe(types.RECEIVE_JOB_TRACE_SUCCESS, () => {
beforeEach(() => {
mockedState.detailJob = { ...jobs[0], isLoading: true };
});
it('sets output on detail job', () => {
mutations[types.RECEIVE_JOB_TRACE_SUCCESS](mockedState, { html: 'html' });
expect(mockedState.detailJob.output).toBe('html');
expect(mockedState.detailJob.isLoading).toBe(false);
});
});
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment