From a04c09a24a51b57c9ce34ba631ac099ccd8d14c7 Mon Sep 17 00:00:00 2001 From: Filipa Lacerda Date: Fri, 8 Mar 2019 10:01:46 +0000 Subject: [PATCH 1/2] Reduces EE differences for environments table Async loads EE components Creates a Mixin for EE properties --- .../components/environments_table.vue | 27 +++++++--------- .../mixins/environment_table_mixin.js | 12 +++++++ changelogs/unreleased/10081-env-table.yml | 5 +++ .../environments/environment_table_spec.js | 32 +++++-------------- 4 files changed, 36 insertions(+), 40 deletions(-) create mode 100644 app/assets/javascripts/environments/mixins/environment_table_mixin.js create mode 100644 changelogs/unreleased/10081-env-table.yml diff --git a/app/assets/javascripts/environments/components/environments_table.vue b/app/assets/javascripts/environments/components/environments_table.vue index fdee8e6a081280..48538093aef7e4 100644 --- a/app/assets/javascripts/environments/components/environments_table.vue +++ b/app/assets/javascripts/environments/components/environments_table.vue @@ -4,23 +4,18 @@ */ import { GlLoadingIcon } from '@gitlab/ui'; import _ from 'underscore'; -import environmentItem from './environment_item.vue'; // eslint-disable-line import/order - -// ee-only start -import deployBoard from 'ee/environments/components/deploy_board_component.vue'; -import CanaryDeploymentCallout from 'ee/environments/components/canary_deployment_callout.vue'; -// ee-only end +import EnvironmentItem from './environment_item.vue'; +import environmentTableMixin from 'ee_else_ce/environments/mixins/environment_table_mixin'; export default { components: { - environmentItem, - deployBoard, + EnvironmentItem, GlLoadingIcon, - // ee-only start - CanaryDeploymentCallout, - // ee-only end + DeployBoard: () => import('ee_component/environments/components/deploy_board_component.vue'), + CanaryDeploymentCallout: () => + import('ee_component/environments/components/canary_deployment_callout.vue'), }, - + mixins: [environmentTableMixin], props: { environments: { type: Array, @@ -137,7 +132,7 @@ export default { />
@@ -167,9 +162,9 @@ export default {
diff --git a/app/assets/javascripts/environments/mixins/environment_table_mixin.js b/app/assets/javascripts/environments/mixins/environment_table_mixin.js new file mode 100644 index 00000000000000..94947b8e32ad61 --- /dev/null +++ b/app/assets/javascripts/environments/mixins/environment_table_mixin.js @@ -0,0 +1,12 @@ +export default { + methods: { + shouldShowCanaryCallout() { + return false; + }, + }, + props: { + shouldRenderDeployBoard() { + return false; + }, + }, +}; diff --git a/changelogs/unreleased/10081-env-table.yml b/changelogs/unreleased/10081-env-table.yml new file mode 100644 index 00000000000000..b27a1be8ccaa3d --- /dev/null +++ b/changelogs/unreleased/10081-env-table.yml @@ -0,0 +1,5 @@ +--- +title: Removes EE differences for environments_table.vue +merge_request: +author: +type: other diff --git a/spec/javascripts/environments/environment_table_spec.js b/spec/javascripts/environments/environment_table_spec.js index edc5b1f5c2432b..a3f34232a85d90 100644 --- a/spec/javascripts/environments/environment_table_spec.js +++ b/spec/javascripts/environments/environment_table_spec.js @@ -5,21 +5,17 @@ import mountComponent from 'spec/helpers/vue_mount_component_helper'; describe('Environment table', () => { let Component; let vm; - // ee-only start - let eeOnlyProps; - // ee-only end + + const eeOnlyProps = { + canaryDeploymentFeatureId: 'canary_deployment', + showCanaryDeploymentCallout: true, + userCalloutsPath: '/callouts', + lockPromotionSvgPath: '/assets/illustrations/lock-promotion.svg', + helpCanaryDeploymentsPath: 'help/canary-deployments', + }; beforeEach(() => { Component = Vue.extend(environmentTableComp); - // ee-only start - eeOnlyProps = { - canaryDeploymentFeatureId: 'canary_deployment', - showCanaryDeploymentCallout: true, - userCalloutsPath: '/callouts', - lockPromotionSvgPath: '/assets/illustrations/lock-promotion.svg', - helpCanaryDeploymentsPath: 'help/canary-deployments', - }; - // ee-only end }); afterEach(() => { @@ -39,9 +35,7 @@ describe('Environment table', () => { vm = mountComponent(Component, { environments: [mockItem], canReadEnvironment: true, - // ee-only start ...eeOnlyProps, - // ee-only end }); expect(vm.$el.getAttribute('class')).toContain('ci-table'); @@ -82,9 +76,7 @@ describe('Environment table', () => { vm = mountComponent(Component, { environments: mockItems, canReadEnvironment: true, - // ee-only start ...eeOnlyProps, - // ee-only end }); const [old, newer, older, noDeploy] = mockItems; @@ -148,9 +140,7 @@ describe('Environment table', () => { vm = mountComponent(Component, { environments: mockItems, canReadEnvironment: true, - // ee-only start ...eeOnlyProps, - // ee-only end }); const [prod, review, staging] = mockItems; @@ -187,9 +177,7 @@ describe('Environment table', () => { vm = mountComponent(Component, { environments: mockItems, canReadEnvironment: true, - // ee-only start ...eeOnlyProps, - // ee-only end }); const [old, newer, older] = mockItems; @@ -216,9 +204,7 @@ describe('Environment table', () => { vm = mountComponent(Component, { environments: mockItems, canReadEnvironment: true, - // ee-only start ...eeOnlyProps, - // ee-only end }); const [old, newer, older] = mockItems; @@ -267,9 +253,7 @@ describe('Environment table', () => { vm = mountComponent(Component, { environments: mockItems, canReadEnvironment: true, - // ee-only start ...eeOnlyProps, - // ee-only end }); expect(vm.sortedEnvironments.map(env => env.name)).toEqual([ -- GitLab From 8709507dfd1bb82b9bd944335f936319e7f0a50c Mon Sep 17 00:00:00 2001 From: Filipa Lacerda Date: Fri, 8 Mar 2019 10:13:12 +0000 Subject: [PATCH 2/2] Creates EE version of the mixin Cleans up specs --- .../components/environments_table.vue | 37 +------------------ ...e_mixin.js => environments_table_mixin.js} | 2 - .../mixins/environments_table_mixin.js | 32 ++++++++++++++++ .../environments/environments_table_spec.js | 8 ---- 4 files changed, 34 insertions(+), 45 deletions(-) rename app/assets/javascripts/environments/mixins/{environment_table_mixin.js => environments_table_mixin.js} (90%) create mode 100644 ee/app/assets/javascripts/environments/mixins/environments_table_mixin.js diff --git a/app/assets/javascripts/environments/components/environments_table.vue b/app/assets/javascripts/environments/components/environments_table.vue index 48538093aef7e4..55613d815ce79e 100644 --- a/app/assets/javascripts/environments/components/environments_table.vue +++ b/app/assets/javascripts/environments/components/environments_table.vue @@ -4,8 +4,8 @@ */ import { GlLoadingIcon } from '@gitlab/ui'; import _ from 'underscore'; +import environmentTableMixin from 'ee_else_ce/environments/mixins/environments_table_mixin'; import EnvironmentItem from './environment_item.vue'; -import environmentTableMixin from 'ee_else_ce/environments/mixins/environment_table_mixin'; export default { components: { @@ -22,39 +22,11 @@ export default { required: true, default: () => [], }, - canReadEnvironment: { type: Boolean, required: false, default: false, }, - - // ee-only start - canaryDeploymentFeatureId: { - type: String, - required: true, - }, - - showCanaryDeploymentCallout: { - type: Boolean, - required: true, - }, - - userCalloutsPath: { - type: String, - required: true, - }, - - lockPromotionSvgPath: { - type: String, - required: true, - }, - - helpCanaryDeploymentsPath: { - type: String, - required: true, - }, - // ee-only end }, computed: { sortedEnvironments() { @@ -96,11 +68,6 @@ export default { .sortBy(env => (env.isFolder ? -1 : 1)) .value(); }, - // ee-only start - shouldShowCanaryCallout(env) { - return env.showCanaryCallout && this.showCanaryDeploymentCallout; - }, - // ee-only end }, }; @@ -132,7 +99,7 @@ export default { />
diff --git a/app/assets/javascripts/environments/mixins/environment_table_mixin.js b/app/assets/javascripts/environments/mixins/environments_table_mixin.js similarity index 90% rename from app/assets/javascripts/environments/mixins/environment_table_mixin.js rename to app/assets/javascripts/environments/mixins/environments_table_mixin.js index 94947b8e32ad61..208f1a7373db57 100644 --- a/app/assets/javascripts/environments/mixins/environment_table_mixin.js +++ b/app/assets/javascripts/environments/mixins/environments_table_mixin.js @@ -3,8 +3,6 @@ export default { shouldShowCanaryCallout() { return false; }, - }, - props: { shouldRenderDeployBoard() { return false; }, diff --git a/ee/app/assets/javascripts/environments/mixins/environments_table_mixin.js b/ee/app/assets/javascripts/environments/mixins/environments_table_mixin.js new file mode 100644 index 00000000000000..8f212639b1ad72 --- /dev/null +++ b/ee/app/assets/javascripts/environments/mixins/environments_table_mixin.js @@ -0,0 +1,32 @@ +export default { + props: { + canaryDeploymentFeatureId: { + type: String, + required: true, + }, + showCanaryDeploymentCallout: { + type: Boolean, + required: true, + }, + userCalloutsPath: { + type: String, + required: true, + }, + lockPromotionSvgPath: { + type: String, + required: true, + }, + helpCanaryDeploymentsPath: { + type: String, + required: true, + }, + }, + methods: { + shouldShowCanaryCallout(env) { + return env.showCanaryCallout && this.showCanaryDeploymentCallout; + }, + shouldRenderDeployBoard(model) { + return model.hasDeployBoard && model.isDeployBoardVisible; + }, + }, +}; diff --git a/ee/spec/javascripts/environments/environments_table_spec.js b/ee/spec/javascripts/environments/environments_table_spec.js index dde5913ad9f0ab..de1c02a267ad73 100644 --- a/ee/spec/javascripts/environments/environments_table_spec.js +++ b/ee/spec/javascripts/environments/environments_table_spec.js @@ -28,13 +28,11 @@ describe('Environment table', () => { vm = mountComponent(Component, { environments: [mockItem], canReadEnvironment: true, - // ee-only start canaryDeploymentFeatureId: 'canary_deployment', showCanaryDeploymentCallout: true, userCalloutsPath: '/callouts', lockPromotionSvgPath: '/assets/illustrations/lock-promotion.svg', helpCanaryDeploymentsPath: 'help/canary-deployments', - // ee-only end }); expect(vm.$el.getAttribute('class')).toContain('ci-table'); @@ -57,13 +55,11 @@ describe('Environment table', () => { environments: [mockItem], canCreateDeployment: false, canReadEnvironment: true, - // ee-only start canaryDeploymentFeatureId: 'canary_deployment', showCanaryDeploymentCallout: true, userCalloutsPath: '/callouts', lockPromotionSvgPath: '/assets/illustrations/lock-promotion.svg', helpCanaryDeploymentsPath: 'help/canary-deployments', - // ee-only end }); expect(vm.$el.querySelector('.js-deploy-board-row')).toBeDefined(); @@ -95,19 +91,16 @@ describe('Environment table', () => { vm = mountComponent(Component, { environments: [mockItem], canReadEnvironment: true, - // ee-only start canaryDeploymentFeatureId: 'canary_deployment', showCanaryDeploymentCallout: true, userCalloutsPath: '/callouts', lockPromotionSvgPath: '/assets/illustrations/lock-promotion.svg', helpCanaryDeploymentsPath: 'help/canary-deployments', - // ee-only end }); vm.$el.querySelector('.deploy-board-icon').click(); }); - // ee-only start it('should render canary callout', () => { const mockItem = { name: 'review', @@ -131,5 +124,4 @@ describe('Environment table', () => { expect(vm.$el.querySelector('.canary-deployment-callout')).not.toBeNull(); }); - // ee-only end }); -- GitLab