add_available_filter "hours", :type => :float
add_custom_fields_filters(TimeEntryCustomField)
- add_associations_custom_fields_filters :project, :issue, :user
+ add_associations_custom_fields_filters :project
+ add_custom_fields_filters(issue_custom_fields, :issue)
+ add_associations_custom_fields_filters :user
end
def available_columns
@available_columns = self.class.available_columns.dup
@available_columns += TimeEntryCustomField.visible.
map {|cf| QueryCustomFieldColumn.new(cf) }
- @available_columns += IssueCustomField.visible.
+ @available_columns += issue_custom_fields.visible.
map {|cf| QueryAssociationCustomFieldColumn.new(:issue, cf) }
@available_columns
end
end
self
end
+
+ def issue_custom_fields
+ if project
+ project.all_issue_custom_fields
+ else
+ IssueCustomField.where(:is_for_all => true)
+ end
+ end
end
query.add_filter('activity_id', '!', [system.id.to_s])
assert_equal 4.0, query.results_scope.sum(:hours)
end
+
+ def test_project_query_should_include_project_issue_custom_fields_only_as_filters
+ global = IssueCustomField.generate!(:is_for_all => true, :is_filter => true)
+ field_on_project = IssueCustomField.generate!(:is_for_all => false, :project_ids => [3], :is_filter => true)
+ field_not_on_project = IssueCustomField.generate!(:is_for_all => false, :project_ids => [1,2], :is_filter => true)
+
+ query = TimeEntryQuery.new(:project => Project.find(3))
+
+ assert_include "issue.cf_#{global.id}", query.available_filters.keys
+ assert_include "issue.cf_#{field_on_project.id}", query.available_filters.keys
+ assert_not_include "issue.cf_#{field_not_on_project.id}", query.available_filters.keys
+ end
+
+ def test_project_query_should_include_project_issue_custom_fields_only_as_columns
+ global = IssueCustomField.generate!(:is_for_all => true, :is_filter => true)
+ field_on_project = IssueCustomField.generate!(:is_for_all => false, :project_ids => [3], :is_filter => true)
+ field_not_on_project = IssueCustomField.generate!(:is_for_all => false, :project_ids => [1,2], :is_filter => true)
+
+ query = TimeEntryQuery.new(:project => Project.find(3))
+
+ assert_include "issue.cf_#{global.id}", query.available_columns.map(&:name).map(&:to_s)
+ assert_include "issue.cf_#{field_on_project.id}", query.available_columns.map(&:name).map(&:to_s)
+ assert_not_include "issue.cf_#{field_not_on_project.id}", query.available_columns.map(&:name).map(&:to_s)
+ end
end