diff options
author | Felipe Artur <felipefac@gmail.com> | 2018-05-17 16:39:48 -0300 |
---|---|---|
committer | Felipe Artur <felipefac@gmail.com> | 2018-05-24 11:51:18 -0300 |
commit | aee2b235499f9ea179aed82d6beb8ea955986aa3 (patch) | |
tree | 7149882f41b3f42879b182e852f9709c50bf143f /spec/services/projects | |
parent | f2da7ebb572ff0128e236ca88e322f9fdabb35ec (diff) | |
download | gitlab-ce-aee2b235499f9ea179aed82d6beb8ea955986aa3.tar.gz |
Fix sidebar issue countissue_38418
Diffstat (limited to 'spec/services/projects')
-rw-r--r-- | spec/services/projects/open_issues_count_service_spec.rb | 51 |
1 files changed, 42 insertions, 9 deletions
diff --git a/spec/services/projects/open_issues_count_service_spec.rb b/spec/services/projects/open_issues_count_service_spec.rb index f964f9972cd..06b470849b3 100644 --- a/spec/services/projects/open_issues_count_service_spec.rb +++ b/spec/services/projects/open_issues_count_service_spec.rb @@ -2,20 +2,53 @@ require 'spec_helper' describe Projects::OpenIssuesCountService do describe '#count' do - it 'returns the number of open issues' do - project = create(:project) - create(:issue, :opened, project: project) + let(:project) { create(:project) } - expect(described_class.new(project).count).to eq(1) + context 'when user is nil' do + it 'does not include confidential issues in the issue count' do + create(:issue, :opened, project: project) + create(:issue, :opened, confidential: true, project: project) + + expect(described_class.new(project).count).to eq(1) + end end - it 'does not include confidential issues in the issue count' do - project = create(:project) + context 'when user is provided' do + let(:user) { create(:user) } + + context 'when user can read confidential issues' do + before do + project.add_reporter(user) + end + + it 'returns the right count with confidential issues' do + create(:issue, :opened, project: project) + create(:issue, :opened, confidential: true, project: project) + + expect(described_class.new(project, user).count).to eq(2) + end + + it 'uses total_open_issues_count cache key' do + expect(described_class.new(project, user).cache_key_name).to eq('total_open_issues_count') + end + end + + context 'when user cannot read confidential issues' do + before do + project.add_guest(user) + end + + it 'does not include confidential issues' do + create(:issue, :opened, project: project) + create(:issue, :opened, confidential: true, project: project) - create(:issue, :opened, project: project) - create(:issue, :opened, confidential: true, project: project) + expect(described_class.new(project, user).count).to eq(1) + end - expect(described_class.new(project).count).to eq(1) + it 'uses public_open_issues_count cache key' do + expect(described_class.new(project, user).cache_key_name).to eq('public_open_issues_count') + end + end end end end |