How to Test Multimodel Paperclip attachments?

11 views
Skip to first unread message

Patrick Perey

unread,
Feb 17, 2014, 7:13:40 PM2/17/14
to rubyonra...@googlegroups.com
I'm using Rspec and FactoryGirl to create specs for multimodel paperclip
attachments. From searching other questions, it seems like a single
image attachment is more common.

Car.rb

class Car < ActiveRecord::Base
has_many :uploads, dependent: :destroy

validates :uploads, presence: { message: 'You must upload at least
one image' }

accepts_nested_attributes_for :uploads, allow_destroy: true
end
Upload.rb

class Upload < ActiveRecord::Base
belongs_to :car

has_attached_file :upload, styles: { medium: '300x300>', thumb:
'100x100>' }

validates_attachment_content_type :upload, content_type:
/\Aimage\/.*\Z/
validates_attachment_presence :upload
end

As you can see there is a has_many and belongs_to relationship between
the two.

car_spec.rb

require 'spec_helper'

describe Car do
before do
@car = Car.new(FactoryGirl.attributes_for(:car))
end

subject { @car }

it { should respond_to(:uploads) }

it { should be_valid }
end

cars.rb factory

FactoryGirl.define do
factory :car do
# Something
uploads
end
end
I have tried `uploads { FactoryGirl.create!(:upload) }` as well as using
the `fixture_file_upload` directly on the Car's uploads attribute. Also
I read about Associations,but I wasn't sure how that work.

For the upload factory I've done how you would test an individual
attachment

Uploads.rb

include ActionDispatch::TestProcess

FactoryGirl.define do
factory :upload do
upload { fixture_file_upload(Rails.root.join('spec', 'fixtures',
'support', 'test.jpg'), 'image/jpeg') }
end
end

--
Posted via http://www.ruby-forum.com/.
Reply all
Reply to author
Forward
0 new messages