Note that there are some explanatory texts on larger screens.

plurals
  1. POStrange behaviour of Factory girl
    primarykey
    data
    text
    <p>I have some test models: User</p> <pre><code>FactoryGirl.define do factory :user do first_name {generate :name} last_name {generate :name} address {generate :string} country {generate :string} zip {generate :string} city {generate :string} phone {generate :string} company_name {generate :string} signature {generate :string} v_token {generate :string} password_digest {generate :password_digest} email {generate :email} lang 'en' theme 'air' end end </code></pre> <p>Contractor</p> <pre><code>FactoryGirl.define do factory :contractor, :parent =&gt; :user, class: 'Contractor' do type 'Contractor' u_token 'contractor' end end </code></pre> <p>Customer</p> <pre><code>FactoryGirl.define do factory :customer, :parent =&gt; :user, class: 'Customer' do type 'Customer' u_token 'customer' contractor end end </code></pre> <p>And CustomerE</p> <pre><code>FactoryGirl.define do factory :customer_e, :parent =&gt; :user, class: 'CustomerE' do type 'CustomerE' u_token 'customer_e' contractor customer end end </code></pre> <p>In my tests I have:</p> <pre><code>setup do @customer = FactoryGirl.create :customer @contractor = @customer.contractor end </code></pre> <p>And everything is ok with my tests. But if I add</p> <pre><code>setup do @customer_e = FactoryGirl.create :customer_e @customer = FactoryGirl.create :customer @contractor = @customer.contractor end </code></pre> <p>Then some my tests falls. Why it can be? I DON'T USE <code>@customer_e</code> in all cases.</p> <p><strong>EDITED:</strong> Ok, my show user method:</p> <pre><code> def show user = User.find_by_u_token(params[:u]) if !user render json: {status: 'error', descr: 'INVALID_U_TOKEN'} return end user = find_user_for_user(user, params[:id]) if !user render json: {status: 'error', descr: 'INVALID_USER_ID'} return end render json: {status: 'ok', user: {email: user.email, first_name: user.first_name, last_name: user.last_name, address: user.address, country: user.country, zip: user.zip, city: user.city, phone: user.phone, company_name: user.company_name, signature: user.signature, lang:user.lang}} end </code></pre> <p>And my find_user_for_user method:</p> <pre><code> def find_user_for_user(user, user_id) users = users_for_user(user) users.detect {|u| u.id == user_id.to_i} end def users_for_user(user) users = [] case user.type when 'Contractor' users &lt;&lt; user user.contractorEs.each do |cne| users &lt;&lt; cne end user.customers.each do |cs| users &lt;&lt; cs end user.customerEs.each do |cse| users &lt;&lt; cse end else users &lt;&lt; user.contractor user.contractor.contractorEs.each do |cne| users &lt;&lt; cne end user.contractor.customers.each do |cs| users &lt;&lt; cs end user.contractor.customerEs.each do |cse| users &lt;&lt; cse end end users end </code></pre> <p>And my test:</p> <pre><code>test "should show user" do get :show, :u =&gt; @contractor.u_token, :id =&gt; @contractor.id assert_response :success json = response.body data = JSON.parse(json) assert_equal @contractor.email, data['user']['email'] assert_equal 2, data.length end </code></pre> <p>The problem is that the <code>data</code> is actualy <code>{"status"=&gt;"error", "descr"=&gt;"INVALID_USER_ID"}</code></p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload