Sorry, attachment_fu is a plugin for handling binary data. It handles storing the file in the file system and storing some helpful data in the database about the file.

The previous code is from the attachment_fu plugin(no, I didn't modify it). This property needs to be satisfied in order for the model to validate. So I need to get my model to validate in the spec so I can actually test other parts of my model. Here is my model:

class Picture < ActiveRecord::Base

 has_and_belongs_to_many :products

 has_attachment :content_type => 'image/jpeg',
                :storage => :file_system,
                :max_size => 3.megabytes,
                :resize_to => '400x400>',
:thumbnails => {:medium => '200x200>', :small => '100x100>'},
                :path_prefix => 'images/products'

 validates_as_attachment

 validates_uniqueness_of :filename
 validates_presence_of :filename

 def before_update
   self.thumbnails.each do |t|
     t.filename= thumbnail_name_for(t.thumbnail)
     t.save
   end
 end

 def full_filename(thumbnail = nil)
file_system_path = (thumbnail ? thumbnail_class : self).attachment_options[:path_prefix].to_s File.join(RAILS_ROOT, 'public/external', file_system_path, thumbnail_name_for(thumbnail) + '.jpg')
 end

 def public_image
   self.public_filename
 end

end

aslak hellesoy wrote:
On 8/22/07, Matt Lins <[EMAIL PROTECTED]> wrote:
 First off, I'm not trying to spec attachment_fu, I know it's been tested.

 But, I added some code to that model that I do need to test. Basically, I
need to somehow fulfill the "uploaded_data" property so I can actually run
my tests(otherwise they fail because of validations). The "uploaded_data"
field is what would grab the multipart data from form.  Here it is:

       # This method handles the uploaded file object.  If you set the field
name to uploaded_data, you don't need
       # any special code in your controller.
       #
       #   <% form_for :attachment, :html => { :multipart => true } do |f|
-%>
       #     <p><%= f.file_field :uploaded_data %></p>
       #     <p><%= submit_tag :Save %>
       #   <% end -%>
       #
       #   @attachment = Attachment.create! params[:attachment]
       #
       # TODO: Allow it to work with Merb tempfiles too.
       def uploaded_data=(file_data)
         return nil if file_data.nil? || file_data.size == 0
         self.content_type = file_data.content_type
         self.filename     = file_data.original_filename if
respond_to?(:filename)
         if file_data.is_a?(StringIO)
           file_data.rewind
           self.temp_data = file_data.read
         else
           self.temp_path = file_data.path
         end
       end


I'm not familiar with attachment_fu - is this code from attachment_fu
that you have modified? Or is it your code entirely? Attachment_fu's
entirely? Where does this code come from?

Aslak

 While I was digging I found out that "file_data" is a ruby Tempfile object.
So, I tried to create a dummy file and pass it, but it failed. I found out
in the CGI library, it actually extends the Tempfile object and adds some
methods/properties. It started to get messy, so I thought I'd ask for
advice.

 How can I create a valid attachment_fu model spec(so I can start tweaking
it to test my other validations)?

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to