Validate the date format

This commit is contained in:
Andrew Tomaka 2013-08-10 09:24:49 -04:00
parent 77d9a0235a
commit 6b377a577e
6 changed files with 65 additions and 3 deletions

View file

@ -9,6 +9,7 @@ gem 'jquery-rails'
gem 'jquery-ui-rails' gem 'jquery-ui-rails'
gem 'jbuilder', '~> 1.2' gem 'jbuilder', '~> 1.2'
gem 'thin' gem 'thin'
gem 'validates_timeliness', '~> 3.0'
group :doc do group :doc do
gem 'sdoc', require: false gem 'sdoc', require: false

View file

@ -168,6 +168,7 @@ GEM
thread_safe (0.1.2) thread_safe (0.1.2)
atomic atomic
tilt (1.4.1) tilt (1.4.1)
timeliness (0.3.7)
treetop (1.4.14) treetop (1.4.14)
polyglot polyglot
polyglot (>= 0.3.1) polyglot (>= 0.3.1)
@ -175,6 +176,8 @@ GEM
uglifier (2.1.2) uglifier (2.1.2)
execjs (>= 0.3.0) execjs (>= 0.3.0)
multi_json (~> 1.0, >= 1.0.2) multi_json (~> 1.0, >= 1.0.2)
validates_timeliness (3.0.14)
timeliness (~> 0.3.6)
xpath (2.0.0) xpath (2.0.0)
nokogiri (~> 1.3) nokogiri (~> 1.3)
@ -200,3 +203,4 @@ DEPENDENCIES
sqlite3 sqlite3
thin thin
uglifier (>= 1.3.0) uglifier (>= 1.3.0)
validates_timeliness (~> 3.0)

View file

@ -1,3 +1,3 @@
class Workout < ActiveRecord::Base class Workout < ActiveRecord::Base
validates :date, :presence => true validates_date :date
end end

View file

@ -0,0 +1,40 @@
ValidatesTimeliness.setup do |config|
# Extend ORM/ODMs for full support (:active_record, :mongoid).
# config.extend_orms = [ :active_record ]
#
# Default timezone
# config.default_timezone = :utc
#
# Set the dummy date part for a time type values.
# config.dummy_date_for_time_type = [ 2000, 1, 1 ]
#
# Ignore errors when restriction options are evaluated
# config.ignore_restriction_errors = false
#
# Re-display invalid values in date/time selects
# config.enable_date_time_select_extension!
#
# Handle multiparameter date/time values strictly
# config.enable_multiparameter_extension!
#
# Shorthand date and time symbols for restrictions
# config.restriction_shorthand_symbols.update(
# :now => lambda { Time.current },
# :today => lambda { Date.current }
# )
#
# Use the plugin date/time parser which is stricter and extendable
# config.use_plugin_parser = false
#
# Add one or more formats making them valid. e.g. add_formats(:date, 'd(st|rd|th) of mmm, yyyy')
# config.parser.add_formats()
#
# Remove one or more formats making them invalid. e.g. remove_formats(:date, 'dd/mm/yyy')
# config.parser.remove_formats()
#
# Change the amiguous year threshold when parsing a 2 digit year
# config.parser.ambiguous_year_threshold = 30
#
# Treat ambiguous dates, such as 01/02/1950, as a Non-US date.
# config.parser.remove_us_formats
end

View file

@ -0,0 +1,16 @@
en:
errors:
messages:
invalid_date: "is not a valid date"
invalid_time: "is not a valid time"
invalid_datetime: "is not a valid datetime"
is_at: "must be at %{restriction}"
before: "must be before %{restriction}"
on_or_before: "must be on or before %{restriction}"
after: "must be after %{restriction}"
on_or_after: "must be on or after %{restriction}"
validates_timeliness:
error_value_formats:
date: '%Y-%m-%d'
time: '%H:%M:%S'
datetime: '%Y-%m-%d %H:%M:%S'

View file

@ -79,12 +79,13 @@ describe "Workouts" do
page.should have_content 'Workout created' page.should have_content 'Workout created'
end end
it "should not allow a blank date" do it "should only accept real dates" do
visit workouts_path visit workouts_path
click_link 'Create' click_link 'Create'
fill_in 'Date', :with => '2013-13-13'
click_button 'Create Workout' click_button 'Create Workout'
page.should have_content "Date can't be blank" page.should have_content "Date is not a valid date"
end end
end end