Defect #37499 ยป fix-37499.patch
app/models/issue_query.rb | ||
---|---|---|
78 | 78 |
scope :for_all_projects, ->{ where(project_id: nil) } |
79 | 79 | |
80 | 80 |
def self.default(project: nil, user: User.current) |
81 |
query = nil |
|
82 | 81 |
# user default |
83 | 82 |
if user&.logged? && (query_id = user.pref.default_issue_query).present? |
84 | 83 |
query = find_by(id: query_id) |
84 |
return query if query&.visible? |
|
85 | 85 |
end |
86 | ||
86 | 87 |
# project default |
87 |
query ||= project&.default_issue_query |
|
88 |
query = project&.default_issue_query |
|
89 |
return query if query&.visibility == VISIBILITY_PUBLIC |
|
90 | ||
88 | 91 |
# global default |
89 |
if query.nil? && (query_id = Setting.default_issue_query).present?
|
|
92 |
if (query_id = Setting.default_issue_query).present? |
|
90 | 93 |
query = find_by(id: query_id) |
94 |
return query if query&.visibility == VISIBILITY_PUBLIC |
|
91 | 95 |
end |
92 |
query
|
|
96 |
nil
|
|
93 | 97 |
end |
94 | 98 | |
95 | 99 |
def initialize(attributes=nil, *args) |
app/models/project_query.rb | ||
---|---|---|
40 | 40 |
] |
41 | 41 | |
42 | 42 |
def self.default(project: nil, user: User.current) |
43 |
query = nil |
|
44 | 43 |
if user&.logged? && (query_id = user.pref.default_project_query).present? |
45 | 44 |
query = find_by(id: query_id) |
45 |
return query if query&.visible? |
|
46 | 46 |
end |
47 | 47 |
if query.nil? && (query_id = Setting.default_project_query).present? |
48 | 48 |
query = find_by(id: query_id) |
49 |
return query if query&.visibility == VISIBILITY_PUBLIC |
|
49 | 50 |
end |
50 |
query
|
|
51 |
nil
|
|
51 | 52 |
end |
52 | 53 | |
53 | 54 |
def initialize(attributes=nil, *args) |
test/functional/issues_controller_test.rb | ||
---|---|---|
8482 | 8482 |
# query filters for tracker_id == 3 |
8483 | 8483 |
assert results.detect{ |i| i['tracker_id'] != 3 } |
8484 | 8484 |
end |
8485 | ||
8486 |
def test_index_should_only_use_user_default_query_for_users_who_have_default_query_available |
|
8487 |
query = IssueQuery.find(4) |
|
8488 | ||
8489 |
query.update(visibility: Query::VISIBILITY_PRIVATE, user_id: 2) |
|
8490 |
query.save! |
|
8491 | ||
8492 |
# If visible default query |
|
8493 |
@request.session[:user_id] = 2 |
|
8494 |
@request.session[:issue_query] = nil |
|
8495 |
User.find(2).pref.update(default_issue_query: query.id) |
|
8496 |
get :index |
|
8497 |
assert_select 'h2', text: query.name |
|
8498 | ||
8499 |
# If invisible default query |
|
8500 |
@request.session[:user_id] = 3 |
|
8501 |
@request.session[:issue_query] = nil |
|
8502 |
User.find(3).pref.update(default_issue_query: query.id) |
|
8503 |
get :index |
|
8504 |
assert_select 'h2', text: 'Issues' |
|
8505 |
end |
|
8506 | ||
8507 |
def test_index_should_ignore_project_default_query_if_project_default_query_is_not_public |
|
8508 |
query = IssueQuery.find(1) |
|
8509 |
query.project.update(default_issue_query: query) |
|
8510 | ||
8511 |
query.update(visibility: Query::VISIBILITY_PRIVATE, user_id: 2) |
|
8512 |
query.save! |
|
8513 | ||
8514 |
[User.find(1), User.find(2)].each do |user| |
|
8515 |
@request.session[:user_id] = user.id |
|
8516 |
@request.session[:issue_query] = nil |
|
8517 |
get :index, params: { project_id: query.project.id } |
|
8518 |
assert_select 'h2', text: 'Issues' |
|
8519 |
end |
|
8520 |
end |
|
8521 | ||
8522 |
def test_index_should_ignore_global_default_query_if_global_default_query_is_not_public |
|
8523 |
query = IssueQuery.find(1) |
|
8524 |
with_settings default_issue_query: query.id do |
|
8525 |
query.update(visibility: Query::VISIBILITY_PRIVATE, user_id: 2) |
|
8526 |
query.save! |
|
8527 | ||
8528 |
[User.find(1), User.find(2)].each do |user| |
|
8529 |
@request.session[:user_id] = user.id |
|
8530 |
@request.session[:issue_query] = nil |
|
8531 |
get :index |
|
8532 |
assert_select 'h2', text: 'Issues' |
|
8533 |
end |
|
8534 |
end |
|
8535 |
end |
|
8485 | 8536 |
end |
test/functional/projects_controller_test.rb | ||
---|---|---|
274 | 274 |
end |
275 | 275 |
end |
276 | 276 | |
277 |
def test_index_should_only_use_user_default_query_for_users_who_have_default_query_available |
|
278 |
query = ProjectQuery.find(11) |
|
279 | ||
280 |
query.update(visibility: Query::VISIBILITY_PRIVATE, user_id: 2) |
|
281 |
query.save! |
|
282 | ||
283 |
# If visible default query |
|
284 |
@request.session[:user_id] = 2 |
|
285 |
User.find(2).pref.update(default_project_query: query.id) |
|
286 |
get :index |
|
287 |
assert_select 'h2', text: query.name |
|
288 | ||
289 |
# If invisible default query |
|
290 |
@request.session[:user_id] = 3 |
|
291 |
User.find(3).pref.update(default_project_query: query.id) |
|
292 |
get :index |
|
293 |
assert_select 'h2', text: I18n.t(:label_project_plural) |
|
294 |
end |
|
295 | ||
296 |
def test_index_should_ignore_global_default_query_if_global_default_query_is_not_public |
|
297 |
query = ProjectQuery.find(11) |
|
298 |
with_settings default_project_query: query.id do |
|
299 |
query.update(visibility: Query::VISIBILITY_PRIVATE, user_id: 2) |
|
300 |
query.save! |
|
301 | ||
302 |
[User.find(1), User.find(2)].each do |user| |
|
303 |
@request.session[:user_id] = user.id |
|
304 |
get :index |
|
305 |
assert_select 'h2', text: I18n.t(:label_project_plural) |
|
306 |
end |
|
307 |
end |
|
308 |
end |
|
309 | ||
277 | 310 |
def test_autocomplete_js |
278 | 311 |
get( |
279 | 312 |
:autocomplete, |
test/unit/project_query_test.rb | ||
---|---|---|
87 | 87 |
user = User.find(1) |
88 | 88 |
query = ProjectQuery.find(11) |
89 | 89 |
user_query = ProjectQuery.find(12) |
90 |
user_query.update(visibility: Query::VISIBILITY_PUBLIC) |
|
90 | 91 | |
91 | 92 |
[nil, user, User.anonymous].each do |u| |
92 | 93 |
assert_nil IssueQuery.default(user: u) |
test/unit/query_test.rb | ||
---|---|---|
2814 | 2814 |
project_query = IssueQuery.find(1) |
2815 | 2815 |
query = IssueQuery.find(4) |
2816 | 2816 |
user_query = IssueQuery.find(3) |
2817 |
user_query.update(visibility: Query::VISIBILITY_PUBLIC) |
|
2817 | 2818 |
user_query.update_column :user_id, user.id |
2818 | 2819 | |
2819 | 2820 |
[nil, user, User.anonymous].each do |u| |