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|  |