else @project.issues.opened
end
- @issues = @issues.where(assignee_id: params[:assignee_id]) if params[:assignee_id].present?
@issues = @issues.tagged_with(params[:label_name]) if params[:label_name].present?
@issues = @issues.includes(:author, :project).order("updated_at")
+ # Filter by specific assignee_id (or lack thereof)?
+ if params[:assignee_id].present?
+ @issues = @issues.where(assignee_id: (params[:assignee_id] == '0' ? nil : params[:assignee_id]))
+ end
+
# Filter by specific milestone_id (or lack thereof)?
if params[:milestone_id].present?
@issues = @issues.where(milestone_id: (params[:milestone_id] == '0' ? nil : params[:milestone_id]))
end
+
@issues
end
def unassigned_milestone
OpenStruct.new(id: 0, title: 'Unspecified')
end
+
+ def unassigned_issue
+ OpenStruct.new(id: 0, name: 'Unassigned')
+ end
end
.right
= form_tag project_issues_path(@project), method: :get, class: :right do
= select_tag(:label_name, options_for_select(issue_tags, params[:label_name]), prompt: "Labels")
- = select_tag(:assignee_id, options_from_collection_for_select(@project.users.all, "id", "name", params[:assignee_id]), prompt: "Assignee")
+ = select_tag(:assignee_id, options_from_collection_for_select([unassigned_issue] + @project.users.all, "id", "name", params[:assignee_id]), prompt: "Assignee")
= select_tag(:milestone_id, options_from_collection_for_select([unassigned_milestone] + @project.milestones.order("id desc").all, "id", "title", params[:milestone_id]), prompt: "Milestone")
= hidden_field_tag :f, params[:f]
.clearfix
@issue = Issue.first
@issue.milestone = Factory(:milestone, project: project)
+ @issue.assignee = nil
@issue.save
end
page.should_not have_content 'barbaz'
page.should_not have_content 'gitlab'
end
+
+ it "should allow filtering by issues with no specified assignee" do
+ visit project_issues_path(project, assignee_id: '0')
+
+ page.should have_content 'foobar'
+ page.should_not have_content 'barbaz'
+ page.should_not have_content 'gitlab'
+ end
+
+ it "should allow filtering by a specified assignee" do
+ visit project_issues_path(project, assignee_id: @user.id)
+
+ page.should_not have_content 'foobar'
+ page.should have_content 'barbaz'
+ page.should have_content 'gitlab'
+ end
end
end