mirror of
https://github.com/thoughtbot/factory_bot.git
synced 2022-11-09 11:43:51 -05:00
Added an integration test
This commit is contained in:
parent
05766cc8e9
commit
f128e87121
2 changed files with 111 additions and 3 deletions
107
test/integration_test.rb
Normal file
107
test/integration_test.rb
Normal file
|
@ -0,0 +1,107 @@
|
|||
require(File.join(File.dirname(__FILE__), 'test_helper'))
|
||||
|
||||
class IntegrationTest < Test::Unit::TestCase
|
||||
|
||||
def setup
|
||||
Factory.define :user do |f|
|
||||
f.first_name 'Jimi'
|
||||
f.last_name 'Hendrix'
|
||||
f.admin false
|
||||
f.email {|a| "#{a.first_name}.#{a.last_name}@example.com".downcase }
|
||||
end
|
||||
|
||||
Factory.define :post do |f|
|
||||
f.title 'Test Post'
|
||||
f.author {|a| a.association(:user) }
|
||||
end
|
||||
|
||||
Factory.define :admin, :class => User do |f|
|
||||
f.first_name 'Ben'
|
||||
f.last_name 'Stein'
|
||||
f.admin true
|
||||
f.email {|a| "#{a.first_name}.#{a.last_name}@example.com".downcase }
|
||||
end
|
||||
end
|
||||
|
||||
def teardown
|
||||
Factory.send(:class_variable_get, "@@factories").clear
|
||||
end
|
||||
|
||||
context "a generated attributes hash" do
|
||||
|
||||
setup do
|
||||
@attrs = Factory.attributes_for(:user, :first_name => 'Bill')
|
||||
end
|
||||
|
||||
should "assign all attributes" do
|
||||
assert_equal [:admin, :email, :first_name, :last_name],
|
||||
@attrs.keys.sort {|a, b| a.to_s <=> b.to_s }
|
||||
end
|
||||
|
||||
should "correctly assign lazy, dependent attributes" do
|
||||
assert_equal "bill.hendrix@example.com", @attrs[:email]
|
||||
end
|
||||
|
||||
should "override attrbutes" do
|
||||
assert_equal 'Bill', @attrs[:first_name]
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
context "a built instance" do
|
||||
|
||||
setup do
|
||||
@instance = Factory.build(:post)
|
||||
end
|
||||
|
||||
should "not be saved" do
|
||||
assert @instance.new_record?
|
||||
end
|
||||
|
||||
should "assign associations" do
|
||||
assert_kind_of User, @instance.author
|
||||
end
|
||||
|
||||
should "not save associations" do
|
||||
assert @instance.author.new_record?
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
context "a built instance" do
|
||||
|
||||
setup do
|
||||
@instance = Factory.create(:post)
|
||||
end
|
||||
|
||||
should "be saved" do
|
||||
assert !@instance.new_record?
|
||||
end
|
||||
|
||||
should "assign associations" do
|
||||
assert_kind_of User, @instance.author
|
||||
end
|
||||
|
||||
should "save associations" do
|
||||
assert !@instance.author.new_record?
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
context "an instance generated by a factory with a custom class name" do
|
||||
|
||||
setup do
|
||||
@instance = Factory.create(:admin)
|
||||
end
|
||||
|
||||
should "use the correct class name" do
|
||||
assert_kind_of User, @instance
|
||||
end
|
||||
|
||||
should "use the correct factory definition" do
|
||||
assert @instance.admin?
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
|
@ -18,6 +18,7 @@ class CreateSchema < ActiveRecord::Migration
|
|||
t.string :first_name
|
||||
t.string :last_name
|
||||
t.string :email
|
||||
t.boolean :admin, :default => false
|
||||
end
|
||||
|
||||
create_table :posts, :force => true do |t|
|
||||
|
|
Loading…
Reference in a new issue