From 2daffef6833b1c7f5193a0cde10140105a5ca0e1 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Mon, 17 Jun 2013 10:06:38 +0200 Subject: [PATCH] fix failing tests --- Gemfile | 2 +- .../todos/todo_create_params_helper.rb | 11 ++++-- .../recurring_todos_controller_test.rb | 2 +- test/models/todo_create_params_helper_test.rb | 34 +++++++++---------- 4 files changed, 28 insertions(+), 21 deletions(-) diff --git a/Gemfile b/Gemfile index dbeef74c..9a530795 100644 --- a/Gemfile +++ b/Gemfile @@ -62,7 +62,7 @@ group :test do # https://code.google.com/p/selenium/issues/detail?id=3075 gem "selenium-webdriver" - # uncomment to use the webkit option. This depends on Qt to be installed + # uncomment to use the webkit option. This depends on Qt being installed # gem "capybara-webkit" # uncomment to be able to make screenshots from scenarios diff --git a/app/controllers/todos/todo_create_params_helper.rb b/app/controllers/todos/todo_create_params_helper.rb index 6cd910bf..22cf6274 100644 --- a/app/controllers/todos/todo_create_params_helper.rb +++ b/app/controllers/todos/todo_create_params_helper.rb @@ -23,7 +23,7 @@ module Todos def filter_attributes(params) if params[:request] @attributes = todo_params(params[:request]) - else + elsif params[:todo] @attributes = todo_params(params) end @attributes = {} if @attributes.nil? # make sure there is at least an empty hash @@ -123,7 +123,14 @@ module Todos def todo_params(params) # keep :predecessor_dependencies from being filterd (for XML API). # The permit cannot handle multiple precessors - deps = params[:todo][:predecessor_dependencies][:predecessor] if params[:todo][:predecessor_dependencies] + if params[:todo][:predecessor_dependencies] + deps = params[:todo][:predecessor_dependencies][:predecessor] + end + + # accept empty :todo hash + if params[:todo].empty? + params[:todo] = {:ignore => true} + end filtered = params.require(:todo).permit( :context_id, :project_id, :description, :notes, diff --git a/test/controllers/recurring_todos_controller_test.rb b/test/controllers/recurring_todos_controller_test.rb index 09166f18..54baacf1 100644 --- a/test/controllers/recurring_todos_controller_test.rb +++ b/test/controllers/recurring_todos_controller_test.rb @@ -272,7 +272,7 @@ class RecurringTodosControllerTest < ActionController::TestCase "yearly_month_of_year"=>"6", "yearly_selector"=>"yearly_every_x_day" }, - "tag_list"=>"one, two, three, four" + "tag_list"=>"one, two, three, four", format: :js assert_equal "new recurring pattern", assigns['recurring_todo'].description assert_equal "2013-01-02 00:00:00 +0000", assigns['recurring_todo'].start_from.to_s diff --git a/test/models/todo_create_params_helper_test.rb b/test/models/todo_create_params_helper_test.rb index b5ce5ccd..eb9b37d9 100644 --- a/test/models/todo_create_params_helper_test.rb +++ b/test/models/todo_create_params_helper_test.rb @@ -4,39 +4,39 @@ require 'todos_controller' class TodoCreateParamsHelperTest < ActiveSupport::TestCase def test_works_with_request_as_root_hash_entry - params = {'request' => { 'todo' => { 'description' => 'foo'}}} + params = ActionController::Parameters.new({'request' => { 'todo' => { 'description' => 'foo'}}}) params_helper = Todos::TodoCreateParamsHelper.new(params, users(:admin_user)) assert_equal({'description' => 'foo'}, params_helper.attributes) end def test_works_with_todo_as_root_hash_entry - params = { 'todo' => { 'description' => 'foo'}} + params = ActionController::Parameters.new({ 'todo' => { 'description' => 'foo'}}) params_helper = Todos::TodoCreateParamsHelper.new(params, users(:admin_user)) assert_equal({'description' => 'foo'}, params_helper.attributes) end def test_show_from_accessor expected_date = Time.now - params = { 'todo' => { 'show_from' => expected_date}} + params = ActionController::Parameters.new({ 'todo' => { 'show_from' => expected_date}}) params_helper = Todos::TodoCreateParamsHelper.new(params, users(:admin_user)) assert_equal(expected_date, params_helper.show_from) end def test_due_accessor expected_date = Time.now - params = { 'todo' => { 'due' => expected_date}} + params = ActionController::Parameters.new({ 'todo' => { 'due' => expected_date}}) params_helper = Todos::TodoCreateParamsHelper.new(params, users(:admin_user)) assert_equal(expected_date, params_helper.due) end def test_tag_list_accessor - params = { 'todo' => { }, 'tag_list' => 'foo, bar'} + params = ActionController::Parameters.new({ 'todo' => { }, 'tag_list' => 'foo, bar'}) params_helper = Todos::TodoCreateParamsHelper.new(params, users(:admin_user)) assert_equal('foo, bar', params_helper.tag_list) end def test_parse_dates_parses_show_from_date_based_on_prefs - params = { 'todo' => { 'show_from' => '20/05/07', 'due' => '23/5/07'}} + params = ActionController::Parameters.new({ 'todo' => { 'show_from' => '20/05/07', 'due' => '23/5/07'}}) user = users(:admin_user) prefs = user.prefs @@ -48,7 +48,7 @@ class TodoCreateParamsHelperTest < ActiveSupport::TestCase end def test_parse_dates_parses_due_date_based_on_prefs - params = { 'todo' => { 'show_from' => '20/5/07', 'due' => '23/5/07'}} + params = ActionController::Parameters.new({ 'todo' => { 'show_from' => '20/5/07', 'due' => '23/5/07'}}) user = users(:admin_user) prefs = user.prefs @@ -60,62 +60,62 @@ class TodoCreateParamsHelperTest < ActiveSupport::TestCase end def test_parse_dates_sets_due_to_empty_string_if_nil - params = { 'todo' => { 'show_from' => '20/5/07', 'due' => nil}} + params = ActionController::Parameters.new({ 'todo' => { 'show_from' => '20/5/07', 'due' => nil}}) params_helper = Todos::TodoCreateParamsHelper.new(params, users(:admin_user)) params_helper.parse_dates() assert_equal '', params_helper.due end def test_project_name_is_stripped_of_leading_and_trailing_whitespace - params = { 'project_name' => ' Visit New Orleans ' } + params = ActionController::Parameters.new({ 'project_name' => ' Visit New Orleans ' }) params_helper = Todos::TodoCreateParamsHelper.new(params, users(:admin_user)) assert_equal 'Visit New Orleans', params_helper.project_name end def test_project_name_is_nil_when_unspecified - params = { } + params = ActionController::Parameters.new({ }) params_helper = Todos::TodoCreateParamsHelper.new(params, users(:admin_user)) assert_nil params_helper.project_name end def test_context_name_is_stripped_of_leading_and_trailing_whitespace - params = { 'context_name' => ' mobile phone ' } + params = ActionController::Parameters.new({ 'context_name' => ' mobile phone ' }) params_helper = Todos::TodoCreateParamsHelper.new(params, users(:admin_user)) assert_equal 'mobile phone', params_helper.context_name end def test_context_name_is_nil_when_unspecified - params = { } + params = ActionController::Parameters.new({ }) params_helper = Todos::TodoCreateParamsHelper.new(params, users(:admin_user)) assert_nil params_helper.context_name end def test_project_specified_by_name_is_false_when_project_id_is_specified - params = { 'todo' => { 'project_id' => 2 } } + params = ActionController::Parameters.new({ 'todo' => { 'project_id' => 2 } }) params_helper = Todos::TodoCreateParamsHelper.new(params, users(:admin_user)) assert_equal false, params_helper.project_specified_by_name? end def test_project_specified_by_name_is_false_when_project_name_is_blank - params = { 'project_name' => nil, 'todo' => {} } + params = ActionController::Parameters.new({ 'project_name' => nil, 'todo' => {} }) params_helper = Todos::TodoCreateParamsHelper.new(params, users(:admin_user)) assert_equal false, params_helper.project_specified_by_name? end def test_project_specified_by_name_is_false_when_project_name_is_none - params = { 'project_name' => 'None', 'todo' => {} } + params = ActionController::Parameters.new({ 'project_name' => 'None', 'todo' => {} }) params_helper = Todos::TodoCreateParamsHelper.new(params, users(:admin_user)) assert_equal false, params_helper.project_specified_by_name? end def test_context_specified_by_name_is_false_when_context_id_is_specified - params = { 'todo' => { 'context_id' => 3 } } + params = ActionController::Parameters.new({ 'todo' => { 'context_id' => 3 } }) params_helper = Todos::TodoCreateParamsHelper.new(params, users(:admin_user)) assert_equal false, params_helper.context_specified_by_name? end def test_context_specified_by_name_is_false_when_context_name_is_blank - params = { 'context_name' => nil, 'todo' => {} } + params = ActionController::Parameters.new({ 'context_name' => nil, 'todo' => {} }) params_helper = Todos::TodoCreateParamsHelper.new(params, users(:admin_user)) assert_equal false, params_helper.context_specified_by_name? end