Return a valid RecurringTodo after creation error

Fixes #1463
This commit is contained in:
Dan Rice 2014-06-19 01:17:15 -04:00
parent 622291d98d
commit 9b92306252
5 changed files with 55 additions and 3 deletions

View file

@ -70,6 +70,7 @@ class RecurringTodosController < ApplicationController
@down_count = current_user.recurring_todos.active.count @down_count = current_user.recurring_todos.active.count
@new_recurring_todo = RecurringTodo.new @new_recurring_todo = RecurringTodo.new
else else
@recurring_todo = builder.recurring_todo
@status_message = t('todos.error_saving_recurring') @status_message = t('todos.error_saving_recurring')
end end

View file

@ -1,6 +1,7 @@
module RecurringTodos module RecurringTodos
class MonthlyRecurringTodosBuilder < AbstractRecurringTodosBuilder class MonthlyRecurringTodosBuilder < AbstractRecurringTodosBuilder
attr_reader :recurring_todo
def initialize(user, attributes) def initialize(user, attributes)
super(user, attributes, MonthlyRepeatPattern) super(user, attributes, MonthlyRepeatPattern)
@ -42,4 +43,4 @@ module RecurringTodos
end end
end end

View file

@ -1,6 +1,7 @@
module RecurringTodos module RecurringTodos
class WeeklyRecurringTodosBuilder < AbstractRecurringTodosBuilder class WeeklyRecurringTodosBuilder < AbstractRecurringTodosBuilder
attr_reader :recurring_todo
def initialize(user, attributes) def initialize(user, attributes)
super(user, attributes, WeeklyRepeatPattern) super(user, attributes, WeeklyRepeatPattern)
@ -39,4 +40,4 @@ module RecurringTodos
end end
end end

View file

@ -1,6 +1,7 @@
module RecurringTodos module RecurringTodos
class YearlyRecurringTodosBuilder < AbstractRecurringTodosBuilder class YearlyRecurringTodosBuilder < AbstractRecurringTodosBuilder
attr_reader :recurring_todo
def initialize(user, attributes) def initialize(user, attributes)
super(user, attributes, YearlyRepeatPattern) super(user, attributes, YearlyRepeatPattern)
@ -41,4 +42,4 @@ module RecurringTodos
end end
end end

View file

@ -70,6 +70,54 @@ class RecurringTodosControllerTest < ActionController::TestCase
assert_equal orig_todo_count+1, Todo.count assert_equal orig_todo_count+1, Todo.count
end end
def test_invalid_recurring_todo
login_as(:admin_user)
orig_rt_count = RecurringTodo.count
orig_todo_count = Todo.count
put :create,
"context_name"=>"library",
"project_name"=>"Build a working time machine",
"recurring_todo" =>
{
"daily_every_x_days"=>"1",
"daily_selector"=>"daily_every_x_day",
"description"=>"",
"end_date" => "31/08/2010",
"ends_on" => "ends_on_end_date",
"monthly_day_of_week" => "1",
"monthly_every_x_day" => "18",
"monthly_every_x_month2" => "1",
"monthly_every_x_month" => "1",
"monthly_every_xth_day"=>"1",
"monthly_selector"=>"monthly_every_x_day",
"notes"=>"with some notes",
"number_of_occurences" => "",
"recurring_period"=>"yearly",
"recurring_show_days_before"=>"10",
"recurring_target"=>"due_date",
"recurring_show_always" => "1",
"start_from"=>"18/08/2008",
"weekly_every_x_week"=>"1",
"weekly_return_monday"=>"m",
"yearly_day_of_week"=>"1",
"yearly_every_x_day"=>"8",
"yearly_every_xth_day"=>"1",
"yearly_month_of_year2"=>"8",
"yearly_month_of_year"=>"6",
"yearly_selector"=>"yearly_every_x_day"
},
"tag_list"=>"one, two, three, four", :format => :js
# check no new recurring todo added
assert_equal orig_rt_count, RecurringTodo.count
# check no new todo added
assert_equal orig_todo_count, Todo.count
# check error message
errors = assigns(:recurring_todo).errors
assert_equal 1, errors.size
assert_equal errors.get(:description), ["can't be blank"]
end
def test_new_recurring_todo_handles_attribs_outside_rec_todo def test_new_recurring_todo_handles_attribs_outside_rec_todo
login_as(:admin_user) login_as(:admin_user)