Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/discussion_spec.rb')
-rw-r--r--spec/models/discussion_spec.rb65
1 files changed, 64 insertions, 1 deletions
diff --git a/spec/models/discussion_spec.rb b/spec/models/discussion_spec.rb
index 7bd3c5743a6..1c9798c6d99 100644
--- a/spec/models/discussion_spec.rb
+++ b/spec/models/discussion_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-RSpec.describe Discussion do
+RSpec.describe Discussion, feature_category: :team_planning do
subject { described_class.new([first_note, second_note, third_note]) }
let(:first_note) { create(:diff_note_on_merge_request) }
@@ -70,4 +70,67 @@ RSpec.describe Discussion do
end
end
end
+
+ describe '#to_global_id' do
+ context 'with a single DiffNote discussion' do
+ it 'returns GID on Discussion class' do
+ discussion = described_class.build([first_note], merge_request)
+ discussion_id = discussion.id
+
+ expect(discussion.class.name.to_s).to eq("DiffDiscussion")
+ expect(discussion.to_global_id.to_s).to eq("gid://gitlab/Discussion/#{discussion_id}")
+ end
+ end
+
+ context 'with multiple DiffNotes discussion' do
+ it 'returns GID on Discussion class' do
+ discussion = described_class.build([first_note, second_note], merge_request)
+ discussion_id = discussion.id
+
+ expect(discussion.class.name.to_s).to eq("DiffDiscussion")
+ expect(discussion.to_global_id.to_s).to eq("gid://gitlab/Discussion/#{discussion_id}")
+ end
+ end
+
+ context 'with discussions on issue' do
+ let_it_be(:note_1, refind: true) { create(:note) }
+ let_it_be(:noteable) { note_1.noteable }
+
+ context 'with a single Note' do
+ it 'returns GID on Discussion class' do
+ discussion = described_class.build([note_1], noteable)
+ discussion_id = discussion.id
+
+ expect(discussion.class.name.to_s).to eq("IndividualNoteDiscussion")
+ expect(discussion.to_global_id.to_s).to eq("gid://gitlab/Discussion/#{discussion_id}")
+ end
+ end
+
+ context 'with multiple Notes' do
+ let_it_be(:note_1, refind: true) { create(:note, type: 'DiscussionNote') }
+ let_it_be(:note_2, refind: true) { create(:note, in_reply_to: note_1) }
+
+ it 'returns GID on Discussion class' do
+ discussion = described_class.build([note_1, note_2], noteable)
+ discussion_id = discussion.id
+
+ expect(discussion.class.name.to_s).to eq("Discussion")
+ expect(discussion.to_global_id.to_s).to eq("gid://gitlab/Discussion/#{discussion_id}")
+ end
+ end
+ end
+
+ context 'with system notes' do
+ let_it_be(:system_note, refind: true) { create(:note, system: true) }
+ let_it_be(:noteable) { system_note.noteable }
+
+ it 'returns GID on Discussion class' do
+ discussion = described_class.build([system_note], noteable)
+ discussion_id = discussion.id
+
+ expect(discussion.class.name.to_s).to eq("IndividualNoteDiscussion")
+ expect(discussion.to_global_id.to_s).to eq("gid://gitlab/Discussion/#{discussion_id}")
+ end
+ end
+ end
end