Remove service from actions dropdown, stop button and redeploy button
This commit is contained in:
parent
cac04fbd77
commit
2d6f1e9600
10 changed files with 32 additions and 117 deletions
|
@ -71,6 +71,7 @@ export default {
|
||||||
|
|
||||||
eventHub.$on('refreshEnvironments', this.fetchEnvironments);
|
eventHub.$on('refreshEnvironments', this.fetchEnvironments);
|
||||||
eventHub.$on('toggleFolder', this.toggleFolder);
|
eventHub.$on('toggleFolder', this.toggleFolder);
|
||||||
|
eventHub.$on('postAction', this.postAction);
|
||||||
},
|
},
|
||||||
|
|
||||||
beforeDestroyed() {
|
beforeDestroyed() {
|
||||||
|
@ -140,6 +141,17 @@ export default {
|
||||||
new Flash('An error occurred while fetching the environments.');
|
new Flash('An error occurred while fetching the environments.');
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
postAction(endpoint) {
|
||||||
|
this.service.postAction(endpoint)
|
||||||
|
.then(() => {
|
||||||
|
this.fetchEnvironments();
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
// eslint-disable-next-line no-new
|
||||||
|
new Flash('An error occured while making the request.');
|
||||||
|
});
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
@ -217,7 +229,6 @@ export default {
|
||||||
:environments="state.environments"
|
:environments="state.environments"
|
||||||
:can-create-deployment="canCreateDeploymentParsed"
|
:can-create-deployment="canCreateDeploymentParsed"
|
||||||
:can-read-environment="canReadEnvironmentParsed"
|
:can-read-environment="canReadEnvironmentParsed"
|
||||||
:service="service"
|
|
||||||
:is-loading-folder-content="isLoadingFolderContent" />
|
:is-loading-folder-content="isLoadingFolderContent" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
<script>
|
<script>
|
||||||
/* global Flash */
|
|
||||||
/* eslint-disable no-new */
|
|
||||||
|
|
||||||
import playIconSvg from 'icons/_icon_play.svg';
|
import playIconSvg from 'icons/_icon_play.svg';
|
||||||
import eventHub from '../event_hub';
|
import eventHub from '../event_hub';
|
||||||
|
|
||||||
|
@ -12,11 +9,6 @@ export default {
|
||||||
required: false,
|
required: false,
|
||||||
default: () => [],
|
default: () => [],
|
||||||
},
|
},
|
||||||
|
|
||||||
service: {
|
|
||||||
type: Object,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
|
@ -38,15 +30,7 @@ export default {
|
||||||
|
|
||||||
$(this.$refs.tooltip).tooltip('destroy');
|
$(this.$refs.tooltip).tooltip('destroy');
|
||||||
|
|
||||||
this.service.postAction(endpoint)
|
eventHub.$emit('postAction', endpoint);
|
||||||
.then(() => {
|
|
||||||
this.isLoading = false;
|
|
||||||
eventHub.$emit('refreshEnvironments');
|
|
||||||
})
|
|
||||||
.catch(() => {
|
|
||||||
this.isLoading = false;
|
|
||||||
new Flash('An error occured while making the request.');
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
isActionDisabled(action) {
|
isActionDisabled(action) {
|
||||||
|
|
|
@ -46,11 +46,6 @@ export default {
|
||||||
required: false,
|
required: false,
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
|
|
||||||
service: {
|
|
||||||
type: Object,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -543,31 +538,34 @@ export default {
|
||||||
|
|
||||||
<actions-component
|
<actions-component
|
||||||
v-if="hasManualActions && canCreateDeployment"
|
v-if="hasManualActions && canCreateDeployment"
|
||||||
:service="service"
|
:actions="manualActions"
|
||||||
:actions="manualActions"/>
|
/>
|
||||||
|
|
||||||
<external-url-component
|
<external-url-component
|
||||||
v-if="externalURL && canReadEnvironment"
|
v-if="externalURL && canReadEnvironment"
|
||||||
:external-url="externalURL"/>
|
:external-url="externalURL"
|
||||||
|
/>
|
||||||
|
|
||||||
<monitoring-button-component
|
<monitoring-button-component
|
||||||
v-if="monitoringUrl && canReadEnvironment"
|
v-if="monitoringUrl && canReadEnvironment"
|
||||||
:monitoring-url="monitoringUrl"/>
|
:monitoring-url="monitoringUrl"
|
||||||
|
/>
|
||||||
|
|
||||||
<terminal-button-component
|
<terminal-button-component
|
||||||
v-if="model && model.terminal_path"
|
v-if="model && model.terminal_path"
|
||||||
:terminal-path="model.terminal_path"/>
|
:terminal-path="model.terminal_path"
|
||||||
|
/>
|
||||||
|
|
||||||
<stop-component
|
<stop-component
|
||||||
v-if="hasStopAction && canCreateDeployment"
|
v-if="hasStopAction && canCreateDeployment"
|
||||||
:stop-url="model.stop_path"
|
:stop-url="model.stop_path"
|
||||||
:service="service"/>
|
/>
|
||||||
|
|
||||||
<rollback-component
|
<rollback-component
|
||||||
v-if="canRetry && canCreateDeployment"
|
v-if="canRetry && canCreateDeployment"
|
||||||
:is-last-deployment="isLastDeployment"
|
:is-last-deployment="isLastDeployment"
|
||||||
:retry-url="retryUrl"
|
:retry-url="retryUrl"
|
||||||
:service="service"/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
<script>
|
<script>
|
||||||
/* global Flash */
|
|
||||||
/* eslint-disable no-new */
|
|
||||||
/**
|
/**
|
||||||
* Renders Rollback or Re deploy button in environments table depending
|
* Renders Rollback or Re deploy button in environments table depending
|
||||||
* of the provided property `isLastDeployment`.
|
* of the provided property `isLastDeployment`.
|
||||||
|
@ -20,11 +18,6 @@ export default {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true,
|
default: true,
|
||||||
},
|
},
|
||||||
|
|
||||||
service: {
|
|
||||||
type: Object,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
|
@ -37,17 +30,7 @@ export default {
|
||||||
onClick() {
|
onClick() {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
|
|
||||||
$(this.$el).tooltip('destroy');
|
eventHub.$emit('postAction', this.retryUrl);
|
||||||
|
|
||||||
this.service.postAction(this.retryUrl)
|
|
||||||
.then(() => {
|
|
||||||
this.isLoading = false;
|
|
||||||
eventHub.$emit('refreshEnvironments');
|
|
||||||
})
|
|
||||||
.catch(() => {
|
|
||||||
this.isLoading = false;
|
|
||||||
new Flash('An error occured while making the request.');
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
<script>
|
<script>
|
||||||
/* global Flash */
|
|
||||||
/* eslint-disable no-new, no-alert */
|
|
||||||
/**
|
/**
|
||||||
* Renders the stop "button" that allows stop an environment.
|
* Renders the stop "button" that allows stop an environment.
|
||||||
* Used in environments table.
|
* Used in environments table.
|
||||||
|
@ -13,11 +11,6 @@ export default {
|
||||||
type: String,
|
type: String,
|
||||||
default: '',
|
default: '',
|
||||||
},
|
},
|
||||||
|
|
||||||
service: {
|
|
||||||
type: Object,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
|
@ -34,20 +27,13 @@ export default {
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
onClick() {
|
onClick() {
|
||||||
|
// eslint-disable-next-line no-alert
|
||||||
if (confirm('Are you sure you want to stop this environment?')) {
|
if (confirm('Are you sure you want to stop this environment?')) {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
|
|
||||||
$(this.$el).tooltip('destroy');
|
$(this.$el).tooltip('destroy');
|
||||||
|
|
||||||
this.service.postAction(this.retryUrl)
|
eventHub.$emit('postAction', this.stopUrl);
|
||||||
.then(() => {
|
|
||||||
this.isLoading = false;
|
|
||||||
eventHub.$emit('refreshEnvironments');
|
|
||||||
})
|
|
||||||
.catch(() => {
|
|
||||||
this.isLoading = false;
|
|
||||||
new Flash('An error occured while making the request.', 'alert');
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -28,11 +28,6 @@ export default {
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
|
|
||||||
service: {
|
|
||||||
type: Object,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
|
|
||||||
isLoadingFolderContent: {
|
isLoadingFolderContent: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: false,
|
required: false,
|
||||||
|
@ -78,7 +73,7 @@ export default {
|
||||||
:model="model"
|
:model="model"
|
||||||
:can-create-deployment="canCreateDeployment"
|
:can-create-deployment="canCreateDeployment"
|
||||||
:can-read-environment="canReadEnvironment"
|
:can-read-environment="canReadEnvironment"
|
||||||
:service="service" />
|
/>
|
||||||
|
|
||||||
<template v-if="model.isFolder && model.isOpen && model.children && model.children.length > 0">
|
<template v-if="model.isFolder && model.isOpen && model.children && model.children.length > 0">
|
||||||
<tr v-if="isLoadingFolderContent">
|
<tr v-if="isLoadingFolderContent">
|
||||||
|
@ -96,7 +91,7 @@ export default {
|
||||||
:model="children"
|
:model="children"
|
||||||
:can-create-deployment="canCreateDeployment"
|
:can-create-deployment="canCreateDeployment"
|
||||||
:can-read-environment="canReadEnvironment"
|
:can-read-environment="canReadEnvironment"
|
||||||
:service="service" />
|
/>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td
|
<td
|
||||||
|
|
4
changelogs/unreleased/31156-environments-vue-service.yml
Normal file
4
changelogs/unreleased/31156-environments-vue-service.yml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
title: Fix environments vue architecture to match documentation
|
||||||
|
merge_request:
|
||||||
|
author:
|
|
@ -4,7 +4,6 @@ import actionsComp from '~/environments/components/environment_actions.vue';
|
||||||
describe('Actions Component', () => {
|
describe('Actions Component', () => {
|
||||||
let ActionsComponent;
|
let ActionsComponent;
|
||||||
let actionsMock;
|
let actionsMock;
|
||||||
let spy;
|
|
||||||
let component;
|
let component;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
@ -26,13 +25,9 @@ describe('Actions Component', () => {
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
spy = jasmine.createSpy('spy').and.returnValue(Promise.resolve());
|
|
||||||
component = new ActionsComponent({
|
component = new ActionsComponent({
|
||||||
propsData: {
|
propsData: {
|
||||||
actions: actionsMock,
|
actions: actionsMock,
|
||||||
service: {
|
|
||||||
postAction: spy,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}).$mount();
|
}).$mount();
|
||||||
});
|
});
|
||||||
|
@ -48,13 +43,6 @@ describe('Actions Component', () => {
|
||||||
).toEqual(actionsMock.length);
|
).toEqual(actionsMock.length);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should call the service when an action is clicked', () => {
|
|
||||||
component.$el.querySelector('.dropdown').click();
|
|
||||||
component.$el.querySelector('.js-manual-action-link').click();
|
|
||||||
|
|
||||||
expect(spy).toHaveBeenCalledWith(actionsMock[0].play_path);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should render a disabled action when it\'s not playable', () => {
|
it('should render a disabled action when it\'s not playable', () => {
|
||||||
expect(
|
expect(
|
||||||
component.$el.querySelector('.dropdown-menu li:last-child button').getAttribute('disabled'),
|
component.$el.querySelector('.dropdown-menu li:last-child button').getAttribute('disabled'),
|
||||||
|
|
|
@ -4,11 +4,9 @@ import rollbackComp from '~/environments/components/environment_rollback.vue';
|
||||||
describe('Rollback Component', () => {
|
describe('Rollback Component', () => {
|
||||||
const retryURL = 'https://gitlab.com/retry';
|
const retryURL = 'https://gitlab.com/retry';
|
||||||
let RollbackComponent;
|
let RollbackComponent;
|
||||||
let spy;
|
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
RollbackComponent = Vue.extend(rollbackComp);
|
RollbackComponent = Vue.extend(rollbackComp);
|
||||||
spy = jasmine.createSpy('spy').and.returnValue(Promise.resolve());
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Should render Re-deploy label when isLastDeployment is true', () => {
|
it('Should render Re-deploy label when isLastDeployment is true', () => {
|
||||||
|
@ -17,9 +15,6 @@ describe('Rollback Component', () => {
|
||||||
propsData: {
|
propsData: {
|
||||||
retryUrl: retryURL,
|
retryUrl: retryURL,
|
||||||
isLastDeployment: true,
|
isLastDeployment: true,
|
||||||
service: {
|
|
||||||
postAction: spy,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}).$mount();
|
}).$mount();
|
||||||
|
|
||||||
|
@ -32,28 +27,9 @@ describe('Rollback Component', () => {
|
||||||
propsData: {
|
propsData: {
|
||||||
retryUrl: retryURL,
|
retryUrl: retryURL,
|
||||||
isLastDeployment: false,
|
isLastDeployment: false,
|
||||||
service: {
|
|
||||||
postAction: spy,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}).$mount();
|
}).$mount();
|
||||||
|
|
||||||
expect(component.$el.querySelector('span').textContent).toContain('Rollback');
|
expect(component.$el.querySelector('span').textContent).toContain('Rollback');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should call the service when the button is clicked', () => {
|
|
||||||
const component = new RollbackComponent({
|
|
||||||
propsData: {
|
|
||||||
retryUrl: retryURL,
|
|
||||||
isLastDeployment: false,
|
|
||||||
service: {
|
|
||||||
postAction: spy,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}).$mount();
|
|
||||||
|
|
||||||
component.$el.click();
|
|
||||||
|
|
||||||
expect(spy).toHaveBeenCalledWith(retryURL);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -4,20 +4,15 @@ import stopComp from '~/environments/components/environment_stop.vue';
|
||||||
describe('Stop Component', () => {
|
describe('Stop Component', () => {
|
||||||
let StopComponent;
|
let StopComponent;
|
||||||
let component;
|
let component;
|
||||||
let spy;
|
|
||||||
const stopURL = '/stop';
|
const stopURL = '/stop';
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
StopComponent = Vue.extend(stopComp);
|
StopComponent = Vue.extend(stopComp);
|
||||||
spy = jasmine.createSpy('spy').and.returnValue(Promise.resolve());
|
|
||||||
spyOn(window, 'confirm').and.returnValue(true);
|
spyOn(window, 'confirm').and.returnValue(true);
|
||||||
|
|
||||||
component = new StopComponent({
|
component = new StopComponent({
|
||||||
propsData: {
|
propsData: {
|
||||||
stopUrl: stopURL,
|
stopUrl: stopURL,
|
||||||
service: {
|
|
||||||
postAction: spy,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}).$mount();
|
}).$mount();
|
||||||
});
|
});
|
||||||
|
@ -26,9 +21,4 @@ describe('Stop Component', () => {
|
||||||
expect(component.$el.tagName).toEqual('BUTTON');
|
expect(component.$el.tagName).toEqual('BUTTON');
|
||||||
expect(component.$el.getAttribute('title')).toEqual('Stop');
|
expect(component.$el.getAttribute('title')).toEqual('Stop');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should call the service when an action is clicked', () => {
|
|
||||||
component.$el.click();
|
|
||||||
expect(spy).toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue