diff options
author | Jan Provaznik <jprovaznik@gitlab.com> | 2019-05-28 13:05:20 +0300 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2019-05-28 13:05:20 +0300 |
commit | 4df0e2599bc9bd7c50b6acea02278c1fb97d3ead (patch) | |
tree | 9ec579188c4fe083d71da187c64277e3337df22b /spec | |
parent | 2d12e22299114490385693a57666d658f0909da7 (diff) |
Fix display of promote to group label
Since label presenter is used in label index view, label class
check doesn't work as expected because the class is now LabelPresenter.
Also `label.subject` doesn't work as expected now because Label's model
`subject` method is shadowed by Gitlab's presenter's method which uses
`subject` for referencing the original object.
Instead we use a presenter's method for both checks now.
`label_deletion_confirm_text` is not used anywhere so it's removed
Diffstat (limited to 'spec')
-rw-r--r-- | spec/features/projects/labels/user_promotes_label_spec.rb | 34 | ||||
-rw-r--r-- | spec/features/projects/labels/user_removes_labels_spec.rb | 5 | ||||
-rw-r--r-- | spec/helpers/labels_helper_spec.rb | 19 | ||||
-rw-r--r-- | spec/presenters/label_presenter_spec.rb | 28 |
4 files changed, 84 insertions, 2 deletions
diff --git a/spec/features/projects/labels/user_promotes_label_spec.rb b/spec/features/projects/labels/user_promotes_label_spec.rb new file mode 100644 index 00000000000..fdecafd4c50 --- /dev/null +++ b/spec/features/projects/labels/user_promotes_label_spec.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe 'User promotes label' do + set(:group) { create(:group) } + set(:user) { create(:user) } + set(:project) { create(:project, namespace: group) } + set(:label) { create(:label, project: project) } + + context 'when user can admin group labels' do + before do + group.add_developer(user) + sign_in(user) + visit(project_labels_path(project)) + end + + it "shows label promote button" do + expect(page).to have_selector('.js-promote-project-label-button') + end + end + + context 'when user cannot admin group labels' do + before do + project.add_developer(user) + sign_in(user) + visit(project_labels_path(project)) + end + + it "does not show label promote button" do + expect(page).not_to have_selector('.js-promote-project-label-button') + end + end +end diff --git a/spec/features/projects/labels/user_removes_labels_spec.rb b/spec/features/projects/labels/user_removes_labels_spec.rb index b0ce03a1c31..c231e54decd 100644 --- a/spec/features/projects/labels/user_removes_labels_spec.rb +++ b/spec/features/projects/labels/user_removes_labels_spec.rb @@ -21,8 +21,11 @@ describe "User removes labels" do page.first(".label-list-item") do first('.js-label-options-dropdown').click first(".remove-row").click - first(:link, "Delete label").click end + + expect(page).to have_content("#{label.title} will be permanently deleted from #{project.name}. This cannot be undone.") + + first(:link, "Delete label").click end expect(page).to have_content("Label was removed").and have_no_content(label.title) diff --git a/spec/helpers/labels_helper_spec.rb b/spec/helpers/labels_helper_spec.rb index 58eaf991d6e..314305d7a8e 100644 --- a/spec/helpers/labels_helper_spec.rb +++ b/spec/helpers/labels_helper_spec.rb @@ -6,7 +6,7 @@ describe LabelsHelper do let(:context_project) { project } context "when asking for a #{issuables_type} link" do - subject { show_label_issuables_link?(label, issuables_type, project: context_project) } + subject { show_label_issuables_link?(label.present(issuable_subject: nil), issuables_type, project: context_project) } context "when #{issuables_type} are enabled for the project" do let(:project) { create(:project, "#{issuables_type}_access_level": ProjectFeature::ENABLED) } @@ -279,4 +279,21 @@ describe LabelsHelper do expect(label.color).to eq('bar') end end + + describe '#label_status_tooltip' do + let(:status) { 'unsubscribed'.inquiry } + subject { label_status_tooltip(label.present(issuable_subject: nil), status) } + + context 'with a project label' do + let(:label) { create(:label, title: 'bug') } + + it { is_expected.to eq('Subscribe at project level') } + end + + context 'with a group label' do + let(:label) { create(:group_label, title: 'bug') } + + it { is_expected.to eq('Subscribe at group level') } + end + end end diff --git a/spec/presenters/label_presenter_spec.rb b/spec/presenters/label_presenter_spec.rb index fae8188670f..d566da7c872 100644 --- a/spec/presenters/label_presenter_spec.rb +++ b/spec/presenters/label_presenter_spec.rb @@ -62,4 +62,32 @@ describe LabelPresenter do expect(label.can_subscribe_to_label_in_different_levels?).to be_falsey end end + + describe '#project_label?' do + context 'with group label' do + subject { group_label.project_label? } + + it { is_expected.to be_falsey } + end + + context 'with project label' do + subject { label.project_label? } + + it { is_expected.to be_truthy } + end + end + + describe '#subject_name' do + context 'with group label' do + subject { group_label.subject_name } + + it { is_expected.to eq(group_label.group.name) } + end + + context 'with project label' do + subject { label.subject_name } + + it { is_expected.to eq(label.project.name) } + end + end end |