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
0
Merge Requests
0
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
Boxiang Sun
gitlab-ce
Commits
80685596
Commit
80685596
authored
Sep 09, 2012
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1414 from AlexDenisov/team_member_events
Team membership events
parents
a56cec11
1f240b09
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
143 additions
and
3 deletions
+143
-3
app/assets/stylesheets/common.scss
app/assets/stylesheets/common.scss
+8
-0
app/decorators/event_decorator.rb
app/decorators/event_decorator.rb
+3
-1
app/models/event.rb
app/models/event.rb
+19
-1
app/models/users_project.rb
app/models/users_project.rb
+1
-1
app/observers/users_project_observer.rb
app/observers/users_project_observer.rb
+15
-0
app/views/events/_event.html.haml
app/views/events/_event.html.haml
+4
-0
app/views/events/_event_membership_changed.html.haml
app/views/events/_event_membership_changed.html.haml
+9
-0
features/dashboard/dashboard.feature
features/dashboard/dashboard.feature
+10
-0
features/step_definitions/dashboard_steps.rb
features/step_definitions/dashboard_steps.rb
+25
-0
spec/models/event_spec.rb
spec/models/event_spec.rb
+22
-0
spec/observers/users_project_observer_spec.rb
spec/observers/users_project_observer_spec.rb
+27
-0
No files found.
app/assets/stylesheets/common.scss
View file @
80685596
...
@@ -179,6 +179,14 @@ span.update-author {
...
@@ -179,6 +179,14 @@ span.update-author {
&
.merged
{
&
.merged
{
background-color
:
#2A2
;
background-color
:
#2A2
;
}
}
&
.joined
{
background-color
:
#1cb9ff
;
}
&
.left
{
background-color
:
#ff5057
;
}
}
}
form
{
form
{
...
...
app/decorators/event_decorator.rb
View file @
80685596
...
@@ -8,7 +8,9 @@ class EventDecorator < ApplicationDecorator
...
@@ -8,7 +8,9 @@ class EventDecorator < ApplicationDecorator
"
#{
self
.
author_name
}
#{
self
.
action_name
}
MR #
#{
self
.
target_id
}
:"
+
self
.
merge_request_title
"
#{
self
.
author_name
}
#{
self
.
action_name
}
MR #
#{
self
.
target_id
}
:"
+
self
.
merge_request_title
elsif
self
.
push?
elsif
self
.
push?
"
#{
self
.
author_name
}
#{
self
.
push_action_name
}
#{
self
.
ref_type
}
"
+
self
.
ref_name
"
#{
self
.
author_name
}
#{
self
.
push_action_name
}
#{
self
.
ref_type
}
"
+
self
.
ref_name
else
elsif
self
.
membership_changed?
"
#{
self
.
author_name
}
#{
self
.
action_name
}
#{
self
.
project
.
name
}
"
else
""
""
end
end
end
end
...
...
app/models/event.rb
View file @
80685596
...
@@ -10,6 +10,8 @@ class Event < ActiveRecord::Base
...
@@ -10,6 +10,8 @@ class Event < ActiveRecord::Base
Pushed
=
5
Pushed
=
5
Commented
=
6
Commented
=
6
Merged
=
7
Merged
=
7
Joined
=
8
# User joined project
Left
=
9
# User left project
belongs_to
:project
belongs_to
:project
belongs_to
:target
,
polymorphic:
true
belongs_to
:target
,
polymorphic:
true
...
@@ -37,7 +39,7 @@ class Event < ActiveRecord::Base
...
@@ -37,7 +39,7 @@ class Event < ActiveRecord::Base
# - new issue
# - new issue
# - merge request
# - merge request
def
allowed?
def
allowed?
push?
||
issue?
||
merge_request?
push?
||
issue?
||
merge_request?
||
membership_changed?
end
end
def
push?
def
push?
...
@@ -84,6 +86,18 @@ class Event < ActiveRecord::Base
...
@@ -84,6 +86,18 @@ class Event < ActiveRecord::Base
[
Closed
,
Reopened
].
include?
(
action
)
[
Closed
,
Reopened
].
include?
(
action
)
end
end
def
joined?
action
==
Joined
end
def
left?
action
==
Left
end
def
membership_changed?
joined?
||
left?
end
def
issue
def
issue
target
if
target_type
==
"Issue"
target
if
target_type
==
"Issue"
end
end
...
@@ -101,6 +115,10 @@ class Event < ActiveRecord::Base
...
@@ -101,6 +115,10 @@ class Event < ActiveRecord::Base
"closed"
"closed"
elsif
merged?
elsif
merged?
"merged"
"merged"
elsif
joined?
'joined'
elsif
left?
'left'
else
else
"opened"
"opened"
end
end
...
...
app/models/users_project.rb
View file @
80685596
...
@@ -23,7 +23,7 @@ class UsersProject < ActiveRecord::Base
...
@@ -23,7 +23,7 @@ class UsersProject < ActiveRecord::Base
def
self
.
bulk_delete
(
project
,
user_ids
)
def
self
.
bulk_delete
(
project
,
user_ids
)
UsersProject
.
transaction
do
UsersProject
.
transaction
do
UsersProject
.
where
(
:user_id
=>
user_ids
,
:project_id
=>
project
.
id
).
each
do
|
users_project
|
UsersProject
.
where
(
:user_id
=>
user_ids
,
:project_id
=>
project
.
id
).
each
do
|
users_project
|
users_project
.
de
lete
users_project
.
de
stroy
end
end
end
end
end
end
...
...
app/observers/users_project_observer.rb
View file @
80685596
class
UsersProjectObserver
<
ActiveRecord
::
Observer
class
UsersProjectObserver
<
ActiveRecord
::
Observer
def
after_create
(
users_project
)
def
after_create
(
users_project
)
Notify
.
project_access_granted_email
(
users_project
.
id
).
deliver
Notify
.
project_access_granted_email
(
users_project
.
id
).
deliver
Event
.
create
(
project_id:
users_project
.
project
.
id
,
action:
Event
::
Joined
,
author_id:
users_project
.
user
.
id
)
end
end
def
after_update
(
users_project
)
def
after_update
(
users_project
)
Notify
.
project_access_granted_email
(
users_project
.
id
).
deliver
Notify
.
project_access_granted_email
(
users_project
.
id
).
deliver
end
end
def
after_destroy
(
users_project
)
Event
.
create
(
project_id:
users_project
.
project
.
id
,
action:
Event
::
Left
,
author_id:
users_project
.
user
.
id
)
end
end
end
app/views/events/_event.html.haml
View file @
80685596
...
@@ -11,3 +11,7 @@
...
@@ -11,3 +11,7 @@
.event_feed
.event_feed
=
render
"events/event_push"
,
event:
event
=
render
"events/event_push"
,
event:
event
-
elsif
event
.
membership_changed?
.event_feed
=
render
"events/event_membership_changed"
,
event:
event
app/views/events/_event_membership_changed.html.haml
0 → 100644
View file @
80685596
=
image_tag
gravatar_icon
(
event
.
author_email
),
class:
"avatar"
%strong
#{
event
.
author_name
}
%span
.event_label
{
class:
event
.
action_name
}=
event
.
action_name
project
%strong
=
link_to
event
.
project
.
name
,
event
.
project
%span
.cgray
=
time_ago_in_words
(
event
.
created_at
)
ago.
features/dashboard/dashboard.feature
View file @
80685596
...
@@ -15,4 +15,14 @@ Feature: Dashboard
...
@@ -15,4 +15,14 @@ Feature: Dashboard
And
I click
"Create Merge Request"
link
And
I click
"Create Merge Request"
link
Then
I see prefilled new Merge Request page
Then
I see prefilled new Merge Request page
Scenario
:
I
should see User joined Project event
Given
user with name
"John Doe"
joined project
"Shop"
When
I visit dashboard page
Then
I should see
"John Doe joined project Shop"
event
Scenario
:
I
should see User left Project event
Given
user with name
"John Doe"
joined project
"Shop"
And
user with name
"John Doe"
left project
"Shop"
When
I visit dashboard page
Then
I should see
"John Doe left project Shop"
event
features/step_definitions/dashboard_steps.rb
View file @
80685596
...
@@ -109,3 +109,28 @@ Given /^I have authored merge requests$/ do
...
@@ -109,3 +109,28 @@ Given /^I have authored merge requests$/ do
:author
=>
@user
,
:author
=>
@user
,
:project
=>
project2
:project
=>
project2
end
end
Given
/^user with name "(.*?)" joined project "(.*?)"$/
do
|
user_name
,
project_name
|
user
=
Factory
.
create
(
:user
,
{
name:
user_name
})
project
=
Project
.
find_by_name
project_name
Event
.
create
(
project:
project
,
author_id:
user
.
id
,
action:
Event
::
Joined
)
end
Given
/^user with name "(.*?)" left project "(.*?)"$/
do
|
user_name
,
project_name
|
user
=
User
.
find_by_name
user_name
project
=
Project
.
find_by_name
project_name
Event
.
create
(
project:
project
,
author_id:
user
.
id
,
action:
Event
::
Left
)
end
Then
/^I should see "(.*?)" event$/
do
|
event_text
|
page
.
should
have_content
(
event_text
)
end
spec/models/event_spec.rb
View file @
80685596
...
@@ -49,4 +49,26 @@ describe Event do
...
@@ -49,4 +49,26 @@ describe Event do
it
{
@event
.
branch_name
.
should
==
"master"
}
it
{
@event
.
branch_name
.
should
==
"master"
}
it
{
@event
.
author
.
should
==
@user
}
it
{
@event
.
author
.
should
==
@user
}
end
end
describe
"Joined project team"
do
let
(
:project
)
{
Factory
.
create
:project
}
let
(
:new_user
)
{
Factory
.
create
:user
}
it
"should create event"
do
UsersProject
.
observers
.
enable
:users_project_observer
expect
{
UsersProject
.
bulk_import
(
project
,
[
new_user
.
id
],
UsersProject
::
DEVELOPER
)
}.
to
change
{
Event
.
count
}.
by
(
1
)
end
end
describe
"Left project team"
do
let
(
:project
)
{
Factory
.
create
:project
}
let
(
:new_user
)
{
Factory
.
create
:user
}
it
"should create event"
do
UsersProject
.
bulk_import
(
project
,
[
new_user
.
id
],
UsersProject
::
DEVELOPER
)
UsersProject
.
observers
.
enable
:users_project_observer
expect
{
UsersProject
.
bulk_delete
(
project
,
[
new_user
.
id
])
}.
to
change
{
Event
.
count
}.
by
(
1
)
end
end
end
end
spec/observers/users_project_observer_spec.rb
View file @
80685596
...
@@ -23,6 +23,14 @@ describe UsersProjectObserver do
...
@@ -23,6 +23,14 @@ describe UsersProjectObserver do
Notify
.
should_receive
(
:project_access_granted_email
).
with
(
users_project
.
id
).
and_return
(
double
(
deliver:
true
))
Notify
.
should_receive
(
:project_access_granted_email
).
with
(
users_project
.
id
).
and_return
(
double
(
deliver:
true
))
subject
.
after_create
(
users_project
)
subject
.
after_create
(
users_project
)
end
end
it
"should create new event"
do
Event
.
should_receive
(
:create
).
with
(
project_id:
users_project
.
project
.
id
,
action:
Event
::
Joined
,
author_id:
users_project
.
user
.
id
)
subject
.
after_create
(
users_project
)
end
end
end
describe
"#after_update"
do
describe
"#after_update"
do
...
@@ -37,4 +45,23 @@ describe UsersProjectObserver do
...
@@ -37,4 +45,23 @@ describe UsersProjectObserver do
subject
.
after_update
(
users_project
)
subject
.
after_update
(
users_project
)
end
end
end
end
describe
"#after_destroy"
do
it
"should called when UsersProject destroyed"
do
subject
.
should_receive
(
:after_destroy
)
UsersProject
.
observers
.
enable
:users_project_observer
do
UsersProject
.
bulk_delete
(
users_project
.
project
,
[
users_project
.
user
.
id
]
)
end
end
it
"should create new event"
do
Event
.
should_receive
(
:create
).
with
(
project_id:
users_project
.
project
.
id
,
action:
Event
::
Left
,
author_id:
users_project
.
user
.
id
)
subject
.
after_destroy
(
users_project
)
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