I just got finished working with attachment_fu, and ended up modeling a plugin for my company since attachment_fu was slight over kill for our needs.

Have you opened up attachment_fu's source? upload_data is just a method (so is upload_data=) which is inserted into a model that calls has_attachment. I have yet to spec my plugin so I'm interested to see what your results are.

Thanks,
:: Justin Reagor
:: [EMAIL PROTECTED]



On Aug 22, 2007, at 12:46 PM, Matt Lins wrote:

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

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

Reply via email to