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
Léo-Paul Géneau
gitlab-ce
Commits
d1c537ad
Commit
d1c537ad
authored
Jun 01, 2016
by
Douwe Maan
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'long.polyglot/gitlab-ce-issue_17479_todos_not_remove_when_leave_project'
parents
9d88a3a1
aeb5262d
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
49 additions
and
1 deletion
+49
-1
CHANGELOG
CHANGELOG
+1
-0
app/models/members/project_member.rb
app/models/members/project_member.rb
+6
-1
spec/models/members/project_member_spec.rb
spec/models/members/project_member_spec.rb
+42
-0
No files found.
CHANGELOG
View file @
d1c537ad
...
@@ -4,6 +4,7 @@ v 8.9.0 (unreleased)
...
@@ -4,6 +4,7 @@ v 8.9.0 (unreleased)
- Allow enabling wiki page events from Webhook management UI
- Allow enabling wiki page events from Webhook management UI
- Make EmailsOnPushWorker use Sidekiq mailers queue
- Make EmailsOnPushWorker use Sidekiq mailers queue
- Fix wiki page events' webhook to point to the wiki repository
- Fix wiki page events' webhook to point to the wiki repository
- Fix issue todo not remove when leave project !4150 (Long Nguyen)
- Allow forking projects with restricted visibility level
- Allow forking projects with restricted visibility level
- Improve note validation to prevent errors when creating invalid note via API
- Improve note validation to prevent errors when creating invalid note via API
- Remove project notification settings associated with deleted projects
- Remove project notification settings associated with deleted projects
...
...
app/models/members/project_member.rb
View file @
d1c537ad
...
@@ -5,7 +5,6 @@ class ProjectMember < Member
...
@@ -5,7 +5,6 @@ class ProjectMember < Member
belongs_to
:project
,
class_name:
'Project'
,
foreign_key:
'source_id'
belongs_to
:project
,
class_name:
'Project'
,
foreign_key:
'source_id'
# Make sure project member points only to project as it source
# Make sure project member points only to project as it source
default_value_for
:source_type
,
SOURCE_TYPE
default_value_for
:source_type
,
SOURCE_TYPE
validates_format_of
:source_type
,
with:
/\AProject\z/
validates_format_of
:source_type
,
with:
/\AProject\z/
...
@@ -15,6 +14,8 @@ class ProjectMember < Member
...
@@ -15,6 +14,8 @@ class ProjectMember < Member
scope
:in_projects
,
->
(
projects
)
{
where
(
source_id:
projects
.
pluck
(
:id
))
}
scope
:in_projects
,
->
(
projects
)
{
where
(
source_id:
projects
.
pluck
(
:id
))
}
scope
:with_user
,
->
(
user
)
{
where
(
user_id:
user
.
id
)
}
scope
:with_user
,
->
(
user
)
{
where
(
user_id:
user
.
id
)
}
before_destroy
:delete_member_todos
class
<<
self
class
<<
self
# Add users to project teams with passed access option
# Add users to project teams with passed access option
...
@@ -102,6 +103,10 @@ class ProjectMember < Member
...
@@ -102,6 +103,10 @@ class ProjectMember < Member
private
private
def
delete_member_todos
user
.
todos
.
where
(
project_id:
source_id
).
destroy_all
if
user
end
def
send_invite
def
send_invite
notification_service
.
invite_project_member
(
self
,
@raw_invite_token
)
notification_service
.
invite_project_member
(
self
,
@raw_invite_token
)
...
...
spec/models/members/project_member_spec.rb
View file @
d1c537ad
...
@@ -20,6 +20,48 @@
...
@@ -20,6 +20,48 @@
require
'spec_helper'
require
'spec_helper'
describe
ProjectMember
,
models:
true
do
describe
ProjectMember
,
models:
true
do
describe
'associations'
do
it
{
is_expected
.
to
belong_to
(
:project
).
class_name
(
'Project'
).
with_foreign_key
(
:source_id
)
}
end
describe
'validations'
do
it
{
is_expected
.
to
allow_value
(
'Project'
).
for
(
:source_type
)
}
it
{
is_expected
.
not_to
allow_value
(
'project'
).
for
(
:source_type
)
}
end
describe
'modules'
do
it
{
is_expected
.
to
include_module
(
Gitlab
::
ShellAdapter
)
}
end
describe
"#destroy"
do
let
(
:owner
)
{
create
(
:project_member
,
access_level:
ProjectMember
::
OWNER
)
}
let
(
:project
)
{
owner
.
project
}
let
(
:master
)
{
create
(
:project_member
,
project:
project
)
}
let
(
:owner_todos
)
{
(
0
...
2
).
map
{
create
(
:todo
,
user:
owner
.
user
,
project:
project
)
}
}
let
(
:master_todos
)
{
(
0
...
3
).
map
{
create
(
:todo
,
user:
master
.
user
,
project:
project
)
}
}
before
do
owner_todos
master_todos
end
it
"destroy itself and delete associated todos"
do
expect
(
owner
.
user
.
todos
.
size
).
to
eq
(
2
)
expect
(
master
.
user
.
todos
.
size
).
to
eq
(
3
)
expect
(
Todo
.
count
).
to
eq
(
5
)
master_todo_ids
=
master_todos
.
map
(
&
:id
)
master
.
destroy
expect
(
owner
.
user
.
todos
.
size
).
to
eq
(
2
)
expect
(
Todo
.
count
).
to
eq
(
2
)
master_todo_ids
.
each
do
|
id
|
expect
(
Todo
.
exists?
(
id
)).
to
eq
(
false
)
end
end
end
describe
:import_team
do
describe
:import_team
do
before
do
before
do
@abilities
=
Six
.
new
@abilities
=
Six
.
new
...
...
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