From 9bb1fc09b5c3a858103f28ffd899e02008de6f6f Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Thu, 11 Oct 2018 17:49:56 +0000 Subject: [PATCH 3/4] Filter our issues from closed projects in the following widgets: - Issues assigned to me - Reported issues - Watched issues --- app/helpers/my_helper.rb | 3 + test/functional/my_controller_test.rb | 102 +++++++++++++++++++++++++++++++--- 2 files changed, 98 insertions(+), 7 deletions(-) diff --git a/app/helpers/my_helper.rb b/app/helpers/my_helper.rb index df0c4cf..91d2173 100644 --- a/app/helpers/my_helper.rb +++ b/app/helpers/my_helper.rb @@ -96,6 +96,7 @@ module MyHelper def render_issuesassignedtome_block(block, settings) query = IssueQuery.new(:name => l(:label_assigned_to_me_issues), :user => User.current) query.add_filter 'assigned_to_id', '=', ['me'] + query.add_filter 'project.status', '=', ['1'] query.column_names = settings[:columns].presence || ['project', 'tracker', 'status', 'subject'] query.sort_criteria = settings[:sort].presence || [['priority', 'desc'], ['updated_on', 'desc']] issues = query.issues(:limit => 10) @@ -106,6 +107,7 @@ module MyHelper def render_issuesreportedbyme_block(block, settings) query = IssueQuery.new(:name => l(:label_reported_issues), :user => User.current) query.add_filter 'author_id', '=', ['me'] + query.add_filter 'project.status', '=', ['1'] query.column_names = settings[:columns].presence || ['project', 'tracker', 'status', 'subject'] query.sort_criteria = settings[:sort].presence || [['updated_on', 'desc']] issues = query.issues(:limit => 10) @@ -116,6 +118,7 @@ module MyHelper def render_issueswatched_block(block, settings) query = IssueQuery.new(:name => l(:label_watched_issues), :user => User.current) query.add_filter 'watcher_id', '=', ['me'] + query.add_filter 'project.status', '=', ['1'] query.column_names = settings[:columns].presence || ['project', 'tracker', 'status', 'subject'] query.sort_criteria = settings[:sort].presence || [['updated_on', 'desc']] issues = query.issues(:limit => 10) diff --git a/test/functional/my_controller_test.rb b/test/functional/my_controller_test.rb index e789119..d8db74f 100644 --- a/test/functional/my_controller_test.rb +++ b/test/functional/my_controller_test.rb @@ -95,7 +95,7 @@ class MyControllerTest < Redmine::ControllerTest assert_select 'table.issues.sort-by-due-date' end end - + def test_page_with_issuequery_block_and_no_settings user = User.find(2) user.pref.my_page_layout = {'top' => ['issuequery']} @@ -227,6 +227,94 @@ class MyControllerTest < Redmine::ControllerTest assert_select 'div.mypage-box', blocks.size end + def test_page_with_assigned_issues_block_should_not_show_issues_from_closed_projects + preferences = User.find(2).pref + preferences.my_page_layout = {'top' => ['issuesassignedtome']} + preferences.my_page_settings = {'issuesassignedtome' => {}} + preferences.save! + + issue = Issue.find(1) + issue.assigned_to = User.find(2) + issue.save! + + project = Project.find(2) + project.close + project.save + + get :page + + assert_response :success + assert_select '#block-issuesassignedtome table.issues tbody' do + report_url = css_select('h3 a').map {|e| e.attr('href')}.first + assert_match 'f%5B%5D=project.status', report_url + assert_match 'v%5Bproject.status%5D%5B%5D=1', report_url + + assert_select 'tr', 1 + assert_select 'tr[id=?]', 'issue-1', 1, :title => 'Cannot print recipes' + assert_select 'tr[id=?]', 'issue-4', 0 + end + end + + def test_page_with_reported_issues_block_should_not_show_issues_from_closed_projects + preferences = User.find(2).pref + preferences.my_page_layout = {'top' => ['issuesreportedbyme']} + preferences.my_page_settings = {'issuesreportedbyme' => {}} + preferences.save! + + issue = Issue.find(1) + issue.assigned_to = User.find(2) + issue.save! + + project = Project.find(2) + project.close + project.save + + get :page + + assert_response :success + assert_select '#block-issuesreportedbyme' do + report_url = css_select('h3 a').map {|e| e.attr('href')}.first + assert_match 'f%5B%5D=project.status', report_url + assert_match 'v%5Bproject.status%5D%5B%5D=1', report_url + + assert_select 'table.issues tbody tr', 10 + assert_select 'table.issues tbody tr[id=?]', 'issue-1', 1, :title => 'Cannot print recipes' + assert_select 'table.issues tbody tr[id=?]', 'issue-4', 0 + end + end + + def test_page_with_watched_issues_block_should_not_show_issues_from_closed_projects + preferences = User.find(2).pref + preferences.my_page_layout = {'top' => ['issueswatched']} + preferences.my_page_settings = {'issueswatched' => {}} + preferences.save! + + issue = Issue.find(1) + issue.watcher_user_ids = ['1', '2'] + issue.save! + + issue2 = Issue.find(4) + issue2.watcher_user_ids = ['2'] + issue2.save! + + project = Project.find(2) + project.close + project.save + + get :page + + assert_response :success + assert_select '#block-issueswatched table.issues tbody' do + report_url = css_select('h3 a').map {|e| e.attr('href')}.first + assert_match 'f%5B%5D=project.status', report_url + assert_match 'v%5Bproject.status%5D%5B%5D=1', report_url + + assert_select 'tr', 1 + assert_select 'tr[id=?]', 'issue-1', 1, :title => 'Cannot print recipes' + assert_select 'tr[id=?]', 'issue-4', 0 + end + end + def test_my_account_should_show_editable_custom_fields get :account assert_response :success @@ -272,8 +360,8 @@ class MyControllerTest < Redmine::ControllerTest :group_ids => ['10'], :custom_field_values => { "4" => "0100562500" - } - + } + } } @@ -292,7 +380,7 @@ class MyControllerTest < Redmine::ControllerTest post :account, :params => { :user => { :mail => 'foobar@example.com' - + } } @@ -419,7 +507,7 @@ class MyControllerTest < Redmine::ControllerTest post :update_page, :params => { :settings => { 'issuesassignedtome' => { - 'columns' => ['subject', 'due_date']} + 'columns' => ['subject', 'due_date']} } }, :xhr => true @@ -476,7 +564,7 @@ class MyControllerTest < Redmine::ControllerTest pref = User.find(2).pref pref.my_page_layout = {'left' => ['news', 'calendar','documents']} pref.save! - + post :order_blocks, :params => { :group => 'left', :blocks => ['documents', 'calendar', 'news'] @@ -490,7 +578,7 @@ class MyControllerTest < Redmine::ControllerTest pref = User.find(2).pref pref.my_page_layout = {'left' => ['news','documents'], 'right' => ['calendar']} pref.save! - + post :order_blocks, :params => { :group => 'left', :blocks => ['news', 'calendar', 'documents'] -- 2.1.4