116 lines
3.8 KiB
JavaScript
116 lines
3.8 KiB
JavaScript
import ClustersStore from '~/clusters/stores/clusters_store';
|
|
import { APPLICATION_INSTALLING } from '~/clusters/constants';
|
|
import { CLUSTERS_MOCK_DATA } from '../services/mock_data';
|
|
|
|
describe('Clusters Store', () => {
|
|
let store;
|
|
|
|
beforeEach(() => {
|
|
store = new ClustersStore();
|
|
});
|
|
|
|
describe('updateStatus', () => {
|
|
it('should store new status', () => {
|
|
expect(store.state.status).toEqual(null);
|
|
|
|
const newStatus = 'errored';
|
|
store.updateStatus(newStatus);
|
|
|
|
expect(store.state.status).toEqual(newStatus);
|
|
});
|
|
});
|
|
|
|
describe('updateStatusReason', () => {
|
|
it('should store new reason', () => {
|
|
expect(store.state.statusReason).toEqual(null);
|
|
|
|
const newReason = 'Something went wrong!';
|
|
store.updateStatusReason(newReason);
|
|
|
|
expect(store.state.statusReason).toEqual(newReason);
|
|
});
|
|
});
|
|
|
|
describe('updateAppProperty', () => {
|
|
it('should store new request status', () => {
|
|
expect(store.state.applications.helm.requestStatus).toEqual(null);
|
|
|
|
const newStatus = APPLICATION_INSTALLING;
|
|
store.updateAppProperty('helm', 'requestStatus', newStatus);
|
|
|
|
expect(store.state.applications.helm.requestStatus).toEqual(newStatus);
|
|
});
|
|
|
|
it('should store new request reason', () => {
|
|
expect(store.state.applications.helm.requestReason).toEqual(null);
|
|
|
|
const newReason = 'We broke it.';
|
|
store.updateAppProperty('helm', 'requestReason', newReason);
|
|
|
|
expect(store.state.applications.helm.requestReason).toEqual(newReason);
|
|
});
|
|
});
|
|
|
|
describe('updateStateFromServer', () => {
|
|
it('should store new polling data from server', () => {
|
|
const mockResponseData = CLUSTERS_MOCK_DATA.GET['/gitlab-org/gitlab-shell/clusters/1/status.json'].data;
|
|
store.updateStateFromServer(mockResponseData);
|
|
|
|
expect(store.state).toEqual({
|
|
helpPath: null,
|
|
ingressHelpPath: null,
|
|
status: mockResponseData.status,
|
|
statusReason: mockResponseData.status_reason,
|
|
applications: {
|
|
helm: {
|
|
title: 'Helm Tiller',
|
|
status: mockResponseData.applications[0].status,
|
|
statusReason: mockResponseData.applications[0].status_reason,
|
|
requestStatus: null,
|
|
requestReason: null,
|
|
},
|
|
ingress: {
|
|
title: 'Ingress',
|
|
status: mockResponseData.applications[1].status,
|
|
statusReason: mockResponseData.applications[1].status_reason,
|
|
requestStatus: null,
|
|
requestReason: null,
|
|
externalIp: null,
|
|
},
|
|
runner: {
|
|
title: 'GitLab Runner',
|
|
status: mockResponseData.applications[2].status,
|
|
statusReason: mockResponseData.applications[2].status_reason,
|
|
requestStatus: null,
|
|
requestReason: null,
|
|
},
|
|
prometheus: {
|
|
title: 'Prometheus',
|
|
status: mockResponseData.applications[3].status,
|
|
statusReason: mockResponseData.applications[3].status_reason,
|
|
requestStatus: null,
|
|
requestReason: null,
|
|
},
|
|
jupyter: {
|
|
title: 'JupyterHub',
|
|
status: mockResponseData.applications[4].status,
|
|
statusReason: mockResponseData.applications[4].status_reason,
|
|
requestStatus: null,
|
|
requestReason: null,
|
|
hostname: '',
|
|
},
|
|
},
|
|
});
|
|
});
|
|
|
|
it('sets default hostname for jupyter when ingress has a ip address', () => {
|
|
const mockResponseData = CLUSTERS_MOCK_DATA.GET['/gitlab-org/gitlab-shell/clusters/2/status.json'].data;
|
|
|
|
store.updateStateFromServer(mockResponseData);
|
|
|
|
expect(
|
|
store.state.applications.jupyter.hostname,
|
|
).toEqual(`jupyter.${store.state.applications.ingress.externalIp}.nip.io`);
|
|
});
|
|
});
|
|
});
|