diff options
| author | Yorick Peterse <yorickpeterse@gmail.com> | 2016-04-13 12:05:10 +0200 |
|---|---|---|
| committer | Jacob Schatz <jacobschatz@Jacobs-MBP.fios-router.home> | 2016-04-13 16:10:49 -0400 |
| commit | dc13f7c31dee2c0515c36fba2398bc8b843a8108 (patch) | |
| tree | d2c33e183fb9f7d83f763c7f16ed8fea1e9d5bd6 | |
| parent | 42e0625dfb2a791affd592df1f879083702e6f86 (diff) | |
| download | gitlab-ce-dc13f7c31dee2c0515c36fba2398bc8b843a8108.tar.gz | |
Return unique issues when using multiple labels
This ensures that IssuableFinder returns a collection of unique issues,
even when filtering issues using multiple labels.
| -rw-r--r-- | app/finders/issuable_finder.rb | 4 | ||||
| -rw-r--r-- | spec/finders/issues_finder_spec.rb | 16 |
2 files changed, 19 insertions, 1 deletions
diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb index f1df6832bf6..d7c5b0a598c 100644 --- a/app/finders/issuable_finder.rb +++ b/app/finders/issuable_finder.rb @@ -278,7 +278,9 @@ class IssuableFinder end end - items + # When filtering by multiple labels we may end up duplicating issues (if one + # has multiple labels). This ensures we only return unique issues. + items.distinct end def label_names diff --git a/spec/finders/issues_finder_spec.rb b/spec/finders/issues_finder_spec.rb index b1648055462..bc607a29751 100644 --- a/spec/finders/issues_finder_spec.rb +++ b/spec/finders/issues_finder_spec.rb @@ -62,6 +62,22 @@ describe IssuesFinder do expect(issues).to eq([issue2]) end + it 'returns unique issues when filtering by multiple labels' do + label2 = create(:label, project: project2) + + create(:label_link, label: label2, target: issue2) + + params = { + scope: 'all', + label_name: [label.title, label2.title].join(','), + state: 'opened' + } + + issues = IssuesFinder.new(user, params).execute + + expect(issues).to eq([issue2]) + end + it 'should filter by no label name' do params = { scope: "all", label_name: Label::None.title, state: 'opened' } issues = IssuesFinder.new(user, params).execute |
