def statement
# project/subprojects clause
- clause = ''
+ project_clauses = []
if project && !@project.active_children.empty?
ids = [project.id]
if has_filter?("subproject_id")
# main project only
else
# all subprojects
- ids += project.active_children.collect{|p| p.id}
+ ids += project.child_ids
end
elsif Setting.display_subprojects_issues?
- ids += project.active_children.collect{|p| p.id}
+ ids += project.child_ids
end
- clause << "#{Issue.table_name}.project_id IN (%s)" % ids.join(',')
+ project_clauses << "#{Issue.table_name}.project_id IN (%s)" % ids.join(',')
elsif project
- clause << "#{Issue.table_name}.project_id = %d" % project.id
- else
- clause << Project.visible_by(User.current)
+ project_clauses << "#{Issue.table_name}.project_id = %d" % project.id
end
+ project_clauses << Project.visible_by(User.current)
# filters clauses
filters_clauses = []
filters_clauses << sql
end if filters and valid?
- clause << ' AND ' unless clause.empty?
- clause << filters_clauses.join(' AND ') unless filters_clauses.empty?
- clause
+ (project_clauses + filters_clauses).join(' AND ')
end
end
assert_template 'index.rhtml'
assert_not_nil assigns(:issues)
assert_nil assigns(:project)
+ assert_tag :tag => 'a', :content => /Can't print recipes/
+ assert_tag :tag => 'a', :content => /Subproject issue/
+ # private projects hidden
+ assert_no_tag :tag => 'a', :content => /Issue of a private subproject/
+ assert_no_tag :tag => 'a', :content => /Issue on project 2/
end
def test_index_with_project
+ Setting.display_subprojects_issues = 0
get :index, :project_id => 1
assert_response :success
assert_template 'index.rhtml'
assert_not_nil assigns(:issues)
+ assert_tag :tag => 'a', :content => /Can't print recipes/
+ assert_no_tag :tag => 'a', :content => /Subproject issue/
+ end
+
+ def test_index_with_project_and_subprojects
+ Setting.display_subprojects_issues = 1
+ get :index, :project_id => 1
+ assert_response :success
+ assert_template 'index.rhtml'
+ assert_not_nil assigns(:issues)
+ assert_tag :tag => 'a', :content => /Can't print recipes/
+ assert_tag :tag => 'a', :content => /Subproject issue/
+ assert_no_tag :tag => 'a', :content => /Issue of a private subproject/
+ end
+
+ def test_index_with_project_and_subprojects_should_show_private_subprojects
+ @request.session[:user_id] = 2
+ Setting.display_subprojects_issues = 1
+ get :index, :project_id => 1
+ assert_response :success
+ assert_template 'index.rhtml'
+ assert_not_nil assigns(:issues)
+ assert_tag :tag => 'a', :content => /Can't print recipes/
+ assert_tag :tag => 'a', :content => /Subproject issue/
+ assert_tag :tag => 'a', :content => /Issue of a private subproject/
end
def test_index_with_project_and_filter