Skip to content

Instantly share code, notes, and snippets.

@anklos
Last active April 13, 2016 04:07
Show Gist options
  • Save anklos/3f30d8c075acba69011ef664da6f09f2 to your computer and use it in GitHub Desktop.
Save anklos/3f30d8c075acba69011ef664da6f09f2 to your computer and use it in GitHub Desktop.
remove attachment test with paper trail
# Use this template to report PaperTrail bugs.
# It is based on the ActiveRecord template.
# https://github.com/rails/rails/blob/master/guides/bug_report_templates/active_record_gem.rb
begin
require "bundler/inline"
rescue LoadError => e
$stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler"
raise e
end
gemfile(true) do
ruby "2.2.1"
source "https://rubygems.org"
gem "activerecord", "4.2.0"
gem "minitest", "5.8.3"
gem "paper_trail", "4.0.0", require: false
gem "sqlite3"
gem 'carrierwave'
gem 'mini_magick'
gem 'byebug'
end
require "active_record"
require "minitest/autorun"
require "logger"
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Schema.define do
create_table :bids, force: true do |t|
t.string :agreement
t.timestamps null: false
end
create_table :versions do |t|
t.string :item_type, null: false
t.integer :item_id, null: false
t.string :event, null: false
t.string :whodunnit
t.text :object, limit: 1_073_741_823
t.text :object_changes, limit: 1_073_741_823
t.integer :transaction_id
t.datetime :created_at
end
add_index :versions, [:item_type, :item_id]
add_index :versions, [:transaction_id]
create_table :version_associations do |t|
t.integer :version_id
t.string :foreign_key_name, null: false
t.integer :foreign_key_id
end
add_index :version_associations, [:version_id]
add_index :version_associations, [:foreign_key_name, :foreign_key_id],
name: "index_version_associations_on_foreign_key"
end
# We must wait to require `paper_trail.rb` until after the
# `version_associations` table exists or else PT won't track associations.
require "paper_trail"
require 'carrierwave/orm/activerecord'
class AttachmentUploader < CarrierWave::Uploader::Base
storage :file
include CarrierWave::MiniMagick
include CarrierWave::MimeTypes
version :large do
process :resize_to_fill => [800, 800, 'Center']
end
version :profile do
process :resize_to_fill => [200, 200, 'Center']
end
version :thumb do
process :resize_to_fill => [50, 50, 'Center']
end
version :small_thumb do
process :resize_to_fill => [20, 20, 'Center']
end
end
class Bid < ActiveRecord::Base
has_paper_trail
mount_uploader :agreement, AttachmentUploader
end
ActiveSupport::TestCase.test_order = :sorted
class BugTest < ActiveSupport::TestCase
def test_1
bid = Bid.create()
assert_equal nil, bid.versions[0].reify
end
def test_2
bid = Bid.first
File.open("linkedin.jpg", 'r') do |f|
bid.agreement = f
end
bid.save()
assert_equal bid, bid.versions[1].reify
end
def test_3
bid = Bid.first
bid.remove_agreement!
bid.save()
assert_equal bid, bid.versions[2].reify
end
def test_4
bid = Bid.first
assert_equal bid, bid.versions[2].reify
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment