@@ -86,7 +86,9 class TimeEntryQuery < Query | |||
|
86 | 86 | add_available_filter "hours", :type => :float |
|
87 | 87 | |
|
88 | 88 | add_custom_fields_filters(TimeEntryCustomField) |
|
89 |
add_associations_custom_fields_filters :project |
|
|
89 | add_associations_custom_fields_filters :project | |
|
90 | add_custom_fields_filters(issue_custom_fields, :issue) | |
|
91 | add_associations_custom_fields_filters :user | |
|
90 | 92 | end |
|
91 | 93 | |
|
92 | 94 | def available_columns |
@@ -94,7 +96,7 class TimeEntryQuery < Query | |||
|
94 | 96 | @available_columns = self.class.available_columns.dup |
|
95 | 97 | @available_columns += TimeEntryCustomField.visible. |
|
96 | 98 | map {|cf| QueryCustomFieldColumn.new(cf) } |
|
97 |
@available_columns += |
|
|
99 | @available_columns += issue_custom_fields.visible. | |
|
98 | 100 | map {|cf| QueryAssociationCustomFieldColumn.new(:issue, cf) } |
|
99 | 101 | @available_columns |
|
100 | 102 | end |
@@ -138,4 +140,12 class TimeEntryQuery < Query | |||
|
138 | 140 | end |
|
139 | 141 | self |
|
140 | 142 | end |
|
143 | ||
|
144 | def issue_custom_fields | |
|
145 | if project | |
|
146 | project.all_issue_custom_fields | |
|
147 | else | |
|
148 | IssueCustomField.where(:is_for_all => true) | |
|
149 | end | |
|
150 | end | |
|
141 | 151 | end |
@@ -54,4 +54,28 class TimeEntryQueryTest < ActiveSupport::TestCase | |||
|
54 | 54 | query.add_filter('activity_id', '!', [system.id.to_s]) |
|
55 | 55 | assert_equal 4.0, query.results_scope.sum(:hours) |
|
56 | 56 | end |
|
57 | ||
|
58 | def test_project_query_should_include_project_issue_custom_fields_only_as_filters | |
|
59 | global = IssueCustomField.generate!(:is_for_all => true, :is_filter => true) | |
|
60 | field_on_project = IssueCustomField.generate!(:is_for_all => false, :project_ids => [3], :is_filter => true) | |
|
61 | field_not_on_project = IssueCustomField.generate!(:is_for_all => false, :project_ids => [1,2], :is_filter => true) | |
|
62 | ||
|
63 | query = TimeEntryQuery.new(:project => Project.find(3)) | |
|
64 | ||
|
65 | assert_include "issue.cf_#{global.id}", query.available_filters.keys | |
|
66 | assert_include "issue.cf_#{field_on_project.id}", query.available_filters.keys | |
|
67 | assert_not_include "issue.cf_#{field_not_on_project.id}", query.available_filters.keys | |
|
68 | end | |
|
69 | ||
|
70 | def test_project_query_should_include_project_issue_custom_fields_only_as_columns | |
|
71 | global = IssueCustomField.generate!(:is_for_all => true, :is_filter => true) | |
|
72 | field_on_project = IssueCustomField.generate!(:is_for_all => false, :project_ids => [3], :is_filter => true) | |
|
73 | field_not_on_project = IssueCustomField.generate!(:is_for_all => false, :project_ids => [1,2], :is_filter => true) | |
|
74 | ||
|
75 | query = TimeEntryQuery.new(:project => Project.find(3)) | |
|
76 | ||
|
77 | assert_include "issue.cf_#{global.id}", query.available_columns.map(&:name).map(&:to_s) | |
|
78 | assert_include "issue.cf_#{field_on_project.id}", query.available_columns.map(&:name).map(&:to_s) | |
|
79 | assert_not_include "issue.cf_#{field_not_on_project.id}", query.available_columns.map(&:name).map(&:to_s) | |
|
80 | end | |
|
57 | 81 | end |
General Comments 0
You need to be logged in to leave comments.
Login now