Fix UI error whereby prometheus application status is updated
This commit is contained in:
parent
29203198b6
commit
83badd07f7
9 changed files with 87 additions and 88 deletions
|
@ -6,7 +6,7 @@ import Poll from '../lib/utils/poll';
|
||||||
import initSettingsPanels from '../settings_panels';
|
import initSettingsPanels from '../settings_panels';
|
||||||
import eventHub from './event_hub';
|
import eventHub from './event_hub';
|
||||||
import {
|
import {
|
||||||
APPLICATION_INSTALLED,
|
APPLICATION_STATUS,
|
||||||
REQUEST_LOADING,
|
REQUEST_LOADING,
|
||||||
REQUEST_SUCCESS,
|
REQUEST_SUCCESS,
|
||||||
REQUEST_FAILURE,
|
REQUEST_FAILURE,
|
||||||
|
@ -177,8 +177,8 @@ export default class Clusters {
|
||||||
|
|
||||||
checkForNewInstalls(prevApplicationMap, newApplicationMap) {
|
checkForNewInstalls(prevApplicationMap, newApplicationMap) {
|
||||||
const appTitles = Object.keys(newApplicationMap)
|
const appTitles = Object.keys(newApplicationMap)
|
||||||
.filter(appId => newApplicationMap[appId].status === APPLICATION_INSTALLED &&
|
.filter(appId => newApplicationMap[appId].status === APPLICATION_STATUS.INSTALLED &&
|
||||||
prevApplicationMap[appId].status !== APPLICATION_INSTALLED &&
|
prevApplicationMap[appId].status !== APPLICATION_STATUS.INSTALLED &&
|
||||||
prevApplicationMap[appId].status !== null)
|
prevApplicationMap[appId].status !== null)
|
||||||
.map(appId => newApplicationMap[appId].title);
|
.map(appId => newApplicationMap[appId].title);
|
||||||
|
|
||||||
|
|
|
@ -4,12 +4,7 @@
|
||||||
import eventHub from '../event_hub';
|
import eventHub from '../event_hub';
|
||||||
import loadingButton from '../../vue_shared/components/loading_button.vue';
|
import loadingButton from '../../vue_shared/components/loading_button.vue';
|
||||||
import {
|
import {
|
||||||
APPLICATION_NOT_INSTALLABLE,
|
APPLICATION_STATUS,
|
||||||
APPLICATION_SCHEDULED,
|
|
||||||
APPLICATION_INSTALLABLE,
|
|
||||||
APPLICATION_INSTALLING,
|
|
||||||
APPLICATION_INSTALLED,
|
|
||||||
APPLICATION_ERROR,
|
|
||||||
REQUEST_LOADING,
|
REQUEST_LOADING,
|
||||||
REQUEST_SUCCESS,
|
REQUEST_SUCCESS,
|
||||||
REQUEST_FAILURE,
|
REQUEST_FAILURE,
|
||||||
|
@ -59,49 +54,57 @@
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
isUnknownStatus() {
|
||||||
|
return !this.isKnownStatus && this.status !== null;
|
||||||
|
},
|
||||||
|
isKnownStatus() {
|
||||||
|
return Object.values(APPLICATION_STATUS).includes(this.status);
|
||||||
|
},
|
||||||
rowJsClass() {
|
rowJsClass() {
|
||||||
return `js-cluster-application-row-${this.id}`;
|
return `js-cluster-application-row-${this.id}`;
|
||||||
},
|
},
|
||||||
installButtonLoading() {
|
installButtonLoading() {
|
||||||
return !this.status ||
|
return !this.status ||
|
||||||
this.status === APPLICATION_SCHEDULED ||
|
this.status === APPLICATION_STATUS.SCHEDULED ||
|
||||||
this.status === APPLICATION_INSTALLING ||
|
this.status === APPLICATION_STATUS.INSTALLING ||
|
||||||
this.requestStatus === REQUEST_LOADING;
|
this.requestStatus === REQUEST_LOADING;
|
||||||
},
|
},
|
||||||
installButtonDisabled() {
|
installButtonDisabled() {
|
||||||
// Avoid the potential for the real-time data to say APPLICATION_INSTALLABLE but
|
// Avoid the potential for the real-time data to say APPLICATION_STATUS.INSTALLABLE but
|
||||||
// we already made a request to install and are just waiting for the real-time
|
// we already made a request to install and are just waiting for the real-time
|
||||||
// to sync up.
|
// to sync up.
|
||||||
return (this.status !== APPLICATION_INSTALLABLE
|
return ((this.status !== APPLICATION_STATUS.INSTALLABLE
|
||||||
&& this.status !== APPLICATION_ERROR) ||
|
&& this.status !== APPLICATION_STATUS.ERROR) ||
|
||||||
this.requestStatus === REQUEST_LOADING ||
|
this.requestStatus === REQUEST_LOADING ||
|
||||||
this.requestStatus === REQUEST_SUCCESS;
|
this.requestStatus === REQUEST_SUCCESS) && this.isKnownStatus;
|
||||||
},
|
},
|
||||||
installButtonLabel() {
|
installButtonLabel() {
|
||||||
let label;
|
let label;
|
||||||
if (
|
if (
|
||||||
this.status === APPLICATION_NOT_INSTALLABLE ||
|
this.status === APPLICATION_STATUS.NOT_INSTALLABLE ||
|
||||||
this.status === APPLICATION_INSTALLABLE ||
|
this.status === APPLICATION_STATUS.INSTALLABLE ||
|
||||||
this.status === APPLICATION_ERROR
|
this.status === APPLICATION_STATUS.ERROR ||
|
||||||
|
this.isUnknownStatus
|
||||||
) {
|
) {
|
||||||
label = s__('ClusterIntegration|Install');
|
label = s__('ClusterIntegration|Install');
|
||||||
} else if (this.status === APPLICATION_SCHEDULED ||
|
} else if (this.status === APPLICATION_STATUS.SCHEDULED ||
|
||||||
this.status === APPLICATION_INSTALLING) {
|
this.status === APPLICATION_STATUS.INSTALLING) {
|
||||||
label = s__('ClusterIntegration|Installing');
|
label = s__('ClusterIntegration|Installing');
|
||||||
} else if (this.status === APPLICATION_INSTALLED) {
|
} else if (this.status === APPLICATION_STATUS.INSTALLED ||
|
||||||
|
this.status === APPLICATION_STATUS.UPDATED) {
|
||||||
label = s__('ClusterIntegration|Installed');
|
label = s__('ClusterIntegration|Installed');
|
||||||
}
|
}
|
||||||
|
|
||||||
return label;
|
return label;
|
||||||
},
|
},
|
||||||
showManageButton() {
|
showManageButton() {
|
||||||
return this.manageLink && this.status === APPLICATION_INSTALLED;
|
return this.manageLink && this.status === APPLICATION_STATUS.INSTALLED;
|
||||||
},
|
},
|
||||||
manageButtonLabel() {
|
manageButtonLabel() {
|
||||||
return s__('ClusterIntegration|Manage');
|
return s__('ClusterIntegration|Manage');
|
||||||
},
|
},
|
||||||
hasError() {
|
hasError() {
|
||||||
return this.status === APPLICATION_ERROR ||
|
return this.status === APPLICATION_STATUS.ERROR ||
|
||||||
this.requestStatus === REQUEST_FAILURE;
|
this.requestStatus === REQUEST_FAILURE;
|
||||||
},
|
},
|
||||||
generalErrorDescription() {
|
generalErrorDescription() {
|
||||||
|
@ -182,7 +185,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
v-if="hasError"
|
v-if="hasError || isUnknownStatus"
|
||||||
class="gl-responsive-table-row-layout"
|
class="gl-responsive-table-row-layout"
|
||||||
role="row"
|
role="row"
|
||||||
>
|
>
|
||||||
|
|
|
@ -3,7 +3,7 @@ import _ from 'underscore';
|
||||||
import { s__, sprintf } from '../../locale';
|
import { s__, sprintf } from '../../locale';
|
||||||
import applicationRow from './application_row.vue';
|
import applicationRow from './application_row.vue';
|
||||||
import clipboardButton from '../../vue_shared/components/clipboard_button.vue';
|
import clipboardButton from '../../vue_shared/components/clipboard_button.vue';
|
||||||
import { APPLICATION_INSTALLED, INGRESS } from '../constants';
|
import { APPLICATION_STATUS, INGRESS } from '../constants';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
|
@ -58,7 +58,7 @@ export default {
|
||||||
return INGRESS;
|
return INGRESS;
|
||||||
},
|
},
|
||||||
ingressInstalled() {
|
ingressInstalled() {
|
||||||
return this.applications.ingress.status === APPLICATION_INSTALLED;
|
return this.applications.ingress.status === APPLICATION_STATUS.INSTALLED;
|
||||||
},
|
},
|
||||||
ingressExternalIp() {
|
ingressExternalIp() {
|
||||||
return this.applications.ingress.externalIp;
|
return this.applications.ingress.externalIp;
|
||||||
|
@ -122,7 +122,7 @@ export default {
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
jupyterInstalled() {
|
jupyterInstalled() {
|
||||||
return this.applications.jupyter.status === APPLICATION_INSTALLED;
|
return this.applications.jupyter.status === APPLICATION_STATUS.INSTALLED;
|
||||||
},
|
},
|
||||||
jupyterHostname() {
|
jupyterHostname() {
|
||||||
return this.applications.jupyter.hostname;
|
return this.applications.jupyter.hostname;
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
// These need to match what is returned from the server
|
// These need to match what is returned from the server
|
||||||
export const APPLICATION_NOT_INSTALLABLE = 'not_installable';
|
export const APPLICATION_STATUS = {
|
||||||
export const APPLICATION_INSTALLABLE = 'installable';
|
NOT_INSTALLABLE: 'not_installable',
|
||||||
export const APPLICATION_SCHEDULED = 'scheduled';
|
INSTALLABLE: 'installable',
|
||||||
export const APPLICATION_INSTALLING = 'installing';
|
SCHEDULED: 'scheduled',
|
||||||
export const APPLICATION_INSTALLED = 'installed';
|
INSTALLING: 'installing',
|
||||||
export const APPLICATION_ERROR = 'errored';
|
INSTALLED: 'installed',
|
||||||
|
UPDATED: 'updated',
|
||||||
|
ERROR: 'errored',
|
||||||
|
};
|
||||||
|
|
||||||
// These are only used client-side
|
// These are only used client-side
|
||||||
export const REQUEST_LOADING = 'request-loading';
|
export const REQUEST_LOADING = 'request-loading';
|
||||||
|
|
5
changelogs/unreleased/fix-prometheus-updated-status.yml
Normal file
5
changelogs/unreleased/fix-prometheus-updated-status.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: Fix UI error whereby prometheus application status is updated
|
||||||
|
merge_request: 21029
|
||||||
|
author:
|
||||||
|
type: fixed
|
|
@ -1,11 +1,9 @@
|
||||||
import Clusters from '~/clusters/clusters_bundle';
|
import Clusters from '~/clusters/clusters_bundle';
|
||||||
import {
|
import {
|
||||||
APPLICATION_INSTALLABLE,
|
|
||||||
APPLICATION_INSTALLING,
|
|
||||||
APPLICATION_INSTALLED,
|
|
||||||
REQUEST_LOADING,
|
REQUEST_LOADING,
|
||||||
REQUEST_SUCCESS,
|
REQUEST_SUCCESS,
|
||||||
REQUEST_FAILURE,
|
REQUEST_FAILURE,
|
||||||
|
APPLICATION_STATUS,
|
||||||
} from '~/clusters/constants';
|
} from '~/clusters/constants';
|
||||||
import getSetTimeoutPromise from 'spec/helpers/set_timeout_promise_helper';
|
import getSetTimeoutPromise from 'spec/helpers/set_timeout_promise_helper';
|
||||||
|
|
||||||
|
@ -84,7 +82,7 @@ describe('Clusters', () => {
|
||||||
it('does not show alert when things transition from initial null state to something', () => {
|
it('does not show alert when things transition from initial null state to something', () => {
|
||||||
cluster.checkForNewInstalls(INITIAL_APP_MAP, {
|
cluster.checkForNewInstalls(INITIAL_APP_MAP, {
|
||||||
...INITIAL_APP_MAP,
|
...INITIAL_APP_MAP,
|
||||||
helm: { status: APPLICATION_INSTALLABLE, title: 'Helm Tiller' },
|
helm: { status: APPLICATION_STATUS.INSTALLABLE, title: 'Helm Tiller' },
|
||||||
});
|
});
|
||||||
|
|
||||||
const flashMessage = document.querySelector('.js-cluster-application-notice .flash-text');
|
const flashMessage = document.querySelector('.js-cluster-application-notice .flash-text');
|
||||||
|
@ -94,10 +92,10 @@ describe('Clusters', () => {
|
||||||
it('shows an alert when something gets newly installed', () => {
|
it('shows an alert when something gets newly installed', () => {
|
||||||
cluster.checkForNewInstalls({
|
cluster.checkForNewInstalls({
|
||||||
...INITIAL_APP_MAP,
|
...INITIAL_APP_MAP,
|
||||||
helm: { status: APPLICATION_INSTALLING, title: 'Helm Tiller' },
|
helm: { status: APPLICATION_STATUS.INSTALLING, title: 'Helm Tiller' },
|
||||||
}, {
|
}, {
|
||||||
...INITIAL_APP_MAP,
|
...INITIAL_APP_MAP,
|
||||||
helm: { status: APPLICATION_INSTALLED, title: 'Helm Tiller' },
|
helm: { status: APPLICATION_STATUS.INSTALLED, title: 'Helm Tiller' },
|
||||||
});
|
});
|
||||||
|
|
||||||
const flashMessage = document.querySelector('.js-cluster-application-notice .flash-text');
|
const flashMessage = document.querySelector('.js-cluster-application-notice .flash-text');
|
||||||
|
@ -108,12 +106,12 @@ describe('Clusters', () => {
|
||||||
it('shows an alert when multiple things gets newly installed', () => {
|
it('shows an alert when multiple things gets newly installed', () => {
|
||||||
cluster.checkForNewInstalls({
|
cluster.checkForNewInstalls({
|
||||||
...INITIAL_APP_MAP,
|
...INITIAL_APP_MAP,
|
||||||
helm: { status: APPLICATION_INSTALLING, title: 'Helm Tiller' },
|
helm: { status: APPLICATION_STATUS.INSTALLING, title: 'Helm Tiller' },
|
||||||
ingress: { status: APPLICATION_INSTALLABLE, title: 'Ingress' },
|
ingress: { status: APPLICATION_STATUS.INSTALLABLE, title: 'Ingress' },
|
||||||
}, {
|
}, {
|
||||||
...INITIAL_APP_MAP,
|
...INITIAL_APP_MAP,
|
||||||
helm: { status: APPLICATION_INSTALLED, title: 'Helm Tiller' },
|
helm: { status: APPLICATION_STATUS.INSTALLED, title: 'Helm Tiller' },
|
||||||
ingress: { status: APPLICATION_INSTALLED, title: 'Ingress' },
|
ingress: { status: APPLICATION_STATUS.INSTALLED, title: 'Ingress' },
|
||||||
});
|
});
|
||||||
|
|
||||||
const flashMessage = document.querySelector('.js-cluster-application-notice .flash-text');
|
const flashMessage = document.querySelector('.js-cluster-application-notice .flash-text');
|
||||||
|
|
|
@ -1,12 +1,7 @@
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import eventHub from '~/clusters/event_hub';
|
import eventHub from '~/clusters/event_hub';
|
||||||
import {
|
import {
|
||||||
APPLICATION_NOT_INSTALLABLE,
|
APPLICATION_STATUS,
|
||||||
APPLICATION_SCHEDULED,
|
|
||||||
APPLICATION_INSTALLABLE,
|
|
||||||
APPLICATION_INSTALLING,
|
|
||||||
APPLICATION_INSTALLED,
|
|
||||||
APPLICATION_ERROR,
|
|
||||||
REQUEST_LOADING,
|
REQUEST_LOADING,
|
||||||
REQUEST_SUCCESS,
|
REQUEST_SUCCESS,
|
||||||
REQUEST_FAILURE,
|
REQUEST_FAILURE,
|
||||||
|
@ -62,10 +57,10 @@ describe('Application Row', () => {
|
||||||
expect(vm.installButtonLabel).toBeUndefined();
|
expect(vm.installButtonLabel).toBeUndefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('has disabled "Install" when APPLICATION_NOT_INSTALLABLE', () => {
|
it('has disabled "Install" when APPLICATION_STATUS.NOT_INSTALLABLE', () => {
|
||||||
vm = mountComponent(ApplicationRow, {
|
vm = mountComponent(ApplicationRow, {
|
||||||
...DEFAULT_APPLICATION_STATE,
|
...DEFAULT_APPLICATION_STATE,
|
||||||
status: APPLICATION_NOT_INSTALLABLE,
|
status: APPLICATION_STATUS.NOT_INSTALLABLE,
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(vm.installButtonLabel).toEqual('Install');
|
expect(vm.installButtonLabel).toEqual('Install');
|
||||||
|
@ -73,10 +68,10 @@ describe('Application Row', () => {
|
||||||
expect(vm.installButtonDisabled).toEqual(true);
|
expect(vm.installButtonDisabled).toEqual(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('has enabled "Install" when APPLICATION_INSTALLABLE', () => {
|
it('has enabled "Install" when APPLICATION_STATUS.INSTALLABLE', () => {
|
||||||
vm = mountComponent(ApplicationRow, {
|
vm = mountComponent(ApplicationRow, {
|
||||||
...DEFAULT_APPLICATION_STATE,
|
...DEFAULT_APPLICATION_STATE,
|
||||||
status: APPLICATION_INSTALLABLE,
|
status: APPLICATION_STATUS.INSTALLABLE,
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(vm.installButtonLabel).toEqual('Install');
|
expect(vm.installButtonLabel).toEqual('Install');
|
||||||
|
@ -84,10 +79,10 @@ describe('Application Row', () => {
|
||||||
expect(vm.installButtonDisabled).toEqual(false);
|
expect(vm.installButtonDisabled).toEqual(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('has loading "Installing" when APPLICATION_SCHEDULED', () => {
|
it('has loading "Installing" when APPLICATION_STATUS.SCHEDULED', () => {
|
||||||
vm = mountComponent(ApplicationRow, {
|
vm = mountComponent(ApplicationRow, {
|
||||||
...DEFAULT_APPLICATION_STATE,
|
...DEFAULT_APPLICATION_STATE,
|
||||||
status: APPLICATION_SCHEDULED,
|
status: APPLICATION_STATUS.SCHEDULED,
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(vm.installButtonLabel).toEqual('Installing');
|
expect(vm.installButtonLabel).toEqual('Installing');
|
||||||
|
@ -95,10 +90,10 @@ describe('Application Row', () => {
|
||||||
expect(vm.installButtonDisabled).toEqual(true);
|
expect(vm.installButtonDisabled).toEqual(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('has loading "Installing" when APPLICATION_INSTALLING', () => {
|
it('has loading "Installing" when APPLICATION_STATUS.INSTALLING', () => {
|
||||||
vm = mountComponent(ApplicationRow, {
|
vm = mountComponent(ApplicationRow, {
|
||||||
...DEFAULT_APPLICATION_STATE,
|
...DEFAULT_APPLICATION_STATE,
|
||||||
status: APPLICATION_INSTALLING,
|
status: APPLICATION_STATUS.INSTALLING,
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(vm.installButtonLabel).toEqual('Installing');
|
expect(vm.installButtonLabel).toEqual('Installing');
|
||||||
|
@ -106,10 +101,10 @@ describe('Application Row', () => {
|
||||||
expect(vm.installButtonDisabled).toEqual(true);
|
expect(vm.installButtonDisabled).toEqual(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('has disabled "Installed" when APPLICATION_INSTALLED', () => {
|
it('has disabled "Installed" when APPLICATION_STATUS.INSTALLED', () => {
|
||||||
vm = mountComponent(ApplicationRow, {
|
vm = mountComponent(ApplicationRow, {
|
||||||
...DEFAULT_APPLICATION_STATE,
|
...DEFAULT_APPLICATION_STATE,
|
||||||
status: APPLICATION_INSTALLED,
|
status: APPLICATION_STATUS.INSTALLED,
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(vm.installButtonLabel).toEqual('Installed');
|
expect(vm.installButtonLabel).toEqual('Installed');
|
||||||
|
@ -117,10 +112,10 @@ describe('Application Row', () => {
|
||||||
expect(vm.installButtonDisabled).toEqual(true);
|
expect(vm.installButtonDisabled).toEqual(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('has enabled "Install" when APPLICATION_ERROR', () => {
|
it('has enabled "Install" when APPLICATION_STATUS.ERROR', () => {
|
||||||
vm = mountComponent(ApplicationRow, {
|
vm = mountComponent(ApplicationRow, {
|
||||||
...DEFAULT_APPLICATION_STATE,
|
...DEFAULT_APPLICATION_STATE,
|
||||||
status: APPLICATION_ERROR,
|
status: APPLICATION_STATUS.ERROR,
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(vm.installButtonLabel).toEqual('Install');
|
expect(vm.installButtonLabel).toEqual('Install');
|
||||||
|
@ -131,7 +126,7 @@ describe('Application Row', () => {
|
||||||
it('has loading "Install" when REQUEST_LOADING', () => {
|
it('has loading "Install" when REQUEST_LOADING', () => {
|
||||||
vm = mountComponent(ApplicationRow, {
|
vm = mountComponent(ApplicationRow, {
|
||||||
...DEFAULT_APPLICATION_STATE,
|
...DEFAULT_APPLICATION_STATE,
|
||||||
status: APPLICATION_INSTALLABLE,
|
status: APPLICATION_STATUS.INSTALLABLE,
|
||||||
requestStatus: REQUEST_LOADING,
|
requestStatus: REQUEST_LOADING,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -143,7 +138,7 @@ describe('Application Row', () => {
|
||||||
it('has disabled "Install" when REQUEST_SUCCESS', () => {
|
it('has disabled "Install" when REQUEST_SUCCESS', () => {
|
||||||
vm = mountComponent(ApplicationRow, {
|
vm = mountComponent(ApplicationRow, {
|
||||||
...DEFAULT_APPLICATION_STATE,
|
...DEFAULT_APPLICATION_STATE,
|
||||||
status: APPLICATION_INSTALLABLE,
|
status: APPLICATION_STATUS.INSTALLABLE,
|
||||||
requestStatus: REQUEST_SUCCESS,
|
requestStatus: REQUEST_SUCCESS,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -155,7 +150,7 @@ describe('Application Row', () => {
|
||||||
it('has enabled "Install" when REQUEST_FAILURE (so you can try installing again)', () => {
|
it('has enabled "Install" when REQUEST_FAILURE (so you can try installing again)', () => {
|
||||||
vm = mountComponent(ApplicationRow, {
|
vm = mountComponent(ApplicationRow, {
|
||||||
...DEFAULT_APPLICATION_STATE,
|
...DEFAULT_APPLICATION_STATE,
|
||||||
status: APPLICATION_INSTALLABLE,
|
status: APPLICATION_STATUS.INSTALLABLE,
|
||||||
requestStatus: REQUEST_FAILURE,
|
requestStatus: REQUEST_FAILURE,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -168,7 +163,7 @@ describe('Application Row', () => {
|
||||||
spyOn(eventHub, '$emit');
|
spyOn(eventHub, '$emit');
|
||||||
vm = mountComponent(ApplicationRow, {
|
vm = mountComponent(ApplicationRow, {
|
||||||
...DEFAULT_APPLICATION_STATE,
|
...DEFAULT_APPLICATION_STATE,
|
||||||
status: APPLICATION_INSTALLABLE,
|
status: APPLICATION_STATUS.INSTALLABLE,
|
||||||
});
|
});
|
||||||
const installButton = vm.$el.querySelector('.js-cluster-application-install-button');
|
const installButton = vm.$el.querySelector('.js-cluster-application-install-button');
|
||||||
|
|
||||||
|
@ -184,7 +179,7 @@ describe('Application Row', () => {
|
||||||
spyOn(eventHub, '$emit');
|
spyOn(eventHub, '$emit');
|
||||||
vm = mountComponent(ApplicationRow, {
|
vm = mountComponent(ApplicationRow, {
|
||||||
...DEFAULT_APPLICATION_STATE,
|
...DEFAULT_APPLICATION_STATE,
|
||||||
status: APPLICATION_INSTALLABLE,
|
status: APPLICATION_STATUS.INSTALLABLE,
|
||||||
installApplicationRequestParams: { hostname: 'jupyter' },
|
installApplicationRequestParams: { hostname: 'jupyter' },
|
||||||
});
|
});
|
||||||
const installButton = vm.$el.querySelector('.js-cluster-application-install-button');
|
const installButton = vm.$el.querySelector('.js-cluster-application-install-button');
|
||||||
|
@ -201,7 +196,7 @@ describe('Application Row', () => {
|
||||||
spyOn(eventHub, '$emit');
|
spyOn(eventHub, '$emit');
|
||||||
vm = mountComponent(ApplicationRow, {
|
vm = mountComponent(ApplicationRow, {
|
||||||
...DEFAULT_APPLICATION_STATE,
|
...DEFAULT_APPLICATION_STATE,
|
||||||
status: APPLICATION_INSTALLING,
|
status: APPLICATION_STATUS.INSTALLING,
|
||||||
});
|
});
|
||||||
const installButton = vm.$el.querySelector('.js-cluster-application-install-button');
|
const installButton = vm.$el.querySelector('.js-cluster-application-install-button');
|
||||||
|
|
||||||
|
@ -225,11 +220,11 @@ describe('Application Row', () => {
|
||||||
expect(generalErrorMessage).toBeNull();
|
expect(generalErrorMessage).toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('shows status reason when APPLICATION_ERROR', () => {
|
it('shows status reason when APPLICATION_STATUS.ERROR', () => {
|
||||||
const statusReason = 'We broke it 0.0';
|
const statusReason = 'We broke it 0.0';
|
||||||
vm = mountComponent(ApplicationRow, {
|
vm = mountComponent(ApplicationRow, {
|
||||||
...DEFAULT_APPLICATION_STATE,
|
...DEFAULT_APPLICATION_STATE,
|
||||||
status: APPLICATION_ERROR,
|
status: APPLICATION_STATUS.ERROR,
|
||||||
statusReason,
|
statusReason,
|
||||||
});
|
});
|
||||||
const generalErrorMessage = vm.$el.querySelector('.js-cluster-application-general-error-message');
|
const generalErrorMessage = vm.$el.querySelector('.js-cluster-application-general-error-message');
|
||||||
|
@ -243,7 +238,7 @@ describe('Application Row', () => {
|
||||||
const requestReason = 'We broke thre request 0.0';
|
const requestReason = 'We broke thre request 0.0';
|
||||||
vm = mountComponent(ApplicationRow, {
|
vm = mountComponent(ApplicationRow, {
|
||||||
...DEFAULT_APPLICATION_STATE,
|
...DEFAULT_APPLICATION_STATE,
|
||||||
status: APPLICATION_INSTALLABLE,
|
status: APPLICATION_STATUS.INSTALLABLE,
|
||||||
requestStatus: REQUEST_FAILURE,
|
requestStatus: REQUEST_FAILURE,
|
||||||
requestReason,
|
requestReason,
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,9 +1,4 @@
|
||||||
import {
|
import { APPLICATION_STATUS } from '~/clusters/constants';
|
||||||
APPLICATION_INSTALLED,
|
|
||||||
APPLICATION_INSTALLABLE,
|
|
||||||
APPLICATION_INSTALLING,
|
|
||||||
APPLICATION_ERROR,
|
|
||||||
} from '~/clusters/constants';
|
|
||||||
|
|
||||||
const CLUSTERS_MOCK_DATA = {
|
const CLUSTERS_MOCK_DATA = {
|
||||||
GET: {
|
GET: {
|
||||||
|
@ -13,25 +8,25 @@ const CLUSTERS_MOCK_DATA = {
|
||||||
status_reason: 'Failed to request to CloudPlatform.',
|
status_reason: 'Failed to request to CloudPlatform.',
|
||||||
applications: [{
|
applications: [{
|
||||||
name: 'helm',
|
name: 'helm',
|
||||||
status: APPLICATION_INSTALLABLE,
|
status: APPLICATION_STATUS.INSTALLABLE,
|
||||||
status_reason: null,
|
status_reason: null,
|
||||||
}, {
|
}, {
|
||||||
name: 'ingress',
|
name: 'ingress',
|
||||||
status: APPLICATION_ERROR,
|
status: APPLICATION_STATUS.ERROR,
|
||||||
status_reason: 'Cannot connect',
|
status_reason: 'Cannot connect',
|
||||||
external_ip: null,
|
external_ip: null,
|
||||||
}, {
|
}, {
|
||||||
name: 'runner',
|
name: 'runner',
|
||||||
status: APPLICATION_INSTALLING,
|
status: APPLICATION_STATUS.INSTALLING,
|
||||||
status_reason: null,
|
status_reason: null,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'prometheus',
|
name: 'prometheus',
|
||||||
status: APPLICATION_ERROR,
|
status: APPLICATION_STATUS.ERROR,
|
||||||
status_reason: 'Cannot connect',
|
status_reason: 'Cannot connect',
|
||||||
}, {
|
}, {
|
||||||
name: 'jupyter',
|
name: 'jupyter',
|
||||||
status: APPLICATION_INSTALLING,
|
status: APPLICATION_STATUS.INSTALLING,
|
||||||
status_reason: 'Cannot connect',
|
status_reason: 'Cannot connect',
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
|
@ -42,25 +37,25 @@ const CLUSTERS_MOCK_DATA = {
|
||||||
status_reason: 'Failed to request to CloudPlatform.',
|
status_reason: 'Failed to request to CloudPlatform.',
|
||||||
applications: [{
|
applications: [{
|
||||||
name: 'helm',
|
name: 'helm',
|
||||||
status: APPLICATION_INSTALLED,
|
status: APPLICATION_STATUS.INSTALLED,
|
||||||
status_reason: null,
|
status_reason: null,
|
||||||
}, {
|
}, {
|
||||||
name: 'ingress',
|
name: 'ingress',
|
||||||
status: APPLICATION_INSTALLED,
|
status: APPLICATION_STATUS.INSTALLED,
|
||||||
status_reason: 'Cannot connect',
|
status_reason: 'Cannot connect',
|
||||||
external_ip: '1.1.1.1',
|
external_ip: '1.1.1.1',
|
||||||
}, {
|
}, {
|
||||||
name: 'runner',
|
name: 'runner',
|
||||||
status: APPLICATION_INSTALLING,
|
status: APPLICATION_STATUS.INSTALLING,
|
||||||
status_reason: null,
|
status_reason: null,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'prometheus',
|
name: 'prometheus',
|
||||||
status: APPLICATION_ERROR,
|
status: APPLICATION_STATUS.ERROR,
|
||||||
status_reason: 'Cannot connect',
|
status_reason: 'Cannot connect',
|
||||||
}, {
|
}, {
|
||||||
name: 'jupyter',
|
name: 'jupyter',
|
||||||
status: APPLICATION_INSTALLABLE,
|
status: APPLICATION_STATUS.INSTALLABLE,
|
||||||
status_reason: 'Cannot connect',
|
status_reason: 'Cannot connect',
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import ClustersStore from '~/clusters/stores/clusters_store';
|
import ClustersStore from '~/clusters/stores/clusters_store';
|
||||||
import { APPLICATION_INSTALLING } from '~/clusters/constants';
|
import { APPLICATION_STATUS } from '~/clusters/constants';
|
||||||
import { CLUSTERS_MOCK_DATA } from '../services/mock_data';
|
import { CLUSTERS_MOCK_DATA } from '../services/mock_data';
|
||||||
|
|
||||||
describe('Clusters Store', () => {
|
describe('Clusters Store', () => {
|
||||||
|
@ -35,7 +35,7 @@ describe('Clusters Store', () => {
|
||||||
it('should store new request status', () => {
|
it('should store new request status', () => {
|
||||||
expect(store.state.applications.helm.requestStatus).toEqual(null);
|
expect(store.state.applications.helm.requestStatus).toEqual(null);
|
||||||
|
|
||||||
const newStatus = APPLICATION_INSTALLING;
|
const newStatus = APPLICATION_STATUS.INSTALLING;
|
||||||
store.updateAppProperty('helm', 'requestStatus', newStatus);
|
store.updateAppProperty('helm', 'requestStatus', newStatus);
|
||||||
|
|
||||||
expect(store.state.applications.helm.requestStatus).toEqual(newStatus);
|
expect(store.state.applications.helm.requestStatus).toEqual(newStatus);
|
||||||
|
|
Loading…
Reference in a new issue