[rspec-users] fixtures and associations

Daniel Lopes danielvlopes at gmail.com
Wed Dec 17 21:36:46 EST 2008


I think I was misunderstood. I am not saying to use create rather than
create! ... In this case, I just use it because will help me with puts for
debug my own error in spec.
In this case a really don't know what is going on, if I use create! I can't
store the value in a var and then try to look what is the message of the
failed attribute with puts.
I using puts to print the error object to debug who is the wrong attribute.
If I use create! I will have this message:
Validation failed: Property is not valid => and cant use puts to know the
content of @errors

If I use create and print the result of fixture I will get:

<ActiveRecord::Errors:0x23af4b0 @errors={"user"=>["não pode ser vazio"]},
@base=#<Property id: 996332877, user_id: 317248456, ...

And find the problem, it is just for debugging and help me to find where is
the problem, after fix this I will change to create! again.

--

Anyone can figure why even property_id and owner_id are defined still raise
"can't be blank" ?

Thanks a lot for all help.

Atenciosamente,

Daniel Lopes    Area Criações
Design, Websites e Sistemas Web

Visite:  http://www.areacriacoes.com.br/projects
          http://blog.areacriacoes.com.br/

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
55 (31) 3077-4560  /  55 (31) 8808-8748  /  55 (31) 8737-7501


On Thu, Dec 18, 2008 at 12:10 AM, aslak hellesoy
<aslak.hellesoy at gmail.com>wrote:

>
>
> On Thu, Dec 18, 2008 at 2:02 AM, Daniel Lopes <danielvlopes at gmail.com>wrote:
>
>> I know... I just don't use create!, in this special case, because it will
>> be more complicate to know what field have the error .
>>
>
> No it won't. The error message tells you what field has the error, and if
> creation is unsuccessful you *need* to know about it. Otherwise you'll get
> tons of false positives. I can't think of a single case where it makes sense
> to use create inside a spec.
>
> Aslak
>
>
>> I'm still scratching my head, my @tenant instance var on spec has values
>> for user_id and owner_id and don't understand why my validates_associated
>> :property raise an error.
>>
>> And if I mock model on model spec will not be a good thing.
>>
>> Atenciosamente,
>>
>> Daniel Lopes    Area Criações
>> Design, Websites e Sistemas Web
>>
>> Visite:  http://www.areacriacoes.com.br/projects
>>           http://blog.areacriacoes.com.br/
>>
>> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
>> * *
>> 55 (31) 3077-4560  /  55 (31) 8808-8748  /  55 (31) 8737-7501
>>
>>
>> On Wed, Dec 17, 2008 at 10:45 PM, aslak hellesoy <
>> aslak.hellesoy at gmail.com> wrote:
>>
>>>
>>>
>>> On Thu, Dec 18, 2008 at 1:38 AM, Daniel Lopes <danielvlopes at gmail.com>wrote:
>>>
>>>> Hello Pat, the error still the same. at errors={"user"=>["can't be
>>>> blank"]}
>>>>
>>>> But if we look on @base we have user:
>>>> @base=#<Property id: 996332877, user_id: 317248456, owner_id: 465176508,
>>>> ... >
>>>>
>>>> And my code is:
>>>> describe Tenant do
>>>>   fixtures :properties, :users ,:owners
>>>>
>>>>   def create_tenant(options = {})
>>>>     record = Tenant.create({
>>>>
>>>
>>> Just a small tip. Always, always use create! in specs. You want an error
>>> to be raised in case creation is unsuccessful, and create doesn't do that -
>>> it just returns false.
>>>
>>> Aslak
>>>
>>>
>>>>       :property => properties(:two),
>>>>       :renters => "value for renters",
>>>>       :guarantor => "value for guarantor",
>>>>       :contact_name => "value for contact_name",
>>>>       :contact_phone => "value for contact_phone",
>>>>       :contact_email => "teste at hosttest.com",
>>>>       :end_date => Date.today,
>>>>       :beginning_date => Date.today,
>>>>       :initial_value => "9.99"
>>>>     }.merge(options))
>>>>   end
>>>>
>>>>   before(:each) do
>>>>     @tenant = create_tenant
>>>>   end
>>>>
>>>>   it "should create a new instance given valid attributes" do
>>>>     properties(:two).valid?
>>>>     p properties(:two).errors
>>>>     # @tenant.errors.should be_empty
>>>>   end
>>>>
>>>> And my fixtures still the same... I don't know what's happening, when I
>>>> try run on console or in browser everything ok... I think is something
>>>> strange with fixtures.
>>>>
>>>> Atenciosamente,
>>>>
>>>> Daniel Lopes    Area Criações
>>>> Design, Websites e Sistemas Web
>>>>
>>>> Visite:  http://www.areacriacoes.com.br/projects
>>>>           http://blog.areacriacoes.com.br/
>>>>
>>>> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
>>>> * * *
>>>> 55 (31) 3077-4560  /  55 (31) 8808-8748  /  55 (31) 8737-7501
>>>>
>>>>
>>>> On Wed, Dec 17, 2008 at 10:14 PM, Pat Maddox <pergesu at gmail.com> wrote:
>>>>
>>>>> On Wed, Dec 17, 2008 at 2:13 PM, Daniel Lopes <danielvlopes at gmail.com>
>>>>> wrote:
>>>>> > Hello Pat, even I load all my fixtures it still not reading anything
>>>>> from
>>>>> > users.yml ...
>>>>> > I will look at factory_girl but before I need understand what
>>>>> happening.
>>>>> > I try this:
>>>>> > require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
>>>>> > describe Tenant do
>>>>> >   fixtures :properties, :users , :owners
>>>>> >   def create_tenant(options = {})
>>>>> >     record = Tenant.create({
>>>>> >       :property => properties(:two),
>>>>> >       :renters => "value for renters",
>>>>> >       :guarantor => "value for guarantor",
>>>>> >       :contact_name => "value for contact_name",
>>>>> >       :contact_phone => "value for contact_phone",
>>>>> >       :contact_email => "teste at hosttest.com",
>>>>> >       :end_date => Date.today,
>>>>> >       :beginning_date => Date.today,
>>>>> >       :initial_value => "9.99"
>>>>> >     }.merge(options))
>>>>> >   end
>>>>> >
>>>>> >   before(:each) do
>>>>> >     @tenant = create_tenant
>>>>> >   end
>>>>> >
>>>>> >   it "should create a new instance given valid attributes" do
>>>>> >     p properties(:two).errors
>>>>> >     properties(:two).should be_valid
>>>>> >     # @tenant.errors.should be_empty
>>>>> >   end
>>>>> > end
>>>>>
>>>>> What error are you getting now?  Please post whatever error you're
>>>>> experiencing...when we change this code, I expect a different error,
>>>>> and would not know what it is.  If it's the same, that's strange.
>>>>>
>>>>> Also, I noticed you have
>>>>> p properties(:two).errors
>>>>> properties(:two).should be_valid
>>>>>
>>>>> That's not going to show you anything, because errors don't get added
>>>>> until you call #valid?  So change that to
>>>>>
>>>>> properties(:two).valid?
>>>>> p properties(:two).errors
>>>>>
>>>>> Pat
>>>>> _______________________________________________
>>>>> rspec-users mailing list
>>>>> rspec-users at rubyforge.org
>>>>> http://rubyforge.org/mailman/listinfo/rspec-users
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> rspec-users mailing list
>>>> rspec-users at rubyforge.org
>>>> http://rubyforge.org/mailman/listinfo/rspec-users
>>>>
>>>
>>>
>>> _______________________________________________
>>> rspec-users mailing list
>>> rspec-users at rubyforge.org
>>> http://rubyforge.org/mailman/listinfo/rspec-users
>>>
>>
>>
>> _______________________________________________
>> rspec-users mailing list
>> rspec-users at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/rspec-users
>>
>
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20081218/da3768c6/attachment.html>


More information about the rspec-users mailing list