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
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
gitlab-ce
Commits
1413c23c
Commit
1413c23c
authored
Aug 10, 2012
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1208 from tsigo/issue_commonality
Consolidate functionality shared between Issue and MergeRequest
parents
5fd0e7ba
b7f9b822
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
76 additions
and
86 deletions
+76
-86
app/models/issue.rb
app/models/issue.rb
+1
-41
app/models/merge_request.rb
app/models/merge_request.rb
+6
-45
app/roles/issue_commonality.rb
app/roles/issue_commonality.rb
+52
-0
spec/models/issue_spec.rb
spec/models/issue_spec.rb
+8
-0
spec/models/merge_request_spec.rb
spec/models/merge_request_spec.rb
+9
-0
No files found.
app/models/issue.rb
View file @
1413c23c
class
Issue
<
ActiveRecord
::
Base
include
IssueCommonality
include
Upvote
acts_as_taggable_on
:labels
belongs_to
:project
belongs_to
:milestone
belongs_to
:author
,
:class_name
=>
"User"
belongs_to
:assignee
,
:class_name
=>
"User"
has_many
:notes
,
:as
=>
:noteable
,
:dependent
=>
:destroy
attr_protected
:author
,
:author_id
,
:project
,
:project_id
attr_accessor
:author_id_of_changes
validates_presence_of
:project_id
validates_presence_of
:author_id
delegate
:name
,
:email
,
:to
=>
:author
,
:prefix
=>
true
delegate
:name
,
:email
,
:to
=>
:assignee
,
:allow_nil
=>
true
,
:prefix
=>
true
validates
:title
,
:presence
=>
true
,
:length
=>
{
:within
=>
0
..
255
}
validates
:description
,
:length
=>
{
:within
=>
0
..
2000
}
scope
:opened
,
where
(
:closed
=>
false
)
scope
:closed
,
where
(
:closed
=>
true
)
scope
:assigned
,
lambda
{
|
u
|
where
(
:assignee_id
=>
u
.
id
)}
acts_as_list
def
self
.
open_for
(
user
)
opened
.
assigned
(
user
)
end
def
self
.
search
query
where
(
"title like :query"
,
:query
=>
"%
#{
query
}
%"
)
end
def
today?
Date
.
today
==
created_at
.
to_date
end
def
new?
today?
&&
created_at
==
updated_at
end
def
is_assigned?
!!
assignee_id
end
...
...
app/models/merge_request.rb
View file @
1413c23c
require
File
.
join
(
Rails
.
root
,
"app/models/commit"
)
class
MergeRequest
<
ActiveRecord
::
Base
include
IssueCommonality
include
Upvote
BROKEN_DIFF
=
"--broken-diff"
...
...
@@ -9,47 +10,15 @@ class MergeRequest < ActiveRecord::Base
CAN_BE_MERGED
=
2
CANNOT_BE_MERGED
=
3
belongs_to
:project
belongs_to
:author
,
:class_name
=>
"User"
belongs_to
:assignee
,
:class_name
=>
"User"
has_many
:notes
,
:as
=>
:noteable
,
:dependent
=>
:destroy
serialize
:st_commits
serialize
:st_diffs
attr_protected
:author
,
:author_id
,
:project
,
:project_id
attr_accessor
:author_id_of_changes
,
:should_remove_source_branch
attr_accessor
:should_remove_source_branch
validates_presence_of
:project_id
validates_presence_of
:author_id
validates_presence_of
:source_branch
validates_presence_of
:target_branch
validate
:validate_branches
delegate
:name
,
:email
,
:to
=>
:author
,
:prefix
=>
true
delegate
:name
,
:email
,
:to
=>
:assignee
,
:allow_nil
=>
true
,
:prefix
=>
true
validates
:title
,
:presence
=>
true
,
:length
=>
{
:within
=>
0
..
255
}
scope
:opened
,
where
(
:closed
=>
false
)
scope
:closed
,
where
(
:closed
=>
true
)
scope
:assigned
,
lambda
{
|
u
|
where
(
:assignee_id
=>
u
.
id
)}
def
self
.
search
query
where
(
"title like :query"
,
:query
=>
"%
#{
query
}
%"
)
end
def
self
.
find_all_by_branch
(
branch_name
)
where
(
"source_branch like :branch or target_branch like :branch"
,
:branch
=>
branch_name
)
end
...
...
@@ -95,14 +64,6 @@ class MergeRequest < ActiveRecord::Base
self
.
save
end
def
today?
Date
.
today
==
created_at
.
to_date
end
def
new?
today?
&&
created_at
==
updated_at
end
def
diffs
st_diffs
||
[]
end
...
...
@@ -135,7 +96,7 @@ class MergeRequest < ActiveRecord::Base
commits
.
first
end
def
merged?
def
merged?
merged
&&
merge_event
end
...
...
@@ -152,7 +113,7 @@ class MergeRequest < ActiveRecord::Base
end
def
probably_merged?
unmerged_commits
.
empty?
&&
unmerged_commits
.
empty?
&&
commits
.
any?
&&
open
?
end
...
...
@@ -170,8 +131,8 @@ class MergeRequest < ActiveRecord::Base
self
.
update_attributes
:
state
=>
CANNOT_BE_MERGED
end
def
reloaded_commits
if
open
?
&&
unmerged_commits
.
any?
def
reloaded_commits
if
open
?
&&
unmerged_commits
.
any?
self
.
st_commits
=
unmerged_commits
save
end
...
...
app/roles/issue_commonality.rb
0 → 100644
View file @
1413c23c
# Contains common functionality shared between Issues and MergeRequests
module
IssueCommonality
extend
ActiveSupport
::
Concern
included
do
attr_protected
:author
,
:author_id
,
:project
,
:project_id
belongs_to
:project
belongs_to
:author
,
:class_name
=>
"User"
belongs_to
:assignee
,
:class_name
=>
"User"
has_many
:notes
,
:as
=>
:noteable
,
:dependent
=>
:destroy
validates_presence_of
:project_id
validates_presence_of
:author_id
validates
:title
,
:presence
=>
true
,
:length
=>
{
:within
=>
0
..
255
}
scope
:opened
,
where
(
:closed
=>
false
)
scope
:closed
,
where
(
:closed
=>
true
)
scope
:assigned
,
lambda
{
|
u
|
where
(
:assignee_id
=>
u
.
id
)}
delegate
:name
,
:email
,
:to
=>
:author
,
:prefix
=>
true
delegate
:name
,
:email
,
:to
=>
:assignee
,
:allow_nil
=>
true
,
:prefix
=>
true
attr_accessor
:author_id_of_changes
end
module
ClassMethods
def
search
(
query
)
where
(
"title like :query"
,
:query
=>
"%
#{
query
}
%"
)
end
end
def
today?
Date
.
today
==
created_at
.
to_date
end
def
new?
today?
&&
created_at
==
updated_at
end
end
spec/models/issue_spec.rb
View file @
1413c23c
...
...
@@ -106,6 +106,14 @@ describe Issue do
end
end
describe
".search"
do
let!
(
:issue
)
{
Factory
.
create
(
:issue
,
:title
=>
"Searchable issue"
,
:project
=>
Factory
.
create
(
:project
))
}
it
"matches by title"
do
Issue
.
search
(
'able'
).
all
.
should
==
[
issue
]
end
end
end
# == Schema Information
#
...
...
spec/models/merge_request_spec.rb
View file @
1413c23c
...
...
@@ -56,6 +56,15 @@ describe MergeRequest do
subject
.
upvotes
.
should
==
2
end
end
describe
".search"
do
let!
(
:issue
)
{
Factory
.
create
(
:issue
,
:title
=>
"Searchable issue"
,
:project
=>
Factory
.
create
(
:project
))
}
it
"matches by title"
do
Issue
.
search
(
'able'
).
all
.
should
==
[
issue
]
end
end
end
# == Schema Information
#
...
...
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