diff options
author | Douwe Maan <douwe@selenight.nl> | 2017-03-17 22:25:52 +0300 |
---|---|---|
committer | Luke "Jared" Bennett <lbennett@gitlab.com> | 2017-04-05 19:44:14 +0300 |
commit | 79889a6aa3dc878d196d0f2f445ab6b10ef10c74 (patch) | |
tree | 25367a69b4a529335e106d0d65c2d9a38e97f092 /spec/models/discussion_spec.rb | |
parent | 80b2e18fb62b8da7410f90b3e5340b9e63e765a3 (diff) |
Add specs
Diffstat (limited to 'spec/models/discussion_spec.rb')
-rw-r--r-- | spec/models/discussion_spec.rb | 123 |
1 files changed, 26 insertions, 97 deletions
diff --git a/spec/models/discussion_spec.rb b/spec/models/discussion_spec.rb index f48450589d0..771ca37cb12 100644 --- a/spec/models/discussion_spec.rb +++ b/spec/models/discussion_spec.rb @@ -4,33 +4,34 @@ describe Discussion, model: true do subject { described_class.new([first_note, second_note, third_note]) } let(:first_note) { create(:discussion_note_on_merge_request) } - let(:second_note) { create(:discussion_note_on_merge_request) } + let(:merge_request) { first_note.noteable } + let(:second_note) { create(:discussion_note_on_merge_request, in_reply_to: first_note) } let(:third_note) { create(:discussion_note_on_merge_request) } describe '.build' do - # TODO: Test + it 'returns a discussion of the right type' do + discussion = described_class.build([first_note, second_note], merge_request) + expect(discussion).to be_a(SimpleDiscussion) + expect(discussion.notes.count).to be(2) + expect(discussion.first_note).to be(first_note) + expect(discussion.noteable).to be(merge_request) + end end describe '.build_collection' do - # TODO: Test - end - - describe '#id' do - # TODO: Test - end - - describe '#original_id' do - # TODO: Test - end - - describe '#potentially_resolvable?' do - # TODO: Test + it 'returns an array of discussions of the right type' do + discussions = described_class.build_collection([first_note, second_note, third_note], merge_request) + expect(discussions).to eq([ + SimpleDiscussion.new([first_note, second_note], merge_request), + SimpleDiscussion.new([third_note], merge_request) + ]) + end end describe "#resolvable?" do context "when potentially resolvable" do before do - allow(subject).to receive(:discussion_resolvable?).and_return(true) + allow(subject).to receive(:potentially_resolvable?).and_return(true) end context "when all notes are unresolvable" do @@ -72,7 +73,7 @@ describe Discussion, model: true do context "when not potentially resolvable" do before do - allow(subject).to receive(:discussion_resolvable?).and_return(false) + allow(subject).to receive(:potentially_resolvable?).and_return(false) end it "returns false" do @@ -542,7 +543,7 @@ describe Discussion, model: true do end describe "#first_note_to_resolve" do - it "returns the first not that still needs to be resolved" do + it "returns the first note that still needs to be resolved" do allow(first_note).to receive(:to_be_resolved?).and_return(false) allow(second_note).to receive(:to_be_resolved?).and_return(true) @@ -551,88 +552,16 @@ describe Discussion, model: true do end describe "#last_resolved_note" do - # TODO: Test - end - - describe "#collapsed?" do - context "when potentially resolvable" do - before do - allow(subject).to receive(:discussion_resolvable?).and_return(true) - end - - context "when resolvable" do - before do - allow(subject).to receive(:resolvable?).and_return(true) - end - - context "when resolved" do - before do - allow(subject).to receive(:resolved?).and_return(true) - end - - it "returns true" do - expect(subject.collapsed?).to be true - end - end - - context "when not resolved" do - before do - allow(subject).to receive(:resolved?).and_return(false) - end - - it "returns false" do - expect(subject.collapsed?).to be false - end - end - end - - context "when not resolvable" do - before do - allow(subject).to receive(:resolvable?).and_return(false) - end - - context "when a diff discussion" do - before do - allow(subject).to receive(:diff_discussion?).and_return(true) - end - - context "when active" do - before do - allow(subject).to receive(:active?).and_return(true) - end - - it "returns false" do - expect(subject.collapsed?).to be false - end - end - - context "when outdated" do - before do - allow(subject).to receive(:active?).and_return(false) - end - - it "returns true" do - expect(subject.collapsed?).to be true - end - end - end + let(:current_user) { create(:user) } - context "when not a diff discussion" do - it "returns false" do - expect(subject.collapsed?).to be false - end - end - end + before do + first_note.resolve!(current_user) + third_note.resolve!(current_user) + second_note.resolve!(current_user) end - context "when not potentially resolvable" do - before do - allow(subject).to receive(:discussion_resolvable?).and_return(false) - end - - it "returns false" do - expect(subject.collapsed?).to be false - end + it "returns the last note that was resolved" do + expect(subject.last_resolved_note).to eq(second_note) end end end |