diff options
Diffstat (limited to 'spec/helpers')
| -rw-r--r-- | spec/helpers/issuables_helper_spec.rb | 49 | 
1 files changed, 43 insertions, 6 deletions
| diff --git a/spec/helpers/issuables_helper_spec.rb b/spec/helpers/issuables_helper_spec.rb index 15cb620199d..7dfda388de4 100644 --- a/spec/helpers/issuables_helper_spec.rb +++ b/spec/helpers/issuables_helper_spec.rb @@ -77,20 +77,58 @@ describe IssuablesHelper do          }.with_indifferent_access        end +      let(:finder) { double(:finder, user_cannot_see_confidential_issues?: true, user_can_see_all_confidential_issues?: false) } + +      before do +        allow(helper).to receive(:issues_finder).and_return(finder) +        allow(helper).to receive(:merge_requests_finder).and_return(finder) +      end +        it 'returns the cached value when called for the same issuable type & with the same params' do          expect(helper).to receive(:params).twice.and_return(params) -        expect(helper).to receive(:issuables_count_for_state).with(:issues, :opened).and_return(42) +        expect(finder).to receive(:count_by_state).and_return(opened: 42)          expect(helper.issuables_state_counter_text(:issues, :opened))            .to eq('<span>Open</span> <span class="badge">42</span>') -        expect(helper).not_to receive(:issuables_count_for_state) +        expect(finder).not_to receive(:count_by_state)          expect(helper.issuables_state_counter_text(:issues, :opened))            .to eq('<span>Open</span> <span class="badge">42</span>')        end +      it 'takes confidential status into account when searching for issues' do +        allow(helper).to receive(:params).and_return(params) +        expect(finder).to receive(:count_by_state).and_return(opened: 42) + +        expect(helper.issuables_state_counter_text(:issues, :opened)) +          .to include('42') + +        expect(finder).to receive(:user_cannot_see_confidential_issues?).and_return(false) +        expect(finder).to receive(:count_by_state).and_return(opened: 40) + +        expect(helper.issuables_state_counter_text(:issues, :opened)) +          .to include('40') + +        expect(finder).to receive(:user_can_see_all_confidential_issues?).and_return(true) +        expect(finder).to receive(:count_by_state).and_return(opened: 45) + +        expect(helper.issuables_state_counter_text(:issues, :opened)) +          .to include('45') +      end + +      it 'does not take confidential status into account when searching for merge requests' do +        allow(helper).to receive(:params).and_return(params) +        expect(finder).to receive(:count_by_state).and_return(opened: 42) +        expect(finder).not_to receive(:user_cannot_see_confidential_issues?) +        expect(finder).not_to receive(:user_can_see_all_confidential_issues?) + +        expect(helper.issuables_state_counter_text(:merge_requests, :opened)) +          .to include('42') +      end +        it 'does not take some keys into account in the cache key' do +        expect(finder).to receive(:count_by_state).and_return(opened: 42)          expect(helper).to receive(:params).and_return({            author_id: '11',            state: 'foo', @@ -98,11 +136,11 @@ describe IssuablesHelper do            utf8: 'foo',            page: 'foo'          }.with_indifferent_access) -        expect(helper).to receive(:issuables_count_for_state).with(:issues, :opened).and_return(42)          expect(helper.issuables_state_counter_text(:issues, :opened))            .to eq('<span>Open</span> <span class="badge">42</span>') +        expect(finder).not_to receive(:count_by_state)          expect(helper).to receive(:params).and_return({            author_id: '11',            state: 'bar', @@ -110,7 +148,6 @@ describe IssuablesHelper do            utf8: 'bar',            page: 'bar'          }.with_indifferent_access) -        expect(helper).not_to receive(:issuables_count_for_state)          expect(helper.issuables_state_counter_text(:issues, :opened))            .to eq('<span>Open</span> <span class="badge">42</span>') @@ -118,13 +155,13 @@ describe IssuablesHelper do        it 'does not take params order into account in the cache key' do          expect(helper).to receive(:params).and_return('author_id' => '11', 'state' => 'opened') -        expect(helper).to receive(:issuables_count_for_state).with(:issues, :opened).and_return(42) +        expect(finder).to receive(:count_by_state).and_return(opened: 42)          expect(helper.issuables_state_counter_text(:issues, :opened))            .to eq('<span>Open</span> <span class="badge">42</span>')          expect(helper).to receive(:params).and_return('state' => 'opened', 'author_id' => '11') -        expect(helper).not_to receive(:issuables_count_for_state) +        expect(finder).not_to receive(:count_by_state)          expect(helper.issuables_state_counter_text(:issues, :opened))            .to eq('<span>Open</span> <span class="badge">42</span>') | 
