diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-11 09:06:27 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-11 09:06:27 +0300 |
commit | b4e072cbaf808793bafff148b0ec9d47819f479e (patch) | |
tree | c690c706803cf43b3358785681e693ea0e1f9f94 /spec/models/event_collection_spec.rb | |
parent | 8c0166b9816477521bf34feb15575bbeb1a3c644 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models/event_collection_spec.rb')
-rw-r--r-- | spec/models/event_collection_spec.rb | 83 |
1 files changed, 54 insertions, 29 deletions
diff --git a/spec/models/event_collection_spec.rb b/spec/models/event_collection_spec.rb index efe511042c3..c421ffa000d 100644 --- a/spec/models/event_collection_spec.rb +++ b/spec/models/event_collection_spec.rb @@ -4,50 +4,75 @@ require 'spec_helper' describe EventCollection do describe '#to_a' do - let(:project) { create(:project_empty_repo) } - let(:projects) { Project.where(id: project.id) } - let(:user) { create(:user) } + set(:group) { create(:group) } + set(:project) { create(:project_empty_repo, group: group) } + set(:projects) { Project.where(id: project.id) } + set(:user) { create(:user) } - before do - 20.times do - event = create(:push_event, project: project, author: user) + context 'with project events' do + before do + 20.times do + event = create(:push_event, project: project, author: user) - create(:push_event_payload, event: event) + create(:push_event_payload, event: event) + end + + create(:closed_issue_event, project: project, author: user) end - create(:closed_issue_event, project: project, author: user) - end + it 'returns an Array of events' do + events = described_class.new(projects).to_a - it 'returns an Array of events' do - events = described_class.new(projects).to_a + expect(events).to be_an_instance_of(Array) + end - expect(events).to be_an_instance_of(Array) - end + it 'applies a limit to the number of events' do + events = described_class.new(projects).to_a - it 'applies a limit to the number of events' do - events = described_class.new(projects).to_a + expect(events.length).to eq(20) + end - expect(events.length).to eq(20) - end + it 'can paginate through events' do + events = described_class.new(projects, offset: 20).to_a - it 'can paginate through events' do - events = described_class.new(projects, offset: 20).to_a + expect(events.length).to eq(1) + end - expect(events.length).to eq(1) - end + it 'returns an empty Array when crossing the maximum page number' do + events = described_class.new(projects, limit: 1, offset: 15).to_a - it 'returns an empty Array when crossing the maximum page number' do - events = described_class.new(projects, limit: 1, offset: 15).to_a + expect(events).to be_empty + end + + it 'allows filtering of events using an EventFilter' do + filter = EventFilter.new(EventFilter::ISSUE) + events = described_class.new(projects, filter: filter).to_a - expect(events).to be_empty + expect(events.length).to eq(1) + expect(events[0].action).to eq(Event::CLOSED) + end end - it 'allows filtering of events using an EventFilter' do - filter = EventFilter.new(EventFilter::ISSUE) - events = described_class.new(projects, filter: filter).to_a + context 'with group events' do + let(:groups) { group.self_and_descendants.public_or_visible_to_user(user) } + let(:subject) { described_class.new(projects, groups: groups).to_a } + + it 'includes also group events' do + subgroup = create(:group, parent: group) + event1 = create(:event, project: project, author: user) + event2 = create(:event, project: nil, group: group, author: user) + event3 = create(:event, project: nil, group: subgroup, author: user) - expect(events.length).to eq(1) - expect(events[0].action).to eq(Event::CLOSED) + expect(subject).to eq([event3, event2, event1]) + end + + it 'does not include events from inaccessible groups' do + subgroup = create(:group, :private, parent: group) + event1 = create(:event, project: nil, group: group, author: user) + create(:event, project: nil, group: subgroup, author: user) + + expect(subject).to eq([event1]) + end end end end |