Added an integration test

This commit is contained in:
Joe Ferris 2008-05-31 17:12:57 -07:00
parent 05766cc8e9
commit f128e87121
2 changed files with 111 additions and 3 deletions

107
test/integration_test.rb Normal file
View 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

View File

@ -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|