Here we look at how to setup FactoryGirl models to be used in a polymorphic situation.
The issue was first raised on StackOverflow here
For our demonstration, here is a common polymorphic model setup:
FactoryGirl.define do class Image < ActiveRecord::Base mount_uploader :photo, ImageUploader belongs_to :imageable, :polymorphic => true end class Slideshow < ActiveRecord::Base has_many :images, :as => :imageable, :dependent => :destroy end class Article < ActiveRecord::Base has_many :images, :as => :imageable, :dependent => :destroy end
And this is how you can build your factories in FactoryGirl to deal with the polymorphic association:
FactoryGirl.define do
factory :slideshow_image, class: "Image" do
association :imageable, :factory => :slideshow
# other attributes for slideshow model
end
factory :article_image, class: "Image" do
association :imageable, :factory => :article
# other attributes for article model
end
end
This will allow you to call the following:
before(:each) do @article_image = FactoryGirl.create(:article_image) @article = @article_image.article end
This provides you with the image, along with the associated article for testing :)
No comments:
Post a Comment