thoughtbot--factory_bot/features/support/factories.rb

97 lines
1.8 KiB
Ruby

ActiveRecord::Base.establish_connection(
:adapter => 'sqlite3',
:database => File.join(File.dirname(__FILE__), 'test.db')
)
class CreateSchema < ActiveRecord::Migration
def self.up
create_table :posts, :force => true do |t|
t.integer :author_id
t.integer :category_id
t.string :title
t.string :body
end
create_table :category_groups, :force => true do |t|
t.string :name
end
create_table :categories, :force => true do |t|
t.integer :category_group_id
t.string :name
end
create_table :tags, :force => true do |t|
t.integer :post_id
t.string :name
end
create_table :users, :force => true do |t|
t.string :name
t.boolean :admin, :default => false, :null => false
end
end
end
CreateSchema.suppress_messages { CreateSchema.migrate(:up) }
class User < ActiveRecord::Base
end
class CategoryGroup < ActiveRecord::Base
end
class Category < ActiveRecord::Base
belongs_to :category_group
end
class Post < ActiveRecord::Base
belongs_to :author, :class_name => 'User'
belongs_to :category
has_many :tags
end
class Tag < ActiveRecord::Base
belongs_to :post
end
class NonActiveRecord
end
FactoryGirl.define do
# To make sure the step defs work with an email
sequence :email do |n|
"email#{n}@example.com"
end
factory :user, :aliases => [:person] do
factory :admin_user do
admin true
end
end
factory :category do
name "programming"
category_group
end
factory :category_group do
name "tecnhology"
end
factory :post do
association :author, :factory => :user
category
end
factory :tag do
post
end
# This is here to ensure that factory step definitions don't raise for a non-AR factory
factory :non_active_record do
end
end
require 'factory_girl/step_definitions'