Commit 5a90d044f7fddf28b4dc3cd541315bce862f2866

Authored by Robert Speicher
1 parent b1ea0b3c

Allow filtering by issues with no assigned... assignee

Continues #1222
app/controllers/issues_controller.rb
... ... @@ -144,14 +144,19 @@ class IssuesController < ApplicationController
144 144 else @project.issues.opened
145 145 end
146 146  
147   - @issues = @issues.where(assignee_id: params[:assignee_id]) if params[:assignee_id].present?
148 147 @issues = @issues.tagged_with(params[:label_name]) if params[:label_name].present?
149 148 @issues = @issues.includes(:author, :project).order("updated_at")
150 149  
  150 + # Filter by specific assignee_id (or lack thereof)?
  151 + if params[:assignee_id].present?
  152 + @issues = @issues.where(assignee_id: (params[:assignee_id] == '0' ? nil : params[:assignee_id]))
  153 + end
  154 +
151 155 # Filter by specific milestone_id (or lack thereof)?
152 156 if params[:milestone_id].present?
153 157 @issues = @issues.where(milestone_id: (params[:milestone_id] == '0' ? nil : params[:milestone_id]))
154 158 end
  159 +
155 160 @issues
156 161 end
157 162  
... ...
app/helpers/issues_helper.rb
... ... @@ -42,4 +42,8 @@ module IssuesHelper
42 42 def unassigned_milestone
43 43 OpenStruct.new(id: 0, title: 'Unspecified')
44 44 end
  45 +
  46 + def unassigned_issue
  47 + OpenStruct.new(id: 0, name: 'Unassigned')
  48 + end
45 49 end
... ...
app/views/issues/index.html.haml
... ... @@ -49,7 +49,7 @@
49 49 .right
50 50 = form_tag project_issues_path(@project), method: :get, class: :right do
51 51 = select_tag(:label_name, options_for_select(issue_tags, params[:label_name]), prompt: "Labels")
52   - = select_tag(:assignee_id, options_from_collection_for_select(@project.users.all, "id", "name", params[:assignee_id]), prompt: "Assignee")
  52 + = select_tag(:assignee_id, options_from_collection_for_select([unassigned_issue] + @project.users.all, "id", "name", params[:assignee_id]), prompt: "Assignee")
53 53 = select_tag(:milestone_id, options_from_collection_for_select([unassigned_milestone] + @project.milestones.order("id desc").all, "id", "title", params[:milestone_id]), prompt: "Milestone")
54 54 = hidden_field_tag :f, params[:f]
55 55 .clearfix
... ...
spec/requests/issues_spec.rb
... ... @@ -102,6 +102,7 @@ describe "Issues" do
102 102  
103 103 @issue = Issue.first
104 104 @issue.milestone = Factory(:milestone, project: project)
  105 + @issue.assignee = nil
105 106 @issue.save
106 107 end
107 108  
... ... @@ -120,5 +121,21 @@ describe "Issues" do
120 121 page.should_not have_content 'barbaz'
121 122 page.should_not have_content 'gitlab'
122 123 end
  124 +
  125 + it "should allow filtering by issues with no specified assignee" do
  126 + visit project_issues_path(project, assignee_id: '0')
  127 +
  128 + page.should have_content 'foobar'
  129 + page.should_not have_content 'barbaz'
  130 + page.should_not have_content 'gitlab'
  131 + end
  132 +
  133 + it "should allow filtering by a specified assignee" do
  134 + visit project_issues_path(project, assignee_id: @user.id)
  135 +
  136 + page.should_not have_content 'foobar'
  137 + page.should have_content 'barbaz'
  138 + page.should have_content 'gitlab'
  139 + end
123 140 end
124 141 end
... ...