add validation to catch empty descriptions

This commit is contained in:
Reinier Balt 2010-07-16 13:11:01 +02:00
parent 6e5057138d
commit abf4524679
6 changed files with 56 additions and 5 deletions

View file

@ -169,7 +169,13 @@ class TodosController < ApplicationController
@projects = current_user.projects.find(:all) if @new_project_created
@initial_context_name = params['default_context_name']
@initial_project_name = params['default_project_name']
@default_tags = @todos[0].project.default_tags unless @todos[0].project.nil?
if @todos.size > 0
@default_tags = @todos[0].project.default_tags unless @todos[0].project.nil?
else
@multiple_error = "You need to submit at least one next action"
@saved = false;
@default_tags = current_user.projects.find_by_name(@initial_project_name).default_tags unless @initial_project_name.blank?
end
render :action => 'create_multiple'
end
format.xml do

View file

@ -78,6 +78,8 @@
:complete => "$('#todo_multi_new_action_submit').unblock()",
:condition => "askIfNewContextProvided('multi_')") do -%>
<div id="multiple_status"><%= error_messages_for("item", :object_name => 'action') %></div>
<label for="todo_notes">Multiple next actions (one on each line)</label>
<%= text_area( "todo", "multiple_todos", "cols" => 29, "rows" => 6, "tabindex" => 2) %>

View file

@ -1,5 +1,5 @@
if @saved
page.hide 'status'
page.hide 'multiple_status'
status_message = 'Added new next action'
status_message += 's' if @todos.size > 1
@ -37,6 +37,14 @@ if @saved
# make sure the behavior of the new/updated todo is enabled
page << "enable_rich_interaction();"
else
page.show 'status'
page.replace_html 'status', "#{error_messages_for('todo', :object_name => 'action')}"
page.show 'multiple_status'
# add error about missing todo description that is not available in @todos
@multiple_error = content_tag(:div, content_tag(:p, @multiple_error), {:class => 'errorExplanation', :id => 'errorExplanation'}) unless @multiple_error.blank?
error_messages = @multiple_error || ""
# add errors of individual @todos
@todos.each do |todo|
@todo_i = todo
error_messages += error_messages_for('todo_i', :object_name => 'action')
end
page.replace_html 'multiple_status', error_messages
end

View file

@ -118,4 +118,20 @@ Feature: Add new next action from every page
| go to | tickler page | not see| 0 | 3 |
| visit | project page for "test project"| see | 3 | 3 |
| visit | context page for "test context"| see | 2 | 3 |
| visit | tag page for "starred" | not see| 0 | 3 |
| visit | tag page for "starred" | not see| 0 | 3 |
@selenium
Scenario: I need to fill in at least one description and a context
When I go to the home page
And I follow "Add multiple next actions"
And I submit the new multiple actions form with "", "", "", ""
Then I should see "You need to submit at least one next action"
When I submit the new multiple actions form with "one", "", "", ""
Then I should see "Context can't be blank"
When I fill the multiple actions form with "", "a project", "a context", "tag"
And I submit the new multiple actions form with
"""
"""
Then I should see "You need to submit at least one next action"

View file

@ -76,6 +76,25 @@ When /^I submit multiple actions with using$/ do |multiple_actions|
selenium.click("xpath=//form[@id='todo-form-multi-new-action']//button[@id='todo_multi_new_action_submit']", :wait_for => :ajax, :javascript_framework => :jquery)
end
When /^I fill the multiple actions form with "([^"]*)", "([^"]*)", "([^"]*)", "([^"]*)"$/ do |descriptions, project_name, context_name, tags|
fill_in "todo[multiple_todos]", :with => descriptions
fill_in "multi_todo_project_name", :with => project_name
fill_in "multi_todo_context_name", :with => context_name
fill_in "multi_tag_list", :with => tags
end
When /^I submit the new multiple actions form with "([^"]*)", "([^"]*)", "([^"]*)", "([^"]*)"$/ do |descriptions, project_name, context_name, tags|
When "I fill the multiple actions form with \"#{descriptions}\", \"#{project_name}\", \"#{context_name}\", \"#{tags}\""
selenium.click("xpath=//form[@id='todo-form-multi-new-action']//button[@id='todo_multi_new_action_submit']", :wait_for => :ajax, :javascript_framework => :jquery)
end
When /^I submit the new multiple actions form with$/ do |multi_line_descriptions|
fill_in "todo[multiple_todos]", :with => multi_line_descriptions
selenium.click("xpath=//form[@id='todo-form-multi-new-action']//button[@id='todo_multi_new_action_submit']", :wait_for => :ajax, :javascript_framework => :jquery)
end
Then /^the dependencies of "(.*)" should include "(.*)"$/ do |child_name, parent_name|
parent = @current_user.todos.find_by_description(parent_name)
parent.should_not be_nil