Commit 67a7c282a2abfb48f2e0458109056301db24f8ed
1 parent
fbc702c7
Exists in
master
and in
29 other branches
ActionItem916: coping with other date formats
Showing
1 changed file
with
17 additions
and
2 deletions
Show diff stats
db/migrate/059_add_birth_date_to_person.rb
| @@ -18,8 +18,14 @@ class AddBirthDateToPerson < ActiveRecord::Migration | @@ -18,8 +18,14 @@ class AddBirthDateToPerson < ActiveRecord::Migration | ||
| 18 | date_string = date_string[0..-3] + (year > (Date.today.year - 2000) ? year + 1900 : year + 2000).to_s | 18 | date_string = date_string[0..-3] + (year > (Date.today.year - 2000) ? year + 1900 : year + 2000).to_s |
| 19 | end | 19 | end |
| 20 | 20 | ||
| 21 | - date_string =~ (/(\d+)[^\d]+(\d+)[^\d]+(\d+)/) | ||
| 22 | - Date.new($3.to_i, $2.to_i, $1.to_i) | 21 | + if ! ((date_string =~ /(\d+)[^\d]+(\d+)[^\d]+(\d+)/) || (date_string =~ /^(\d\d)(\d\d)(\d\d\d\d)$/)) |
| 22 | + return nil | ||
| 23 | + end | ||
| 24 | + begin | ||
| 25 | + Date.new($3.to_i, $2.to_i, $1.to_i) | ||
| 26 | + rescue Exception => e | ||
| 27 | + nil | ||
| 28 | + end | ||
| 23 | end | 29 | end |
| 24 | end | 30 | end |
| 25 | 31 | ||
| @@ -106,6 +112,15 @@ if $PROGRAM_NAME == __FILE__ | @@ -106,6 +112,15 @@ if $PROGRAM_NAME == __FILE__ | ||
| 106 | assert_nil date | 112 | assert_nil date |
| 107 | end | 113 | end |
| 108 | 114 | ||
| 115 | + should 'convert date without separators' do | ||
| 116 | + date = AddBirthDateToPerson::ConvertDates.convert('27071977') | ||
| 117 | + assert_equal [ 1977, 07, 27] , [date.year, date.month, date.day] | ||
| 118 | + end | ||
| 119 | + | ||
| 120 | + should 'not try to create invalid date' do | ||
| 121 | + assert_nil AddBirthDateToPerson::ConvertDates.convert('70/05/1987') | ||
| 122 | + end | ||
| 123 | + | ||
| 109 | end | 124 | end |
| 110 | 125 | ||
| 111 | end | 126 | end |