Feature #28391 » 0001-adds-issue-category-filter-to-spent-time-queries.patch
| app/models/time_entry_query.rb | ||
|---|---|---|
| 65 | 65 |
:type => :list, |
| 66 | 66 |
:name => l("label_attribute_of_issue", :name => l(:field_fixed_version)),
|
| 67 | 67 |
:values => lambda { fixed_version_values })
|
| 68 |
add_available_filter "issue.category_id", |
|
| 69 |
:type => :list_optional, |
|
| 70 |
:name => l("label_attribute_of_issue", :name => l(:field_category)),
|
|
| 71 |
:values => lambda { project.issue_categories.collect{|s| [s.name, s.id.to_s] } } if project
|
|
| 68 | 72 | |
| 69 | 73 |
add_available_filter("user_id",
|
| 70 | 74 |
:type => :list_optional, :values => lambda { author_values }
|
| ... | ... | |
| 197 | 201 |
sql_for_field("status_id", operator, value, Issue.table_name, "status_id")
|
| 198 | 202 |
end |
| 199 | 203 | |
| 204 |
def sql_for_issue_category_id_field(field, operator, value) |
|
| 205 |
sql_for_field("category_id", operator, value, Issue.table_name, "category_id")
|
|
| 206 |
end |
|
| 207 | ||
| 200 | 208 |
# Accepts :from/:to params as shortcut filters |
| 201 | 209 |
def build_from_params(params, defaults={})
|
| 202 | 210 |
super |
| test/functional/timelog_controller_test.rb | ||
|---|---|---|
| 1025 | 1025 |
assert_equal Tracker.where(:id => [1, 2, 3]).sorted.pluck(:name), values |
| 1026 | 1026 |
end |
| 1027 | 1027 | |
| 1028 |
def test_index_with_issue_category_filter |
|
| 1029 |
get :index, :params => {
|
|
| 1030 |
:project_id => 'ecookbook', |
|
| 1031 |
:f => ['issue.category_id'], |
|
| 1032 |
:op => {'issue.category_id' => '='},
|
|
| 1033 |
:v => {'issue.category_id' => ['1']}
|
|
| 1034 |
} |
|
| 1035 |
assert_response :success |
|
| 1036 |
assert_equal ['1', '2'], css_select('input[name="ids[]"]').map {|e| e.attr('value')}
|
|
| 1037 |
end |
|
| 1038 | ||
| 1028 | 1039 |
def test_index_with_filter_on_issue_custom_field |
| 1029 | 1040 |
issue = Issue.generate!(:project_id => 1, :tracker_id => 1, :custom_field_values => {2 => 'filter_on_issue_custom_field'})
|
| 1030 | 1041 |
entry = TimeEntry.generate!(:issue => issue, :hours => 2.5) |
| test/unit/time_entry_query_test.rb | ||
|---|---|---|
| 102 | 102 |
assert_include "issue.cf_#{field_on_project.id}", query.available_columns.map(&:name).map(&:to_s)
|
| 103 | 103 |
assert_not_include "issue.cf_#{field_not_on_project.id}", query.available_columns.map(&:name).map(&:to_s)
|
| 104 | 104 |
end |
| 105 | ||
| 106 |
def test_issue_category_filter_should_not_be_available_in_global_queries |
|
| 107 |
query = TimeEntryQuery.new(:project => nil, :name => '_') |
|
| 108 |
assert !query.available_filters.has_key?('issue.category_id')
|
|
| 109 |
end |
|
| 105 | 110 |
end |