From af18cddddf4ecb402ac613ddcc1f313f6adb7aad Mon Sep 17 00:00:00 2001 From: James Lopez Date: Wed, 20 Apr 2016 10:56:28 +0200 Subject: udpated a few things based on MR feedback. Also added model spec --- spec/models/concerns/issuable_spec.rb | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'spec/models') diff --git a/spec/models/concerns/issuable_spec.rb b/spec/models/concerns/issuable_spec.rb index b16ccc6e305..dc7a9a10893 100644 --- a/spec/models/concerns/issuable_spec.rb +++ b/spec/models/concerns/issuable_spec.rb @@ -212,4 +212,28 @@ describe Issue, "Issuable" do expect(issue.downvotes).to eq(1) end end -end + + describe ".with_label" do + let(:example_label) { 'test1' } + let(:example_labels) { ['test1', 'test2'] } + + it 'finds issue with 1 label' do + setup_labels([example_label]) + + expect(Issue.with_label(example_label).count).to eq(1) + end + + it 'finds issue with 2 labels' do + setup_labels(example_labels) + + expect(Issue.with_label(example_labels).to_a.count).to eq(1) + end + + def setup_labels(label_names) + labels = label_names.map do |label| + create(:label, project: issue.project, title: label) + end + issue.labels << labels + end + end +end \ No newline at end of file -- cgit v1.2.1 From c0948396d1fd8bf4cbd187f33583b2f6db5d2178 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Wed, 20 Apr 2016 11:25:33 +0200 Subject: fix rubocop warning --- spec/models/concerns/issuable_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'spec/models') diff --git a/spec/models/concerns/issuable_spec.rb b/spec/models/concerns/issuable_spec.rb index dc7a9a10893..6b61bbb2fab 100644 --- a/spec/models/concerns/issuable_spec.rb +++ b/spec/models/concerns/issuable_spec.rb @@ -220,13 +220,13 @@ describe Issue, "Issuable" do it 'finds issue with 1 label' do setup_labels([example_label]) - expect(Issue.with_label(example_label).count).to eq(1) + expect(Issue.with_label(example_label).size).to eq(1) end it 'finds issue with 2 labels' do setup_labels(example_labels) - expect(Issue.with_label(example_labels).to_a.count).to eq(1) + expect(Issue.with_label(example_labels).to_a.size).to eq(1) end def setup_labels(label_names) -- cgit v1.2.1 From 976593fa7fd657437c68ade72f2061260318e7a9 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Wed, 20 Apr 2016 11:50:07 +0200 Subject: final line missing --- spec/models/concerns/issuable_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'spec/models') diff --git a/spec/models/concerns/issuable_spec.rb b/spec/models/concerns/issuable_spec.rb index 6b61bbb2fab..63a0a47e923 100644 --- a/spec/models/concerns/issuable_spec.rb +++ b/spec/models/concerns/issuable_spec.rb @@ -236,4 +236,4 @@ describe Issue, "Issuable" do issue.labels << labels end end -end \ No newline at end of file +end -- cgit v1.2.1 From 6865bc16f8974e80b1ae657d7330be30c12c21ad Mon Sep 17 00:00:00 2001 From: James Lopez Date: Thu, 21 Apr 2016 09:12:03 +0200 Subject: refactored specs, adding more scenarios --- spec/models/concerns/issuable_spec.rb | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'spec/models') diff --git a/spec/models/concerns/issuable_spec.rb b/spec/models/concerns/issuable_spec.rb index 63a0a47e923..cf9c1cc1fba 100644 --- a/spec/models/concerns/issuable_spec.rb +++ b/spec/models/concerns/issuable_spec.rb @@ -217,16 +217,26 @@ describe Issue, "Issuable" do let(:example_label) { 'test1' } let(:example_labels) { ['test1', 'test2'] } - it 'finds issue with 1 label' do + before(:each) do + setup_other_issue + end + + it 'finds the correct issue with 1 label' do setup_labels([example_label]) - expect(Issue.with_label(example_label).size).to eq(1) + expect(Issue.with_label(example_label)).to eq([issue]) + end + + it 'finds the correct issue with 2 labels' do + setup_labels(example_labels) + + expect(Issue.with_label(example_labels)).to eq([issue]) end - it 'finds issue with 2 labels' do + it 'finds the correct issue with 1 of 2 labels' do setup_labels(example_labels) - expect(Issue.with_label(example_labels).to_a.size).to eq(1) + expect(Issue.with_label(example_label)).to eq([issue]) end def setup_labels(label_names) @@ -235,5 +245,10 @@ describe Issue, "Issuable" do end issue.labels << labels end + + def setup_other_issue + issue2 = create(:issue) + issue2.labels << create(:label, project: issue2.project, title: 'other_label') + end end end -- cgit v1.2.1 From b09b175def7c66487d4571d90f23f613d868f25c Mon Sep 17 00:00:00 2001 From: James Lopez Date: Thu, 21 Apr 2016 13:20:00 +0200 Subject: refactored specs based on feedback --- spec/models/concerns/issuable_spec.rb | 45 ++++++++++++++--------------------- 1 file changed, 18 insertions(+), 27 deletions(-) (limited to 'spec/models') diff --git a/spec/models/concerns/issuable_spec.rb b/spec/models/concerns/issuable_spec.rb index cf9c1cc1fba..4a4cd093435 100644 --- a/spec/models/concerns/issuable_spec.rb +++ b/spec/models/concerns/issuable_spec.rb @@ -214,41 +214,32 @@ describe Issue, "Issuable" do end describe ".with_label" do - let(:example_label) { 'test1' } - let(:example_labels) { ['test1', 'test2'] } + let(:project) { create(:project, :public) } + let(:bug) { create(:label, project: project, title: 'bug') } + let(:feature) { create(:label, project: project, title: 'feature') } + let(:enhancement) { create(:label, project: project, title: 'enhancement') } + let(:issue1) { create(:issue, title: "Bugfix1", project: project) } + let(:issue2) { create(:issue, title: "Bugfix2", project: project) } + let(:issue3) { create(:issue, title: "Feature1", project: project) } before(:each) do - setup_other_issue + issue1.labels << bug + issue1.labels << feature + issue2.labels << bug + issue2.labels << enhancement + issue3.labels << feature end - it 'finds the correct issue with 1 label' do - setup_labels([example_label]) - - expect(Issue.with_label(example_label)).to eq([issue]) - end - - it 'finds the correct issue with 2 labels' do - setup_labels(example_labels) - - expect(Issue.with_label(example_labels)).to eq([issue]) + it 'finds the correct issue containing just enhancement label' do + expect(Issue.with_label(enhancement.title)).to match_array([issue2]) end - it 'finds the correct issue with 1 of 2 labels' do - setup_labels(example_labels) - - expect(Issue.with_label(example_label)).to eq([issue]) - end - - def setup_labels(label_names) - labels = label_names.map do |label| - create(:label, project: issue.project, title: label) - end - issue.labels << labels + it 'finds the correct issues containing the same label' do + expect(Issue.with_label(bug.title)).to match_array([issue1, issue2]) end - def setup_other_issue - issue2 = create(:issue) - issue2.labels << create(:label, project: issue2.project, title: 'other_label') + it 'finds the correct issues containing only both labels' do + expect(Issue.with_label([bug.title, enhancement.title])).to match_array([issue2]) end end end -- cgit v1.2.1