Return to Snippet

Revision: 1934
at November 26, 2006 03:31 by tjstankus


Updated Code
# app/models/house_photo.rb
class HousePhoto < ActiveRecord::Base
  belongs_to :house
  acts_as_list :scope => :house
  file_column :image,
              :root_path => ENV["RAILS_ENV"] == "test" ? 
                            File.join(RAILS_ROOT, "public", "test") : 
                            File.join(RAILS_ROOT, "public"),
              :magick => {:geometry => "640x480",
                          :versions => {:thumb => "128x96", :medium => "288x288" }}
  validates_presence_of :image
  validates_presence_of :house_id
end

# test/unit/house_photo_test.rb
require File.dirname(__FILE__) + '/../test_helper'
class HousePhotoTest < Test::Unit::TestCase
  fixtures :house_photos, :houses

  def test_should_get_positioned
    p = create_photo
    assert p.position
  end

  # Other tests go here...

  protected

  def create_photo(options = {}, image_filename = 'files/house1_exterior1.gif')
    photo = fixture_file_upload(image_filename, 'image/jpg')
    houses(:house1).house_photos.create({ :image => photo }.merge(options))
  end
end

Revision: 1933
at November 26, 2006 03:24 by tjstankus


Initial Code
def create_photo(options = {}, image_filename = 'files/house1_exterior1.gif')
  photo = fixture_file_upload(image_filename, 'image/jpg')
  houses(:house1).house_photos.create({ :image => photo }.merge(options))
end

Initial URL

                                

Initial Description
fixture_file_upload is another nifty Rails testing feature. It allows you to create "MIME-encoded content that would normally be uploaded by a browser input field." (Part in quotes straight from Agile Web Development with Rails, v2). Put your files to test in test/fixtures/files. You have to create the 'files' directory; rails doesn't do it for you.

Initial Title
fixture_file_upload Example

Initial Tags
rails

Initial Language
Ruby