Commit b552de11 authored by Kushal Pandya's avatar Kushal Pandya

Merge branch '214991-fix-showing-new-requirement-button-to-unauthenticated-user' into 'master'

Fix showing New requirement button to unauthenticated user

Closes #214991

See merge request gitlab-org/gitlab!30085
parents 0138ae8a 1070148c
...@@ -22,6 +22,10 @@ export default { ...@@ -22,6 +22,10 @@ export default {
type: Object, type: Object,
required: true, required: true,
}, },
canCreateRequirement: {
type: Boolean,
required: true,
},
}, },
computed: { computed: {
emptyStateTitle() { emptyStateTitle() {
...@@ -48,7 +52,7 @@ export default { ...@@ -48,7 +52,7 @@ export default {
:title="emptyStateTitle" :title="emptyStateTitle"
:description="emptyStateDescription" :description="emptyStateDescription"
> >
<template v-if="emptyStateDescription" #actions> <template v-if="emptyStateDescription && canCreateRequirement" #actions>
<gl-deprecated-button <gl-deprecated-button
category="primary" category="primary"
variant="success" variant="success"
......
...@@ -60,6 +60,10 @@ export default { ...@@ -60,6 +60,10 @@ export default {
type: String, type: String,
required: true, required: true,
}, },
canCreateRequirement: {
type: Boolean,
required: true,
},
requirementsWebUrl: { requirementsWebUrl: {
type: String, type: String,
required: true, required: true,
...@@ -429,6 +433,7 @@ export default { ...@@ -429,6 +433,7 @@ export default {
:filter-by="filterBy" :filter-by="filterBy"
:empty-state-path="emptyStatePath" :empty-state-path="emptyStatePath"
:requirements-count="requirementsCount" :requirements-count="requirementsCount"
:can-create-requirement="canCreateRequirement"
@clickNewRequirement="handleNewRequirementClick" @clickNewRequirement="handleNewRequirementClick"
/> />
<requirements-loading <requirements-loading
......
...@@ -48,6 +48,7 @@ export default () => { ...@@ -48,6 +48,7 @@ export default () => {
opened, opened,
archived, archived,
all, all,
canCreateRequirement,
requirementsWebUrl, requirementsWebUrl,
} = el.dataset; } = el.dataset;
const stateFilterBy = filterBy ? FilterState[filterBy] : FilterState.opened; const stateFilterBy = filterBy ? FilterState[filterBy] : FilterState.opened;
...@@ -68,6 +69,7 @@ export default () => { ...@@ -68,6 +69,7 @@ export default () => {
next, next,
emptyStatePath, emptyStatePath,
projectPath, projectPath,
canCreateRequirement,
requirementsWebUrl, requirementsWebUrl,
}; };
}, },
...@@ -81,6 +83,7 @@ export default () => { ...@@ -81,6 +83,7 @@ export default () => {
prev: this.prev, prev: this.prev,
next: this.next, next: this.next,
emptyStatePath: this.emptyStatePath, emptyStatePath: this.emptyStatePath,
canCreateRequirement: this.canCreateRequirement,
requirementsWebUrl: this.requirementsWebUrl, requirementsWebUrl: this.requirementsWebUrl,
}, },
}); });
......
...@@ -50,6 +50,7 @@ ...@@ -50,6 +50,7 @@
archived: requirements_count['archived'], archived: requirements_count['archived'],
all: total_requirements, all: total_requirements,
requirements_web_url: project_requirements_path(@project), requirements_web_url: project_requirements_path(@project),
can_create_requirement: can?(current_user, :create_requirement, @project),
empty_state_path: image_path('illustrations/empty-state/empty-requirements-lg.svg') } } empty_state_path: image_path('illustrations/empty-state/empty-requirements-lg.svg') } }
- if current_tab_count == 0 - if current_tab_count == 0
-# Show regular spinner only when there will be no -# Show regular spinner only when there will be no
......
---
title: Fix showing New requirement button to unauthenticated user.
merge_request: 30085
author: Gilang Gumilar
type: fixed
...@@ -4,19 +4,18 @@ import { GlEmptyState, GlDeprecatedButton } from '@gitlab/ui'; ...@@ -4,19 +4,18 @@ import { GlEmptyState, GlDeprecatedButton } from '@gitlab/ui';
import RequirementsEmptyState from 'ee/requirements/components/requirements_empty_state.vue'; import RequirementsEmptyState from 'ee/requirements/components/requirements_empty_state.vue';
import { FilterState } from 'ee/requirements/constants'; import { FilterState } from 'ee/requirements/constants';
const createComponent = ( const createComponent = (props = {}) =>
filterBy = FilterState.opened,
emptyStatePath = '/assets/illustrations/empty-state/requirements.svg',
) =>
shallowMount(RequirementsEmptyState, { shallowMount(RequirementsEmptyState, {
propsData: { propsData: {
filterBy, filterBy: FilterState.opened,
emptyStatePath, emptyStatePath: '/assets/illustrations/empty-state/requirements.svg',
requirementsCount: { requirementsCount: {
OPENED: 0, OPENED: 0,
ARCHIVED: 0, ARCHIVED: 0,
ALL: 0, ALL: 0,
}, },
canCreateRequirement: true,
...props,
}, },
stubs: { GlEmptyState }, stubs: { GlEmptyState },
}); });
...@@ -128,5 +127,17 @@ describe('RequirementsEmptyState', () => { ...@@ -128,5 +127,17 @@ describe('RequirementsEmptyState', () => {
expect(newReqButton.exists()).toBe(false); expect(newReqButton.exists()).toBe(false);
}); });
}); });
it('does not render new requirement button when user is not authenticated', () => {
wrapper = createComponent({
canCreateRequirement: false,
});
return wrapper.vm.$nextTick(() => {
const newReqButton = wrapper.find(GlDeprecatedButton);
expect(newReqButton.exists()).toBe(false);
});
});
}); });
}); });
...@@ -47,6 +47,7 @@ const createComponent = ({ ...@@ -47,6 +47,7 @@ const createComponent = ({
showCreateRequirement = false, showCreateRequirement = false,
emptyStatePath = '/assets/illustrations/empty-state/requirements.svg', emptyStatePath = '/assets/illustrations/empty-state/requirements.svg',
loading = false, loading = false,
canCreateRequirement = true,
requirementsWebUrl = '/gitlab-org/gitlab-shell/-/requirements', requirementsWebUrl = '/gitlab-org/gitlab-shell/-/requirements',
} = {}) => } = {}) =>
shallowMount(RequirementsRoot, { shallowMount(RequirementsRoot, {
...@@ -56,6 +57,7 @@ const createComponent = ({ ...@@ -56,6 +57,7 @@ const createComponent = ({
requirementsCount, requirementsCount,
showCreateRequirement, showCreateRequirement,
emptyStatePath, emptyStatePath,
canCreateRequirement,
requirementsWebUrl, requirementsWebUrl,
}, },
mocks: { mocks: {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment