From b60f12e8121a12adb3d045ff0cd7342f6fbb0e2d Mon Sep 17 00:00:00 2001 From: Kos Palchyk <kpalchyk@gitlab.com> Date: Mon, 20 May 2024 17:12:51 +0300 Subject: [PATCH] Split code to omit graphql.js bundle duplication in specs --- .../members/components/members_tabs.vue | 3 +- app/assets/javascripts/members/constants.js | 34 ------------------ app/assets/javascripts/members/index.js | 2 +- .../javascripts/members/tabs_metadata.js | 35 +++++++++++++++++++ .../assets/javascripts/members/constants.js | 20 ----------- .../javascripts/members/tabs_metadata.js | 21 +++++++++++ .../members/components/members_tabs_spec.js | 3 +- qa/qa/page/component/members/members_table.rb | 2 +- 8 files changed, 62 insertions(+), 58 deletions(-) create mode 100644 app/assets/javascripts/members/tabs_metadata.js create mode 100644 ee/app/assets/javascripts/members/tabs_metadata.js diff --git a/app/assets/javascripts/members/components/members_tabs.vue b/app/assets/javascripts/members/components/members_tabs.vue index 166b3f970f629..84b2fb6d9ae44 100644 --- a/app/assets/javascripts/members/components/members_tabs.vue +++ b/app/assets/javascripts/members/components/members_tabs.vue @@ -3,7 +3,8 @@ import { GlTabs, GlTab, GlBadge, GlButton } from '@gitlab/ui'; // eslint-disable-next-line no-restricted-imports import { mapState } from 'vuex'; import { queryToObject } from '~/lib/utils/url_utility'; -import { MEMBER_TYPES, TABS, ACTIVE_TAB_QUERY_PARAM_NAME } from 'ee_else_ce/members/constants'; +import { MEMBER_TYPES, ACTIVE_TAB_QUERY_PARAM_NAME } from 'ee_else_ce/members/constants'; +import { TABS } from 'ee_else_ce/members/tabs_metadata'; import MembersApp from './app.vue'; const countComputed = (state, namespace) => state[namespace]?.pagination?.totalItems || 0; diff --git a/app/assets/javascripts/members/constants.js b/app/assets/javascripts/members/constants.js index c2e5f3fa44eb0..33379452eaa11 100644 --- a/app/assets/javascripts/members/constants.js +++ b/app/assets/javascripts/members/constants.js @@ -3,8 +3,6 @@ import { GlFilteredSearchToken } from '@gitlab/ui'; import { __, s__ } from '~/locale'; import { OPERATORS_IS } from '~/vue_shared/components/filtered_search_bar/constants'; -import PlaceholdersTabApp from './components/placeholders/app.vue'; - // Overridden in EE export const EE_GROUPS_APP_OPTIONS = {}; export const EE_PROJECTS_APP_OPTIONS = {}; @@ -184,38 +182,6 @@ export const TAB_QUERY_PARAM_VALUES = Object.freeze({ placeholder: 'placeholders', }); -// Overridden in EE -export const TABS = [ - { - namespace: MEMBER_TYPES.user, - title: __('Members'), - }, - { - namespace: MEMBER_TYPES.group, - title: __('Groups'), - attrs: { 'data-testid': 'groups-list-tab' }, - queryParamValue: TAB_QUERY_PARAM_VALUES.group, - }, - { - namespace: MEMBER_TYPES.invite, - title: s__('Members|Pending invitations'), - requiredPermissions: ['canManageMembers'], - queryParamValue: TAB_QUERY_PARAM_VALUES.invite, - }, - { - namespace: MEMBER_TYPES.accessRequest, - title: __('Access requests'), - requiredPermissions: ['canManageAccessRequests'], - queryParamValue: TAB_QUERY_PARAM_VALUES.accessRequest, - }, - { - namespace: MEMBER_TYPES.placeholder, - title: s__('UserMapping|Placeholders'), - queryParamValue: TAB_QUERY_PARAM_VALUES.placeholder, - component: PlaceholdersTabApp, - }, -]; - /** * This user state value comes from the User model * see the state machine in app/models/user.rb diff --git a/app/assets/javascripts/members/index.js b/app/assets/javascripts/members/index.js index 7eea0a7ebda62..d2b4bf8181c00 100644 --- a/app/assets/javascripts/members/index.js +++ b/app/assets/javascripts/members/index.js @@ -5,7 +5,7 @@ import Vuex from 'vuex'; import VueApollo from 'vue-apollo'; import createDefaultClient from '~/lib/graphql'; import { parseDataAttributes } from '~/members/utils'; -import { TABS } from 'ee_else_ce/members/constants'; +import { TABS } from 'ee_else_ce/members/tabs_metadata'; import MembersTabs from './components/members_tabs.vue'; import membersStore from './store'; diff --git a/app/assets/javascripts/members/tabs_metadata.js b/app/assets/javascripts/members/tabs_metadata.js new file mode 100644 index 0000000000000..0ef7cbf3da86b --- /dev/null +++ b/app/assets/javascripts/members/tabs_metadata.js @@ -0,0 +1,35 @@ +import { __, s__ } from '~/locale'; +import PlaceholdersTabApp from './components/placeholders/app.vue'; +import { MEMBER_TYPES, TAB_QUERY_PARAM_VALUES } from './constants'; + +// Overridden in EE +export const TABS = [ + { + namespace: MEMBER_TYPES.user, + title: __('Members'), + }, + { + namespace: MEMBER_TYPES.group, + title: __('Groups'), + attrs: { 'data-testid': 'groups-list-tab' }, + queryParamValue: TAB_QUERY_PARAM_VALUES.group, + }, + { + namespace: MEMBER_TYPES.invite, + title: s__('Members|Pending invitations'), + requiredPermissions: ['canManageMembers'], + queryParamValue: TAB_QUERY_PARAM_VALUES.invite, + }, + { + namespace: MEMBER_TYPES.accessRequest, + title: __('Access requests'), + requiredPermissions: ['canManageAccessRequests'], + queryParamValue: TAB_QUERY_PARAM_VALUES.accessRequest, + }, + { + namespace: MEMBER_TYPES.placeholder, + title: s__('UserMapping|Placeholders'), + queryParamValue: TAB_QUERY_PARAM_VALUES.placeholder, + component: PlaceholdersTabApp, + }, +]; diff --git a/ee/app/assets/javascripts/members/constants.js b/ee/app/assets/javascripts/members/constants.js index 6dfdee96edaf7..dabf24a50008f 100644 --- a/ee/app/assets/javascripts/members/constants.js +++ b/ee/app/assets/javascripts/members/constants.js @@ -7,11 +7,8 @@ import { AVAILABLE_FILTERED_SEARCH_TOKENS as AVAILABLE_FILTERED_SEARCH_TOKENS_CE, MEMBER_TYPES as MEMBER_TYPES_CE, TAB_QUERY_PARAM_VALUES as CE_TAB_QUERY_PARAM_VALUES, - TABS as CE_TABS, } from '~/members/constants'; import { helpPagePath } from '~/helpers/help_page_helper'; -import PromotionRequestsTabApp from './promotion_requests/components/app.vue'; -import promotionRequestsTabStore from './promotion_requests/store/index'; // eslint-disable-next-line import/export export * from '~/members/constants'; @@ -76,23 +73,6 @@ export const TAB_QUERY_PARAM_VALUES = Object.freeze({ banned: 'banned', }); -// eslint-disable-next-line import/export -export const TABS = [ - ...CE_TABS, - { - namespace: MEMBER_TYPES.promotionRequest, - title: __('Promotions'), - queryParamValue: TAB_QUERY_PARAM_VALUES.promotionRequest, - component: PromotionRequestsTabApp, - store: promotionRequestsTabStore, - }, - { - namespace: MEMBER_TYPES.banned, - title: __('Banned'), - queryParamValue: TAB_QUERY_PARAM_VALUES.banned, - }, -]; - const APP_OPTIONS_BASE = { [MEMBER_TYPES.promotionRequest]: gon.features?.memberPromotionManagement, }; diff --git a/ee/app/assets/javascripts/members/tabs_metadata.js b/ee/app/assets/javascripts/members/tabs_metadata.js new file mode 100644 index 0000000000000..b72bf56aa1bd1 --- /dev/null +++ b/ee/app/assets/javascripts/members/tabs_metadata.js @@ -0,0 +1,21 @@ +import { __ } from '~/locale'; +import { TABS as CE_TABS } from '~/members/tabs_metadata'; +import PromotionRequestsTabApp from './promotion_requests/components/app.vue'; +import promotionRequestsTabStore from './promotion_requests/store/index'; +import { MEMBER_TYPES, TAB_QUERY_PARAM_VALUES } from './constants'; + +export const TABS = [ + ...CE_TABS, + { + namespace: MEMBER_TYPES.promotionRequest, + title: __('Promotions'), + queryParamValue: TAB_QUERY_PARAM_VALUES.promotionRequest, + component: PromotionRequestsTabApp, + store: promotionRequestsTabStore, + }, + { + namespace: MEMBER_TYPES.banned, + title: __('Banned'), + queryParamValue: TAB_QUERY_PARAM_VALUES.banned, + }, +]; diff --git a/ee/spec/frontend/members/components/members_tabs_spec.js b/ee/spec/frontend/members/components/members_tabs_spec.js index 589b1581c79d3..26e07de87343c 100644 --- a/ee/spec/frontend/members/components/members_tabs_spec.js +++ b/ee/spec/frontend/members/components/members_tabs_spec.js @@ -5,7 +5,8 @@ import { pagination } from 'ee_else_ce_jest/members/mock_data'; import { mountExtended } from 'helpers/vue_test_utils_helper'; import MembersApp from '~/members/components/app.vue'; import MembersTabs from '~/members/components/members_tabs.vue'; -import { MEMBER_TYPES, TABS } from 'ee_else_ce/members/constants'; +import { MEMBER_TYPES } from 'ee_else_ce/members/constants'; +import { TABS } from 'ee_else_ce/members/tabs_metadata'; describe('MembersTabs', () => { Vue.use(Vuex); diff --git a/qa/qa/page/component/members/members_table.rb b/qa/qa/page/component/members/members_table.rb index 6642e37202c59..bd23fef32bcbc 100644 --- a/qa/qa/page/component/members/members_table.rb +++ b/qa/qa/page/component/members/members_table.rb @@ -38,7 +38,7 @@ def self.included(base) element 'approve-access-request-button' end - base.view 'app/assets/javascripts/members/constants.js' do + base.view 'app/assets/javascripts/members/tabs_metadata.js' do element 'groups-list-tab' end -- GitLab