165 lines
3.9 KiB
JavaScript
165 lines
3.9 KiB
JavaScript
import MockAdapter from 'axios-mock-adapter';
|
|
import testAction from 'helpers/vuex_action_helper';
|
|
import { TEST_HOST } from 'helpers/test_constants';
|
|
import axios from '~/lib/utils/axios_utils';
|
|
import {
|
|
setEndpoint,
|
|
requestArtifacts,
|
|
clearEtagPoll,
|
|
stopPolling,
|
|
fetchArtifacts,
|
|
receiveArtifactsSuccess,
|
|
receiveArtifactsError,
|
|
} from '~/vue_merge_request_widget/stores/artifacts_list/actions';
|
|
import state from '~/vue_merge_request_widget/stores/artifacts_list/state';
|
|
import * as types from '~/vue_merge_request_widget/stores/artifacts_list/mutation_types';
|
|
|
|
describe('Artifacts App Store Actions', () => {
|
|
let mockedState;
|
|
|
|
beforeEach(() => {
|
|
mockedState = state();
|
|
});
|
|
|
|
describe('setEndpoint', () => {
|
|
it('should commit SET_ENDPOINT mutation', done => {
|
|
testAction(
|
|
setEndpoint,
|
|
'endpoint.json',
|
|
mockedState,
|
|
[{ type: types.SET_ENDPOINT, payload: 'endpoint.json' }],
|
|
[],
|
|
done,
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('requestArtifacts', () => {
|
|
it('should commit REQUEST_ARTIFACTS mutation', done => {
|
|
testAction(
|
|
requestArtifacts,
|
|
null,
|
|
mockedState,
|
|
[{ type: types.REQUEST_ARTIFACTS }],
|
|
[],
|
|
done,
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('fetchArtifacts', () => {
|
|
let mock;
|
|
|
|
beforeEach(() => {
|
|
mockedState.endpoint = `${TEST_HOST}/endpoint.json`;
|
|
mock = new MockAdapter(axios);
|
|
});
|
|
|
|
afterEach(() => {
|
|
mock.restore();
|
|
stopPolling();
|
|
clearEtagPoll();
|
|
});
|
|
|
|
describe('success', () => {
|
|
it('dispatches requestArtifacts and receiveArtifactsSuccess ', done => {
|
|
mock.onGet(`${TEST_HOST}/endpoint.json`).replyOnce(200, [
|
|
{
|
|
text: 'result.txt',
|
|
url: 'asda',
|
|
job_name: 'generate-artifact',
|
|
job_path: 'asda',
|
|
},
|
|
]);
|
|
|
|
testAction(
|
|
fetchArtifacts,
|
|
null,
|
|
mockedState,
|
|
[],
|
|
[
|
|
{
|
|
type: 'requestArtifacts',
|
|
},
|
|
{
|
|
payload: {
|
|
data: [
|
|
{
|
|
text: 'result.txt',
|
|
url: 'asda',
|
|
job_name: 'generate-artifact',
|
|
job_path: 'asda',
|
|
},
|
|
],
|
|
status: 200,
|
|
},
|
|
type: 'receiveArtifactsSuccess',
|
|
},
|
|
],
|
|
done,
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('error', () => {
|
|
beforeEach(() => {
|
|
mock.onGet(`${TEST_HOST}/endpoint.json`).reply(500);
|
|
});
|
|
|
|
it('dispatches requestArtifacts and receiveArtifactsError ', done => {
|
|
testAction(
|
|
fetchArtifacts,
|
|
null,
|
|
mockedState,
|
|
[],
|
|
[
|
|
{
|
|
type: 'requestArtifacts',
|
|
},
|
|
{
|
|
type: 'receiveArtifactsError',
|
|
},
|
|
],
|
|
done,
|
|
);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('receiveArtifactsSuccess', () => {
|
|
it('should commit RECEIVE_ARTIFACTS_SUCCESS mutation with 200', done => {
|
|
testAction(
|
|
receiveArtifactsSuccess,
|
|
{ data: { summary: {} }, status: 200 },
|
|
mockedState,
|
|
[{ type: types.RECEIVE_ARTIFACTS_SUCCESS, payload: { summary: {} } }],
|
|
[],
|
|
done,
|
|
);
|
|
});
|
|
|
|
it('should not commit RECEIVE_ARTIFACTS_SUCCESS mutation with 204', done => {
|
|
testAction(
|
|
receiveArtifactsSuccess,
|
|
{ data: { summary: {} }, status: 204 },
|
|
mockedState,
|
|
[],
|
|
[],
|
|
done,
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('receiveArtifactsError', () => {
|
|
it('should commit RECEIVE_ARTIFACTS_ERROR mutation', done => {
|
|
testAction(
|
|
receiveArtifactsError,
|
|
null,
|
|
mockedState,
|
|
[{ type: types.RECEIVE_ARTIFACTS_ERROR }],
|
|
[],
|
|
done,
|
|
);
|
|
});
|
|
});
|
|
});
|