# Give it a name, required to be valid
@query = Query.new(:name => "_")
@query.project = @project
- if params[:fields] and params[:fields].is_a? Array
- params[:fields].each do |field|
- @query.add_filter(field, params[:operators][field], params[:values][field])
- end
+ if params[:fields]
+ @query.filters = {}
+ @query.add_filters(params[:fields], params[:operators], params[:values])
else
@query.available_filters.keys.each do |field|
@query.add_short_filter(field, params[field]) if params[field]
# Add multiple filters using +add_filter+
def add_filters(fields, operators, values)
- fields.each do |field|
- add_filter(field, operators[field], values[field])
+ if fields.is_a?(Array) && operators.is_a?(Hash) && values.is_a?(Hash)
+ fields.each do |field|
+ add_filter(field, operators[field], values[field])
+ end
end
end
assert_tag :tag => 'a', :content => /Issue of a private subproject/
end
- def test_index_with_project_and_filter
+ def test_index_with_project_and_default_filter
get :index, :project_id => 1, :set_filter => 1
assert_response :success
assert_template 'index.rhtml'
assert_not_nil assigns(:issues)
+
+ query = assigns(:query)
+ assert_not_nil query
+ # default filter
+ assert_equal({'status_id' => {:operator => 'o', :values => ['']}}, query.filters)
+ end
+
+ def test_index_with_project_and_filter
+ get :index, :project_id => 1, :set_filter => 1,
+ :fields => ['tracker_id'],
+ :operators => {'tracker_id' => '='},
+ :values => {'tracker_id' => ['1']}
+ assert_response :success
+ assert_template 'index.rhtml'
+ assert_not_nil assigns(:issues)
+
+ query = assigns(:query)
+ assert_not_nil query
+ assert_equal({'tracker_id' => {:operator => '=', :values => ['1']}}, query.filters)
+ end
+
+ def test_index_with_project_and_empty_filters
+ get :index, :project_id => 1, :set_filter => 1, :fields => ['']
+ assert_response :success
+ assert_template 'index.rhtml'
+ assert_not_nil assigns(:issues)
+
+ query = assigns(:query)
+ assert_not_nil query
+ # no filter
+ assert_equal({}, query.filters)
end
def test_index_with_query