diff options
Diffstat (limited to 'spec/models/resource_label_event_spec.rb')
-rw-r--r-- | spec/models/resource_label_event_spec.rb | 62 |
1 files changed, 60 insertions, 2 deletions
diff --git a/spec/models/resource_label_event_spec.rb b/spec/models/resource_label_event_spec.rb index 8cc89578e0e..27a39672994 100644 --- a/spec/models/resource_label_event_spec.rb +++ b/spec/models/resource_label_event_spec.rb @@ -3,12 +3,13 @@ require 'spec_helper' RSpec.describe ResourceLabelEvent, feature_category: :team_planning, type: :model do - let_it_be(:project) { create(:project, :repository) } + let_it_be(:group) { create(:group) } + let_it_be(:project) { create(:project, :repository, group: group) } let_it_be(:issue) { create(:issue, project: project) } let_it_be(:merge_request) { create(:merge_request, source_project: project) } let_it_be(:label) { create(:label, project: project) } - subject { build(:resource_label_event, issue: issue, label: label) } + subject(:resource_label_event) { build(:resource_label_event, issue: issue, label: label) } it_behaves_like 'having unique enum values' @@ -95,6 +96,63 @@ RSpec.describe ResourceLabelEvent, feature_category: :team_planning, type: :mode end end + describe '#reference_html' do + subject { Nokogiri::HTML.fragment(label_event.reference_html).css('a').first.attr('href') } + + before do + label_event.refresh_invalid_reference + end + + context 'when resource event belongs to a group level issue' do + let(:group_label) { create(:group_label, group: group) } + let(:label_event) do + group_issue = create(:issue, :group_level, namespace: group) + + create(:resource_label_event, issue: group_issue, label: group_label) + end + + it { is_expected.to eq(Gitlab::Routing.url_helpers.group_work_items_path(group, label_name: group_label.title)) } + end + + context 'when resource event belongs to a project level issue' do + let(:label_event) { resource_label_event } + + it { is_expected.to eq(Gitlab::Routing.url_helpers.project_issues_path(project, label_name: label.title)) } + end + + context 'when resource event belongs to a merge request' do + let(:label_event) { create(:resource_label_event, merge_request: merge_request, label: label) } + + it do + is_expected.to eq(Gitlab::Routing.url_helpers.project_merge_requests_path(project, label_name: label.title)) + end + end + end + + describe '#group' do + subject { build_stubbed(:resource_label_event, **issuable_attributes).group } + + context 'when issuable is a merge request' do + let(:issuable_attributes) { { merge_request: merge_request } } + + it { is_expected.to be_nil } + end + + context 'when issuable is an issue' do + context 'when issue exists at the project level' do + let(:issuable_attributes) { { issue: issue } } + + it { is_expected.to be_nil } + end + + context 'when issue exists at the group level' do + let(:issuable_attributes) { { issue: build_stubbed(:issue, :group_level, namespace: group) } } + + it { is_expected.to eq(group) } + end + end + end + describe '.visible_to_user?' do let_it_be(:user) { create(:user) } let_it_be(:issue_project) { create(:project) } |