Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
64779366
Commit
64779366
authored
May 03, 2017
by
Douglas Barbosa Alexandre
Committed by
Robert Speicher
May 05, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update last_repository_updated_at when a push event is created
parent
8df81668
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
39 additions
and
32 deletions
+39
-32
app/models/event.rb
app/models/event.rb
+6
-6
spec/models/event_spec.rb
spec/models/event_spec.rb
+33
-26
No files found.
app/models/event.rb
View file @
64779366
...
@@ -30,6 +30,7 @@ class Event < ActiveRecord::Base
...
@@ -30,6 +30,7 @@ class Event < ActiveRecord::Base
# Callbacks
# Callbacks
after_create
:reset_project_activity
after_create
:reset_project_activity
after_create
:set_last_repository_updated_at
,
if: :push?
# Scopes
# Scopes
scope
:recent
,
->
{
reorder
(
id: :desc
)
}
scope
:recent
,
->
{
reorder
(
id: :desc
)
}
...
@@ -352,12 +353,6 @@ class Event < ActiveRecord::Base
...
@@ -352,12 +353,6 @@ class Event < ActiveRecord::Base
Project
.
unscoped
.
where
(
id:
project_id
).
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
)
update_all
(
last_activity_at:
created_at
)
if
push?
Project
.
unscoped
.
where
(
id:
project_id
).
where
(
'last_repository_updated_at <= ?'
,
RESET_PROJECT_ACTIVITY_INTERVAL
.
ago
).
update_all
(
last_repository_updated_at:
created_at
)
end
end
end
def
authored_by?
(
user
)
def
authored_by?
(
user
)
...
@@ -369,4 +364,9 @@ class Event < ActiveRecord::Base
...
@@ -369,4 +364,9 @@ class Event < ActiveRecord::Base
def
recent_update?
def
recent_update?
project
.
last_activity_at
>
RESET_PROJECT_ACTIVITY_INTERVAL
.
ago
project
.
last_activity_at
>
RESET_PROJECT_ACTIVITY_INTERVAL
.
ago
end
end
def
set_last_repository_updated_at
Project
.
unscoped
.
where
(
id:
project_id
).
update_all
(
last_repository_updated_at:
created_at
)
end
end
end
spec/models/event_spec.rb
View file @
64779366
...
@@ -15,15 +15,41 @@ describe Event, models: true do
...
@@ -15,15 +15,41 @@ describe Event, models: true do
end
end
describe
'Callbacks'
do
describe
'Callbacks'
do
describe
'after_create :reset_project_activity'
do
let
(
:project
)
{
create
(
:empty_project
)
}
let
(
:project
)
{
create
(
:empty_project
)
}
describe
'after_create :reset_project_activity'
do
it
'calls the reset_project_activity method'
do
it
'calls the reset_project_activity method'
do
expect_any_instance_of
(
described_class
).
to
receive
(
:reset_project_activity
)
expect_any_instance_of
(
described_class
).
to
receive
(
:reset_project_activity
)
create_push_event
(
project
,
project
.
owner
)
create_push_event
(
project
,
project
.
owner
)
end
end
end
end
describe
'after_create :set_last_repository_updated_at'
do
context
'with a push event'
do
it
'updates the project last_repository_updated_at'
do
project
.
update
(
last_repository_updated_at:
1
.
year
.
ago
)
create_push_event
(
project
,
project
.
owner
)
project
.
reload
expect
(
project
.
last_repository_updated_at
).
to
be_within
(
1
.
minute
).
of
(
Time
.
now
)
end
end
context
'without a push event'
do
it
'does not update the project last_repository_updated_at'
do
project
.
update
(
last_repository_updated_at:
1
.
year
.
ago
)
create
(
:closed_issue_event
,
project:
project
,
author:
project
.
owner
)
project
.
reload
expect
(
project
.
last_repository_updated_at
).
to
be_within
(
1
.
minute
).
of
(
1
.
year
.
ago
)
end
end
end
end
end
describe
"Push event"
do
describe
"Push event"
do
...
@@ -243,38 +269,19 @@ describe Event, models: true do
...
@@ -243,38 +269,19 @@ describe Event, models: true do
expect
(
project
).
not_to
receive
(
:update_column
).
expect
(
project
).
not_to
receive
(
:update_column
).
with
(
:last_activity_at
,
a_kind_of
(
Time
))
with
(
:last_activity_at
,
a_kind_of
(
Time
))
expect
(
project
).
not_to
receive
(
:update_column
).
with
(
:last_repository_updated_at
,
a_kind_of
(
Time
))
create_push_event
(
project
,
project
.
owner
)
create_push_event
(
project
,
project
.
owner
)
end
end
end
end
context
'when a project was updated more than 1 hour ago'
do
context
'when a project was updated more than 1 hour ago'
do
context
'with a push event'
do
it
'updates the project'
do
it
'updates the project last_activity_at and last_repository_updated_at'
do
project
.
update
(
last_activity_at:
1
.
year
.
ago
)
project
.
update
(
last_activity_at:
1
.
year
.
ago
,
last_repository_updated_at:
1
.
year
.
ago
)
create_push_event
(
project
,
project
.
owner
)
project
.
reload
expect
(
project
.
last_activity_at
).
to
be_within
(
1
.
minute
).
of
(
Time
.
now
)
expect
(
project
.
last_repository_updated_at
).
to
be_within
(
1
.
minute
).
of
(
Time
.
now
)
end
end
context
'without a push event'
do
it
'does not update the project last_repository_updated_at'
do
project
.
update
(
last_activity_at:
1
.
year
.
ago
,
last_repository_updated_at:
1
.
year
.
ago
)
create
(
:closed_issue_event
,
project:
project
,
author:
project
.
owner
)
create_push_event
(
project
,
project
.
owner
)
project
.
reload
project
.
reload
expect
(
project
.
last_activity_at
).
to
be_within
(
1
.
minute
).
of
(
Time
.
now
)
expect
(
project
.
last_activity_at
).
to
be_within
(
1
.
minute
).
of
(
Time
.
now
)
expect
(
project
.
last_repository_updated_at
).
to
be_within
(
1
.
minute
).
of
(
1
.
year
.
ago
)
end
end
end
end
end
end
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment