diff options
author | Rémy Coutable <remy@rymai.me> | 2019-03-19 18:25:10 +0100 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2019-03-21 17:31:41 +0100 |
commit | 2f381e5e4ca3223796a562e65db38caac9c40ba7 (patch) | |
tree | f9d07fce014025dc1e787b0ae71af7e66e829ab7 /spec/finders | |
parent | 30a4e5532dcf7a866319086a4e690a54e16e587f (diff) | |
download | gitlab-ce-2f381e5e4ca3223796a562e65db38caac9c40ba7.tar.gz |
[CE] Reduce differences with EE in issues_finder_spec.rb
Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'spec/finders')
-rw-r--r-- | spec/finders/issues_finder_spec.rb | 80 |
1 files changed, 43 insertions, 37 deletions
diff --git a/spec/finders/issues_finder_spec.rb b/spec/finders/issues_finder_spec.rb index f74eb1364a6..00b6cad1a66 100644 --- a/spec/finders/issues_finder_spec.rb +++ b/spec/finders/issues_finder_spec.rb @@ -1,45 +1,10 @@ require 'spec_helper' describe IssuesFinder do - set(:user) { create(:user) } - set(:user2) { create(:user) } - set(:group) { create(:group) } - set(:subgroup) { create(:group, parent: group) } - set(:project1) { create(:project, group: group) } - set(:project2) { create(:project) } - set(:project3) { create(:project, group: subgroup) } - set(:milestone) { create(:milestone, project: project1) } - set(:label) { create(:label, project: project2) } - set(:issue1) { create(:issue, author: user, assignees: [user], project: project1, milestone: milestone, title: 'gitlab', created_at: 1.week.ago, updated_at: 1.week.ago) } - set(:issue2) { create(:issue, author: user, assignees: [user], project: project2, description: 'gitlab', created_at: 1.week.from_now, updated_at: 1.week.from_now) } - set(:issue3) { create(:issue, author: user2, assignees: [user2], project: project2, title: 'tanuki', description: 'tanuki', created_at: 2.weeks.from_now, updated_at: 2.weeks.from_now) } - set(:issue4) { create(:issue, project: project3) } - set(:award_emoji1) { create(:award_emoji, name: 'thumbsup', user: user, awardable: issue1) } - set(:award_emoji2) { create(:award_emoji, name: 'thumbsup', user: user2, awardable: issue2) } - set(:award_emoji3) { create(:award_emoji, name: 'thumbsdown', user: user, awardable: issue3) } + include_context 'IssuesFinder context' describe '#execute' do - let!(:closed_issue) { create(:issue, author: user2, assignees: [user2], project: project2, state: 'closed') } - let!(:label_link) { create(:label_link, label: label, target: issue2) } - let(:search_user) { user } - let(:params) { {} } - let(:issues) { described_class.new(search_user, params.reverse_merge(scope: scope, state: 'opened')).execute } - - before(:context) do - project1.add_maintainer(user) - project2.add_developer(user) - project2.add_developer(user2) - project3.add_developer(user) - - issue1 - issue2 - issue3 - issue4 - - award_emoji1 - award_emoji2 - award_emoji3 - end + include_context 'IssuesFinder#execute context' context 'scope: all' do let(:scope) { 'all' } @@ -56,6 +21,21 @@ describe IssuesFinder do end end + context 'filtering by assignee usernames' do + set(:user3) { create(:user) } + let(:params) { { assignee_username: [user2.username, user3.username] } } + + before do + project2.add_developer(user3) + + issue3.assignees = [user2, user3] + end + + it 'returns issues assigned to those users' do + expect(issues).to contain_exactly(issue3) + end + end + context 'filtering by no assignee' do let(:params) { { assignee_id: 'None' } } @@ -643,6 +623,16 @@ describe IssuesFinder do expect(subject).to include(public_issue, confidential_issue) end end + + context 'for an admin' do + let(:admin_user) { create(:user, :admin) } + + subject { described_class.new(admin_user, params).with_confidentiality_access_check } + + it 'returns all issues' do + expect(subject).to include(public_issue, confidential_issue) + end + end end context 'when searching within a specific project' do @@ -710,6 +700,22 @@ describe IssuesFinder do subject end end + + context 'for an admin' do + let(:admin_user) { create(:user, :admin) } + + subject { described_class.new(admin_user, params).with_confidentiality_access_check } + + it 'returns all issues' do + expect(subject).to include(public_issue, confidential_issue) + end + + it 'does not filter by confidentiality' do + expect(Issue).not_to receive(:where).with(a_string_matching('confidential'), anything) + + subject + end + end end end |