thoughtbot--factory_bot/spec/acceptance/overrides_spec.rb

65 lines
1.5 KiB
Ruby
Raw Normal View History

require 'spec_helper'
require 'active_support/ordered_hash'
describe "attribute overrides" do
before do
define_model('User', :admin => :boolean)
define_model('Post', :title => :string,
:secure => :boolean,
:user_id => :integer) do
belongs_to :user
def secure=(value)
return unless user && user.admin?
write_attribute(:secure, value)
end
end
FactoryGirl.define do
factory :user do
factory :admin do
admin true
end
end
factory :post do
user
title "default title"
end
end
end
let(:admin) { FactoryGirl.create(:admin) }
let(:post_attributes) do
attributes = ActiveSupport::OrderedHash.new
attributes[:secure] = false
attributes
end
let(:non_admin_post_attributes) do
post_attributes[:user] = FactoryGirl.create(:user)
post_attributes
end
let(:admin_post_attributes) do
post_attributes[:user] = admin
post_attributes
end
context "with an admin posting" do
subject { FactoryGirl.create(:post, admin_post_attributes) }
its(:secure) { should == false }
end
context "with a non-admin posting" do
subject { FactoryGirl.create(:post, non_admin_post_attributes) }
its(:secure) { should be_nil }
end
context "with no user posting" do
subject { FactoryGirl.create(:post, post_attributes) }
its(:secure) { should be_nil }
end
end