summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2016-10-06 15:50:29 -0700
committerStan Hu <stanhu@gmail.com>2016-10-06 22:56:07 -0700
commit1662640985b56390a4d22dab1fee7fd04ccd5bc8 (patch)
tree82f19f1a7071d29a69f51c2f75e1acb3074dd0aa
parenta625757cb469612409d47326241818ddf4fca982 (diff)
downloadgitlab-ce-sh-fix-events-update-spec.tar.gz
Fix Event#reset_project_activity updatessh-fix-events-update-spec
!6678 removed the lease from Event#reset_project_activity, but it wasn't actually updating the project's last_activity_at timestamp properly. The WHERE clause would always return no matching projects. The spec passed occasionally because the created_at timestamp was automatically set to last_activity_at.
-rw-r--r--app/models/event.rb2
-rw-r--r--spec/models/project_spec.rb5
2 files changed, 5 insertions, 2 deletions
diff --git a/app/models/event.rb b/app/models/event.rb
index 633019fe0af..314d5ba438f 100644
--- a/app/models/event.rb
+++ b/app/models/event.rb
@@ -335,7 +335,7 @@ class Event < ActiveRecord::Base
# update the project. Only one query should actually perform the update,
# hence we add the extra WHERE clause for last_activity_at.
Project.unscoped.where(id: project_id).
- where('last_activity_at > ?', RESET_PROJECT_ACTIVITY_INTERVAL.ago).
+ where('last_activity_at <= ?', RESET_PROJECT_ACTIVITY_INTERVAL.ago).
update_all(last_activity_at: created_at)
end
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index e52d4aaf884..67a968aaf11 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -308,7 +308,9 @@ describe Project, models: true do
end
describe 'last_activity methods' do
- let(:project) { create(:project, last_activity_at: 2.hours.ago) }
+ let(:timestamp) { 2.hours.ago }
+ # last_activity_at gets set to created_at upon creation
+ let(:project) { create(:project, created_at: timestamp, updated_at: timestamp) }
describe 'last_activity' do
it 'alias last_activity to last_event' do
@@ -322,6 +324,7 @@ describe Project, models: true do
it 'returns the creation date of the project\'s last event if present' do
new_event = create(:event, project: project, created_at: Time.now)
+ project.reload
expect(project.last_activity_at.to_i).to eq(new_event.created_at.to_i)
end