Commit 2e839cee93bcbf3904f0aeb50206f555c340d672

Authored by Dmitriy Zaporozhets
1 parent b1bdd829

Fixed tests. Fixed overrided scope. Better usability for milestone view

app/assets/javascripts/milestones.js.coffee
@@ -1,7 +0,0 @@ @@ -1,7 +0,0 @@
1 -$ ->  
2 - $('.milestone-merge-requests-filter li[data-closed]').addClass('hide')  
3 -  
4 - $('.milestone-merge-requests-filter ul.nav li a').click ->  
5 - $('.milestone-merge-requests-filter li').toggleClass('active')  
6 - $('.milestone-merge-requests-filter li[data-closed]').toggleClass('hide')  
7 - false  
app/contexts/issues/list_context.rb
@@ -8,7 +8,7 @@ module Issues @@ -8,7 +8,7 @@ module Issues
8 @issues = case params[:status] 8 @issues = case params[:status]
9 when issues_filter[:all] then @project.issues 9 when issues_filter[:all] then @project.issues
10 when issues_filter[:closed] then @project.issues.closed 10 when issues_filter[:closed] then @project.issues.closed
11 - when issues_filter[:to_me] then @project.issues.assigned(current_user) 11 + when issues_filter[:to_me] then @project.issues.assigned_to(current_user)
12 when issues_filter[:by_me] then @project.issues.authored(current_user) 12 when issues_filter[:by_me] then @project.issues.authored(current_user)
13 else @project.issues.opened 13 else @project.issues.opened
14 end 14 end
app/models/concerns/issuable.rb
@@ -22,8 +22,10 @@ module Issuable @@ -22,8 +22,10 @@ module Issuable
22 scope :closed, -> { with_state(:closed) } 22 scope :closed, -> { with_state(:closed) }
23 scope :of_group, ->(group) { where(project_id: group.project_ids) } 23 scope :of_group, ->(group) { where(project_id: group.project_ids) }
24 scope :of_user_team, ->(team) { where(project_id: team.project_ids, assignee_id: team.member_ids) } 24 scope :of_user_team, ->(team) { where(project_id: team.project_ids, assignee_id: team.member_ids) }
25 - scope :assigned, ->(u) { where(assignee_id: u.id)} 25 + scope :assigned_to, ->(u) { where(assignee_id: u.id)}
26 scope :recent, -> { order("created_at DESC") } 26 scope :recent, -> { order("created_at DESC") }
  27 + scope :assigned, -> { where("assignee_id IS NOT NULL") }
  28 + scope :unassigned, -> { where("assignee_id IS NULL") }
27 29
28 delegate :name, 30 delegate :name,
29 :email, 31 :email,
app/models/issue.rb
@@ -28,8 +28,6 @@ class Issue < ActiveRecord::Base @@ -28,8 +28,6 @@ class Issue < ActiveRecord::Base
28 scope :cared, ->(user) { where(assignee_id: user) } 28 scope :cared, ->(user) { where(assignee_id: user) }
29 scope :authored, ->(user) { where(author_id: user) } 29 scope :authored, ->(user) { where(author_id: user) }
30 scope :open_for, ->(user) { opened.assigned(user) } 30 scope :open_for, ->(user) { opened.assigned(user) }
31 - scope :assigned, -> { where("assignee_id IS NOT NULL") }  
32 - scope :unassigned, -> { where("assignee_id IS NULL") }  
33 31
34 state_machine :state, initial: :opened do 32 state_machine :state, initial: :opened do
35 event :close do 33 event :close do
app/views/milestones/_issues.html.haml
1 -.span6  
2 - .ui-box.milestone-issue-filter  
3 - %h5.title= title  
4 - %ul.well-list  
5 - - issues.each do |issue|  
6 - %li{data: {closed: issue.closed?}}  
7 - = link_to [@project, issue] do  
8 - %span.badge.badge-info ##{issue.id}  
9 - –  
10 - = link_to_gfm truncate(issue.title, length: 60), [@project, issue]  
11 \ No newline at end of file 1 \ No newline at end of file
  2 +.ui-box
  3 + %h5.title= title
  4 + %ul.well-list
  5 + - issues.each do |issue|
  6 + %li
  7 + = link_to [@project, issue] do
  8 + %span.badge{class: issue.closed? ? 'badge-important' : 'badge-info'} ##{issue.id}
  9 + = link_to_gfm truncate(issue.title, length: 60), [@project, issue]
  10 + - if issue.assignee
  11 + .pull-right
  12 + = image_tag gravatar_icon(issue.assignee.email, 16), class: "avatar s16"
app/views/milestones/_merge_request.html.haml 0 → 100644
@@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
  1 +%li
  2 + = link_to [@project, merge_request] do
  3 + %span.badge.badge-info ##{merge_request.id}
  4 + –
  5 + = link_to_gfm truncate(merge_request.title, length: 60), [@project, merge_request]
app/views/milestones/show.html.haml
@@ -55,32 +55,52 @@ @@ -55,32 +55,52 @@
55 = markdown @milestone.description 55 = markdown @milestone.description
56 56
57 57
58 -.row  
59 - = render(partial: 'issues', locals: {title: 'Unstarted Issues (open and unassigned)', issues: @issues.opened.unassigned})  
60 -  
61 - = render(partial: 'issues', locals: {title: 'Ongoing Issues (open and assigned)', issues: @issues.opened.assigned}) 58 +%ul.nav.nav-tabs
  59 + %li.active
  60 + = link_to '#tab-issues', 'data-toggle' => 'tab' do
  61 + Issues
  62 + %span.badge= @issues.count
  63 + %li
  64 + = link_to '#tab-merge-requests', 'data-toggle' => 'tab' do
  65 + Merge Requests
  66 + %span.badge= @merge_requests.count
  67 + %li
  68 + = link_to '#tab-participants', 'data-toggle' => 'tab' do
  69 + Participants
  70 + %span.badge= @users.count
62 71
63 -.row  
64 - .span6  
65 - .ui-box.milestone-merge-requests-filter  
66 - .title  
67 - %ul.nav.nav-pills  
68 - %li.active= link_to('Open Merge Requests', '#')  
69 - %li=link_to('All Merge Requests', '#')  
70 - %ul.well-list  
71 - - @merge_requests.each do |merge_request|  
72 - %li{data: {closed: merge_request.closed? || merge_request.merged?}}  
73 - = link_to [@project, merge_request] do  
74 - %span.badge.badge-info ##{merge_request.id}  
75 - –  
76 - = link_to_gfm truncate(merge_request.title, length: 60), [@project, merge_request]  
77 72
78 - = render(:partial => 'issues', locals: {title: 'Completed Issues (closed)', issues: @issues.closed}) 73 +.tab-content
  74 + .tab-pane.active#tab-issues
  75 + .row
  76 + .span4
  77 + = render('issues', title: 'Unstarted Issues (open and unassigned)', issues: @issues.opened.unassigned)
  78 + .span4
  79 + = render('issues', title: 'Ongoing Issues (open and assigned)', issues: @issues.opened.assigned)
  80 + .span4
  81 + = render('issues', title: 'Completed Issues (closed)', issues: @issues.closed)
79 82
80 -%hr  
81 -%h6 Participants:  
82 -%div  
83 - - @users.each do |user|  
84 - = link_to_member(@project, user) 83 + .tab-pane#tab-merge-requests
  84 + .row
  85 + .span6
  86 + .ui-box
  87 + %h5.title Open
  88 + %ul.well-list
  89 + - @merge_requests.opened.each do |merge_request|
  90 + = render 'merge_request', merge_request: merge_request
  91 + .span6
  92 + .ui-box
  93 + %h5.title Closed
  94 + %ul.well-list
  95 + - @merge_requests.closed.each do |merge_request|
  96 + = render 'merge_request', merge_request: merge_request
85 97
86 -.clearfix 98 + .tab-pane#tab-participants
  99 + %ul.bordered-list
  100 + - @users.each do |user|
  101 + %li
  102 + = link_to user, title: user.name, class: "dark" do
  103 + = image_tag gravatar_icon(user.email, 32), class: "avatar s32"
  104 + %strong= truncate(user.name, lenght: 40)
  105 + %br
  106 + %small.cgray= user.username
features/steps/project/project_milestones.rb
@@ -50,6 +50,6 @@ class ProjectMilestones < Spinach::FeatureSteps @@ -50,6 +50,6 @@ class ProjectMilestones < Spinach::FeatureSteps
50 end 50 end
51 51
52 Then "I should see 3 issues" do 52 Then "I should see 3 issues" do
53 - page.should have_selector('.milestone-issue-filter .well-list li', count: 4) 53 + page.should have_selector('#tab-issues li', count: 4)
54 end 54 end
55 end 55 end
features/steps/userteams/userteams.rb
@@ -93,7 +93,7 @@ class Userteams < Spinach::FeatureSteps @@ -93,7 +93,7 @@ class Userteams < Spinach::FeatureSteps
93 Then 'I should see issues from this team assigned to me' do 93 Then 'I should see issues from this team assigned to me' do
94 team = UserTeam.last 94 team = UserTeam.last
95 team.projects.each do |project| 95 team.projects.each do |project|
96 - project.issues.assigned(current_user).each do |issue| 96 + project.issues.assigned_to(current_user).each do |issue|
97 page.should have_content issue.title 97 page.should have_content issue.title
98 end 98 end
99 end 99 end
@@ -121,7 +121,7 @@ class Userteams < Spinach::FeatureSteps @@ -121,7 +121,7 @@ class Userteams < Spinach::FeatureSteps
121 team = UserTeam.last 121 team = UserTeam.last
122 team.projects.each do |project| 122 team.projects.each do |project|
123 team.members.each do |member| 123 team.members.each do |member|
124 - project.issues.assigned(member).each do |issue| 124 + project.issues.assigned_to(member).each do |issue|
125 page.should have_content issue.title 125 page.should have_content issue.title
126 end 126 end
127 end 127 end