Defect #34297 » 34297-v2.patch
| app/models/query.rb | ||
|---|---|---|
| 898 | 898 | |
| 899 | 899 |
def project_statement |
| 900 | 900 |
project_clauses = [] |
| 901 |
active_subprojects_ids = []
|
|
| 901 |
subprojects_ids = [] |
|
| 902 | 902 | |
| 903 |
active_subprojects_ids = project.descendants.active.map(&:id) if project
|
|
| 904 |
if active_subprojects_ids.any?
|
|
| 903 |
subprojects_ids = project.descendants.where.not(status: Project::STATUS_ARCHIVED).ids if project
|
|
| 904 |
if subprojects_ids.any? |
|
| 905 | 905 |
if has_filter?("subproject_id")
|
| 906 | 906 |
case operator_for("subproject_id")
|
| 907 | 907 |
when '=' |
| ... | ... | |
| 910 | 910 |
project_clauses << "#{Project.table_name}.id IN (%s)" % ids.join(',')
|
| 911 | 911 |
when '!' |
| 912 | 912 |
# exclude the selected subprojects |
| 913 |
ids = [project.id] + active_subprojects_ids - values_for("subproject_id").map(&:to_i)
|
|
| 913 |
ids = [project.id] + subprojects_ids - values_for("subproject_id").map(&:to_i)
|
|
| 914 | 914 |
project_clauses << "#{Project.table_name}.id IN (%s)" % ids.join(',')
|
| 915 | 915 |
when '!*' |
| 916 | 916 |
# main project only |
| test/functional/issues_controller_test.rb | ||
|---|---|---|
| 119 | 119 |
end |
| 120 | 120 |
end |
| 121 | 121 | |
| 122 |
def test_index_should_list_issues_of_closed_subprojects |
|
| 123 |
Project.update_all(:is_public => true) |
|
| 124 |
project = Project.find(1) |
|
| 125 |
project.descendants.each(&:close) |
|
| 126 | ||
| 127 |
with_settings :display_subprojects_issues => '1' do |
|
| 128 |
get(:index, :params => {:project_id => project.id})
|
|
| 129 |
assert_response :success |
|
| 130 | ||
| 131 |
assert_select 'td.id' do |
|
| 132 |
assert_select 'a[href="/issues/5"]', 1 |
|
| 133 |
assert_select 'a[href="/issues/6"]', 1 |
|
| 134 |
assert_select 'a[href="/issues/9"]', 1 |
|
| 135 |
assert_select 'a[href="/issues/10"]', 1 |
|
| 136 |
assert_select 'a[href="/issues/13"]', 1 |
|
| 137 |
assert_select 'a[href="/issues/14"]', 0 # private issue |
|
| 138 |
end |
|
| 139 |
end |
|
| 140 |
end |
|
| 141 | ||
| 122 | 142 |
def test_index_with_project_and_subprojects_should_show_private_subprojects_with_permission |
| 123 | 143 |
@request.session[:user_id] = 2 |
| 124 | 144 |
with_settings :display_subprojects_issues => '1' do |
| test/unit/query_test.rb | ||
|---|---|---|
| 2503 | 2503 |
ActiveRecord::Base.default_timezone = :local # restore Redmine default |
| 2504 | 2504 |
end |
| 2505 | 2505 | |
| 2506 |
def test_project_statement_with_closed_subprojects |
|
| 2507 |
project = Project.find(1) |
|
| 2508 |
project.descendants.each(&:close) |
|
| 2509 | ||
| 2510 |
with_settings :display_subprojects_issues => '1' do |
|
| 2511 |
query = IssueQuery.new(:name => '_', :project => project) |
|
| 2512 |
statement = query.project_statement |
|
| 2513 |
assert_equal "projects.lft >= #{project.lft} AND projects.rgt <= #{project.rgt}", statement
|
|
| 2514 |
end |
|
| 2515 |
end |
|
| 2516 | ||
| 2506 | 2517 |
def test_filter_on_subprojects |
| 2507 | 2518 |
query = IssueQuery.new(:name => '_', :project => Project.find(1)) |
| 2508 | 2519 |
filter_name = "subproject_id" |
- « Previous
- 1
- 2
- Next »