2009/5/25 Jim Burgess
<rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org>
>
> Hi,
>
> I have a model named ''applicant''.
> Applicant has various fields, one of them is
''date_of_birth''
> I have split the field ''date of birth'' into three fields:
> ''dob_day'', ''dob_month'',
''dob_year''
>
> From the view:
> <% form_for :applicant, :url=> {:action => "index"} do
|f| %>
> <ul>
> <li>
> <%= f.label :dob, "Date of birth" %>
> <%= f.text_field :dob_day, :maxlength => 2 %>
> <%= f.text_field :dob_month, :maxlength => 2 %>
> <%= f.text_field :dob_year, :maxlength => 4 %>
> <%= error_message_on :applicant, :date_of_birth %>
> </li>
> </ul>
> <% end %>
>
> The idea is that the user then types their date of birth into the text
> fields in the form DD-MM-YYYY.
> As these three fields (''dob_day'',
''dob_month'', ''dob_year'') don''t
exist
> in the database (only ''date_of_birth'') does, Rails then
looks in the
> model, where it finds the following getter and setter methods:
>
> def dob_day=(day)
> @dob_day = day
> make_date
> @dob_day
> end
>
> def dob_month=(month)
> @dob_month = month
> make_date
> @dob_month
> end
>
> def dob_year=(year)
> @dob_year = year
> make_date
> @dob_year
> end
>
> def make_date
> if defined? @dob_day and @dob_day != "" and defined? @dob_month
and
> @dob_month != "" and defined? @dob_year and @dob_year
!=""
> self.dob = [@dob_day, @dob_month, @dob_year].join(''-'')
> else
> self.dob = ""
> end
> end
>
> This has the effect that a string in the form of "01-01-2009" is
> returned to the field ''date_of_birth''
>
> This works great.
>
> My question: how would I write a test to check that if I set
''dob_day'',
> ''dob_month'', ''dob_year'' to
''01'', ''01'', ''2000'', that
the strig
> ''01-01-2000'' is returned?
>
> I tried this:
>
> def test_should_return_date_of_birth
> applicant = Applicant.new(valid_applicant_attributes(:date_of_birth =>
> ""))
> date_of_birth_day = "01"
> date_of_birth_month = "01"
> date_of_birth_year = "1999"
> assert_equal "01-01-1999", applicant.date_of_birth
> end
>
Assuming this is a unit test then I think it should be
application.dob_day = "01" etc.
>
> but got the error:
> ("01-01-1999") expected, but was ("").
>
> And this:
>
> def test_should_return_date_of_birth
> applicant = Applicant.new(valid_applicant_attributes(:date_of_birth =>
> "", :date_of_birth_day => "01", :date_of_birth_month
=> "01",
> :date_of_birth_year => "1999"))
> assert_equal "01-01-09", applicant.date_of_birth
> end
>
> but got the error:
> unknown attribute: date_of_birth_year
>
Again the attriutes are dob_day etc not date_of_birth_day.
>
> Sorry if this question is long winded, I lack the terminology to explain
> it any other way (suggestions welcome).
>
> Thanks for any help you can give.
> --
> Posted via http://www.ruby-forum.com/.
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---