Sha256: f76058d661946498992ef7e418fb55d99f5972c2470922aaba014489dcaac6a7

Contents?: true

Size: 1.4 KB

Versions: 201

Compression:

Stored size: 1.4 KB

Contents

require "spec_helper"

describe "calling methods on the model instance" do
  before do
    define_model('User', age: :integer, age_copy: :integer) do
      def age
        read_attribute(:age) || 18
      end
    end

    FactoryGirl.define do
      factory :user do
        age_copy { age }
      end
    end
  end

  context "without the attribute being overridden" do
    it "returns the correct value from the instance" do
      FactoryGirl.build(:user).age_copy.should == 18
    end

    it "returns nil during attributes_for" do
      FactoryGirl.attributes_for(:user)[:age_copy].should be_nil
    end

    it "doesn't instantiate a record with attributes_for" do
      User.stubs(:new)
      FactoryGirl.attributes_for(:user)
      User.should have_received(:new).never
    end
  end

  context "with the attribute being overridden" do
    it "uses the overridden value" do
      FactoryGirl.build(:user, age_copy: nil).age_copy.should be_nil
    end

    it "uses the overridden value during attributes_for" do
      FactoryGirl.attributes_for(:user, age_copy: 25)[:age_copy].should == 25
    end
  end

  context "with the referenced attribute being overridden" do
    it "uses the overridden value" do
      FactoryGirl.build(:user, age: nil).age_copy.should be_nil
    end

    it "uses the overridden value during attributes_for" do
      FactoryGirl.attributes_for(:user, age: 25)[:age_copy].should == 25
    end
  end
end

Version data entries

201 entries across 93 versions & 7 rubygems

Version Path
classiccms-0.3.6 vendor/bundle/gems/factory_girl-3.2.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.6 vendor/bundle/gems/factory_girl-3.3.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.5 vendor/bundle/gems/factory_girl-3.3.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.5 vendor/bundle/gems/factory_girl-3.2.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.5 vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.4 vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.4 vendor/bundle/gems/factory_girl-3.3.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.4 vendor/bundle/gems/factory_girl-3.2.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.3 vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.3 vendor/bundle/gems/factory_girl-3.2.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.3 vendor/bundle/gems/factory_girl-3.3.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.2 vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.2 vendor/bundle/gems/factory_girl-3.2.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.2 vendor/bundle/gems/factory_girl-3.3.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.1 vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.1 vendor/bundle/gems/factory_girl-3.3.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.1 vendor/bundle/gems/factory_girl-3.2.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.0 vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.0 vendor/bundle/gems/factory_girl-3.2.0/spec/acceptance/attributes_from_instance_spec.rb
classiccms-0.3.0 vendor/bundle/gems/factory_girl-3.3.0/spec/acceptance/attributes_from_instance_spec.rb