mirror of
https://github.com/kemko/paperclip.git
synced 2026-01-01 16:05:40 +03:00
101 lines
2.5 KiB
Ruby
101 lines
2.5 KiB
Ruby
require 'rubygems'
|
|
require 'test/unit'
|
|
gem 'thoughtbot-shoulda', ">= 2.9.0"
|
|
require 'shoulda'
|
|
require 'mocha'
|
|
require 'tempfile'
|
|
|
|
gem 'sqlite3-ruby'
|
|
|
|
require 'active_record'
|
|
require 'active_support'
|
|
begin
|
|
require 'ruby-debug'
|
|
rescue LoadError
|
|
puts "ruby-debug not loaded"
|
|
end
|
|
|
|
ROOT = File.join(File.dirname(__FILE__), '..')
|
|
Rails.root = ROOT
|
|
Rails.env = "test"
|
|
|
|
$LOAD_PATH << File.join(ROOT, 'lib')
|
|
$LOAD_PATH << File.join(ROOT, 'lib', 'paperclip')
|
|
|
|
require File.join(ROOT, 'lib', 'paperclip.rb')
|
|
|
|
require 'shoulda_macros/paperclip'
|
|
|
|
FIXTURES_DIR = File.join(File.dirname(__FILE__), "fixtures")
|
|
config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
|
|
ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
|
|
ActiveRecord::Base.establish_connection(config['test'])
|
|
|
|
def reset_class class_name
|
|
ActiveRecord::Base.send(:include, Paperclip)
|
|
Object.send(:remove_const, class_name) rescue nil
|
|
klass = Object.const_set(class_name, Class.new(ActiveRecord::Base))
|
|
klass.class_eval{ include Paperclip }
|
|
klass
|
|
end
|
|
|
|
def reset_table table_name, &block
|
|
block ||= lambda{ true }
|
|
ActiveRecord::Base.connection.create_table :dummies, {:force => true}, &block
|
|
end
|
|
|
|
def modify_table table_name, &block
|
|
ActiveRecord::Base.connection.change_table :dummies, &block
|
|
end
|
|
|
|
def rebuild_model options = {}
|
|
ActiveRecord::Base.connection.create_table :dummies, :force => true do |table|
|
|
table.column :other, :string
|
|
table.column :avatar_file_name, :string
|
|
table.column :avatar_content_type, :string
|
|
table.column :avatar_file_size, :integer
|
|
table.column :avatar_updated_at, :datetime
|
|
end
|
|
rebuild_class options
|
|
end
|
|
|
|
def rebuild_class options = {}
|
|
ActiveRecord::Base.send(:include, Paperclip)
|
|
Object.send(:remove_const, "Dummy") rescue nil
|
|
Object.const_set("Dummy", Class.new(ActiveRecord::Base))
|
|
Dummy.class_eval do
|
|
include Paperclip
|
|
has_attached_file :avatar, options
|
|
end
|
|
end
|
|
|
|
def temporary_rails_env(new_env)
|
|
old_env = Object.const_defined?("Rails.env") ? Rails.env : nil
|
|
silence_warnings do
|
|
Object.const_set("Rails.env", new_env)
|
|
end
|
|
yield
|
|
silence_warnings do
|
|
Object.const_set("Rails.env", old_env)
|
|
end
|
|
end
|
|
|
|
class FakeModel
|
|
attr_accessor :avatar_file_name,
|
|
:avatar_file_size,
|
|
:avatar_last_updated,
|
|
:avatar_content_type,
|
|
:id
|
|
|
|
def errors
|
|
@errors ||= []
|
|
end
|
|
|
|
def run_callbacks name, *args
|
|
end
|
|
end
|
|
|
|
def attachment options
|
|
Paperclip::Attachment.new(:avatar, FakeModel.new, options)
|
|
end
|