diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2018-01-03 17:44:29 +0100 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2018-01-04 14:32:38 +0100 |
commit | dac51ace521d7b2b2a5a5bb19167a8690ead242e (patch) | |
tree | 2e6d20697bdfe4cc5d71d4f62075a186867236dd /spec/features/dashboard | |
parent | 1dac4271798a3b9ad36c3d985a3f7740cd1c60b3 (diff) | |
download | gitlab-ce-dac51ace521d7b2b2a5a5bb19167a8690ead242e.tar.gz |
Eager load event target authors whenever possibleconditionally-eager-load-event-target-authors
This ensures that the "author" association of an event's "target"
association is eager loaded whenever the "target" association defines an
"author" association. This in turn solves the N+1 query problem we first
tried to solve in
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15788 but caused
problems when displaying milestones as those don't define an "author"
association.
The approach in this commit does mean that the authors are _always_
eager loaded since this takes place in the "belongs_to" block. This
however shouldn't pose too much of a problem, and as far as I can tell
there's no real way around this unfortunately.
Diffstat (limited to 'spec/features/dashboard')
-rw-r--r-- | spec/features/dashboard/activity_spec.rb | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/spec/features/dashboard/activity_spec.rb b/spec/features/dashboard/activity_spec.rb index bd115785646..a74a8aac2b2 100644 --- a/spec/features/dashboard/activity_spec.rb +++ b/spec/features/dashboard/activity_spec.rb @@ -24,6 +24,7 @@ feature 'Dashboard > Activity' do end let(:note) { create(:note, project: project, noteable: merge_request) } + let(:milestone) { create(:milestone, :active, project: project, title: '1.0') } let!(:push_event) do event = create(:push_event, project: project, author: user) @@ -54,6 +55,10 @@ feature 'Dashboard > Activity' do create(:event, :commented, project: project, target: note, author: user) end + let!(:milestone_event) do + create(:event, :closed, project: project, target: milestone, author: user) + end + before do project.add_master(user) @@ -68,6 +73,7 @@ feature 'Dashboard > Activity' do expect(page).to have_content('accepted') expect(page).to have_content('closed') expect(page).to have_content('commented on') + expect(page).to have_content('closed milestone') end end @@ -107,6 +113,7 @@ feature 'Dashboard > Activity' do expect(page).not_to have_content('accepted') expect(page).to have_content('closed') expect(page).not_to have_content('commented on') + expect(page).to have_content('closed milestone') end end |