@@ -106,7 +106,9 class TimeEntryQuery < Query | |||
|
106 | 106 | add_available_filter "hours", :type => :float |
|
107 | 107 | |
|
108 | 108 | add_custom_fields_filters(TimeEntryCustomField) |
|
109 |
add_associations_custom_fields_filters :project |
|
|
109 | add_associations_custom_fields_filters :project | |
|
110 | add_custom_fields_filters(issue_custom_fields, :issue) | |
|
111 | add_associations_custom_fields_filters :user | |
|
110 | 112 | end |
|
111 | 113 | |
|
112 | 114 | def available_columns |
@@ -114,7 +116,7 class TimeEntryQuery < Query | |||
|
114 | 116 | @available_columns = self.class.available_columns.dup |
|
115 | 117 | @available_columns += TimeEntryCustomField.visible. |
|
116 | 118 | map {|cf| QueryCustomFieldColumn.new(cf) } |
|
117 |
@available_columns += |
|
|
119 | @available_columns += issue_custom_fields.visible. | |
|
118 | 120 | map {|cf| QueryAssociationCustomFieldColumn.new(:issue, cf, :totalable => false) } |
|
119 | 121 | @available_columns |
|
120 | 122 | end |
@@ -233,4 +235,12 class TimeEntryQuery < Query | |||
|
233 | 235 | joins.compact! |
|
234 | 236 | joins.any? ? joins.join(' ') : nil |
|
235 | 237 | end |
|
238 | ||
|
239 | def issue_custom_fields | |
|
240 | if project | |
|
241 | project.all_issue_custom_fields | |
|
242 | else | |
|
243 | IssueCustomField.where(:is_for_all => true) | |
|
244 | end | |
|
245 | end | |
|
236 | 246 | 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