Skip to content
代码片段 群组 项目
未验证 提交 dc2359a4 编辑于 作者: Alexander Turinske's avatar Alexander Turinske 提交者: GitLab
浏览文件

Merge branch '442909-add-sm-permissions-data' into 'master'

Update getSubscriptionPermissionsData to not use namespace for SM

See merge request https://gitlab.com/gitlab-org/gitlab/-/merge_requests/149312



Merged-by: default avatarAlexander Turinske <aturinske@gitlab.com>
Approved-by: default avatarSerhii Yarynovskyi <syarynovskyi@gitlab.com>
Approved-by: default avatarEugie Limpin <elimpin@gitlab.com>
Approved-by: default avatarTomas Vik <tvik@gitlab.com>
Approved-by: default avatarAlexander Turinske <aturinske@gitlab.com>
Reviewed-by: default avatarAlexander Turinske <aturinske@gitlab.com>
Co-authored-by: default avatarminahilnichols <minahilnichols@gitlab.com>
No related branches found
No related tags found
无相关合并请求
query getSubscriptionPermissionsData($namespaceId: ID!) { query getSubscriptionPermissionsData($namespaceId: ID, $subscriptionName: String) {
subscription(namespaceId: $namespaceId) { subscription(namespaceId: $namespaceId, subscriptionName: $subscriptionName) {
canAddSeats canAddSeats
canAddDuoProSeats canAddDuoProSeats
canRenew canRenew
communityPlan communityPlan
} }
userActionAccess(namespaceId: $namespaceId) { userActionAccess(namespaceId: $namespaceId, subscriptionName: $subscriptionName) {
limitedAccessReason limitedAccessReason
} }
} }
import Vue from 'vue'; import Vue from 'vue';
import VueApollo from 'vue-apollo'; import apolloProvider from 'ee/usage_quotas/shared/provider';
import createDefaultClient from '~/lib/graphql';
import CodeSuggestionsUsage from 'ee/usage_quotas/code_suggestions/components/code_suggestions_usage.vue'; import CodeSuggestionsUsage from 'ee/usage_quotas/code_suggestions/components/code_suggestions_usage.vue';
Vue.use(VueApollo);
const apolloProvider = new VueApollo({
defaultClient: createDefaultClient(),
});
function mountCodeSuggestionsUsageApp() { function mountCodeSuggestionsUsageApp() {
const el = document.getElementById('js-code-suggestions-page'); const el = document.getElementById('js-code-suggestions-page');
...@@ -23,6 +16,7 @@ function mountCodeSuggestionsUsageApp() { ...@@ -23,6 +16,7 @@ function mountCodeSuggestionsUsageApp() {
provide: { provide: {
isSaaS: false, isSaaS: false,
addDuoProHref: el.dataset.addDuoProSeatsUrl, addDuoProHref: el.dataset.addDuoProSeatsUrl,
subscriptionName: el.dataset.subscriptionName,
}, },
render: (h) => h(CodeSuggestionsUsage), render: (h) => h(CodeSuggestionsUsage),
}); });
......
...@@ -42,7 +42,7 @@ export default { ...@@ -42,7 +42,7 @@ export default {
GlModalDirective, GlModalDirective,
}, },
mixins: [Tracking.mixin()], mixins: [Tracking.mixin()],
inject: ['addDuoProHref', 'isSaaS'], inject: ['addDuoProHref', 'isSaaS', 'subscriptionName'],
props: { props: {
groupId: { groupId: {
type: String, type: String,
...@@ -60,7 +60,7 @@ export default { ...@@ -60,7 +60,7 @@ export default {
return parseInt(this.groupId, 10); return parseInt(this.groupId, 10);
}, },
shouldShowAddSeatsButton() { shouldShowAddSeatsButton() {
if (this.isLoading || !this.addDuoProHref) { if (this.isLoading) {
return false; return false;
} }
return true; return true;
...@@ -86,12 +86,12 @@ export default { ...@@ -86,12 +86,12 @@ export default {
query: getSubscriptionPermissionsData, query: getSubscriptionPermissionsData,
client: 'customersDotClient', client: 'customersDotClient',
variables() { variables() {
return { return this.groupId
namespaceId: this.parsedGroupId, ? { namespaceId: this.parsedGroupId }
}; : { subscriptionName: this.subscriptionName };
}, },
skip() { skip() {
return !this.addDuoProHref || !this.groupId; return !(this.groupId || this.subscriptionName);
}, },
update: (data) => ({ update: (data) => ({
canAddDuoProSeats: data.subscription.canAddDuoProSeats, canAddDuoProSeats: data.subscription.canAddDuoProSeats,
......
...@@ -2,4 +2,4 @@ ...@@ -2,4 +2,4 @@
- page_title s_('CodeSuggestions|GitLab Duo Pro') - page_title s_('CodeSuggestions|GitLab Duo Pro')
- duo_pro_url = add_duo_pro_seats_url(@subscription_name) - duo_pro_url = add_duo_pro_seats_url(@subscription_name)
#js-code-suggestions-page{ data: { add_duo_pro_seats_url: duo_pro_url } } #js-code-suggestions-page{ data: { add_duo_pro_seats_url: duo_pro_url, subscription_name: @subscription_name } }
...@@ -20,6 +20,7 @@ jest.mock('~/lib/utils/url_utility', () => ({ ...@@ -20,6 +20,7 @@ jest.mock('~/lib/utils/url_utility', () => ({
const defaultProvide = { const defaultProvide = {
addDuoProHref: 'http://customers.gitlab.com/namespaces/10/duo_pro_seats', addDuoProHref: 'http://customers.gitlab.com/namespaces/10/duo_pro_seats',
isSaaS: true, isSaaS: true,
subscriptionName: null,
}; };
describe('CodeSuggestionsInfoCard', () => { describe('CodeSuggestionsInfoCard', () => {
...@@ -123,13 +124,6 @@ describe('CodeSuggestionsInfoCard', () => { ...@@ -123,13 +124,6 @@ describe('CodeSuggestionsInfoCard', () => {
await waitForPromises(); await waitForPromises();
expect(findAddSeatsButton().exists()).toBe(true); expect(findAddSeatsButton().exists()).toBe(true);
}); });
it('does not render add seats button if link is empty', async () => {
createComponent({ provide: { isSaas: false, addDuoProHref: '' } });
// wait for apollo to load
await waitForPromises();
expect(findAddSeatsButton().exists()).toBe(false);
});
}); });
describe('with saas', () => { describe('with saas', () => {
...@@ -145,13 +139,6 @@ describe('CodeSuggestionsInfoCard', () => { ...@@ -145,13 +139,6 @@ describe('CodeSuggestionsInfoCard', () => {
expect(findAddSeatsButton().exists()).toBe(true); expect(findAddSeatsButton().exists()).toBe(true);
}); });
}); });
it('does not render add seats button if link is empty', async () => {
createComponent({ provide: { addDuoProHref: '' } });
// wait for apollo to load
await waitForPromises();
expect(findAddSeatsButton().exists()).toBe(false);
});
}); });
describe('tracking', () => { describe('tracking', () => {
......
...@@ -93,7 +93,7 @@ def stub_subscription_management_data(namespace_id, can_add_seats: true, can_ren ...@@ -93,7 +93,7 @@ def stub_subscription_management_data(namespace_id, can_add_seats: true, can_ren
def stub_subscription_permissions_data(namespace_id, can_add_seats: true, can_add_duo_pro_seats: true, can_renew: true, community_plan: false, reason: 'MANAGED_BY_RESELLER') def stub_subscription_permissions_data(namespace_id, can_add_seats: true, can_add_duo_pro_seats: true, can_renew: true, community_plan: false, reason: 'MANAGED_BY_RESELLER')
stub_full_request(graphql_url, method: :post) stub_full_request(graphql_url, method: :post)
.with( .with(
body: "{\"operationName\":\"getSubscriptionPermissionsData\",\"variables\":{\"namespaceId\":#{namespace_id}},\"query\":\"query getSubscriptionPermissionsData($namespaceId: ID!) {\\n subscription(namespaceId: $namespaceId) {\\n canAddSeats\\n canAddDuoProSeats\\n canRenew\\n communityPlan\\n __typename\\n }\\n userActionAccess(namespaceId: $namespaceId) {\\n limitedAccessReason\\n __typename\\n }\\n}\\n\"}" body: "{\"operationName\":\"getSubscriptionPermissionsData\",\"variables\":{\"namespaceId\":#{namespace_id}},\"query\":\"query getSubscriptionPermissionsData($namespaceId: ID, $subscriptionName: String) {\\n subscription(namespaceId: $namespaceId, subscriptionName: $subscriptionName) {\\n canAddSeats\\n canAddDuoProSeats\\n canRenew\\n communityPlan\\n __typename\\n }\\n userActionAccess(namespaceId: $namespaceId, subscriptionName: $subscriptionName) {\\n limitedAccessReason\\n __typename\\n }\\n}\\n\"}"
) )
.to_return(status: 200, body: { .to_return(status: 200, body: {
"data": { "data": {
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册