Skip to content

Commit

Permalink
Added a test with active_storage (issue ActsAsParanoid#103)
Browse files Browse the repository at this point in the history
  • Loading branch information
aymeric-ledorze committed Aug 1, 2018
1 parent b0ca23c commit e8e2c3c
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ pkg
.DS_Store
Gemfile.lock
gemfiles/*.lock
test/tmp
2 changes: 2 additions & 0 deletions gemfiles/active_record_52.gemfile
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
source 'https://rubygems.org'

github 'rails/rails', branch: '5-2-stable' do
gem 'activejob', require: 'active_job'
gem 'activerecord', require: 'active_record'
gem 'activesupport', require: 'active_support'
gem 'activestorage'
end

# Development dependencies
Expand Down
2 changes: 2 additions & 0 deletions gemfiles/active_record_edge.gemfile
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
source 'https://rubygems.org'

github 'rails/rails' do
gem 'activejob', require: 'active_job'
gem 'activerecord', require: 'active_record'
gem 'activesupport', require: 'active_support'
gem 'activestorage'
end

# Development dependencies
Expand Down
1 change: 1 addition & 0 deletions test/fixtures/hello.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Hello, world!
15 changes: 15 additions & 0 deletions test/test_active_storage.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
require 'test_helper'

class ParanoidActiveStorageTest < ParanoidBaseTest
def create_file_blob(filename: "hello.txt", content_type: "text/plain", metadata: nil)
ActiveStorage::Blob.create_after_upload! io: file_fixture(filename).open, filename: filename, content_type: content_type, metadata: metadata
end

def test_paranoid_active_storage
unless ENABLE_ACTIVE_STORAGE
skip 'ActiveStorage is only available for Rails >= 5.2'
end
pt = ParanoidTime.create(:main_file => create_file_blob, :files => [create_file_blob, create_file_blob], :undependent_main_file => create_file_blob, :undependent_files => [create_file_blob, create_file_blob])
pt.destroy
end
end
67 changes: 67 additions & 0 deletions test/test_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,34 @@
require 'acts_as_paranoid'
require 'minitest/autorun'

ENABLE_ACTIVE_STORAGE = ActiveRecord::VERSION::MAJOR > 5 || (ActiveRecord::VERSION::MAJOR == 5 && ActiveRecord::VERSION::MINOR >= 2)
if ENABLE_ACTIVE_STORAGE
# load ActiveStorage
require 'global_id'
ActiveRecord::Base.include(GlobalID::Identification)
GlobalID.app = 'ActsAsParanoid'

ActiveJob::Base.queue_adapter = :test

require 'active_support/cache'

require 'active_storage'
require 'active_storage/attached'
require 'active_storage/service/disk_service'
if ActiveRecord::VERSION::MAJOR >= 6
require 'active_storage/reflection'
ActiveRecord::Base.include(ActiveStorage::Reflection::ActiveRecordExtensions)
ActiveRecord::Reflection.singleton_class.prepend(ActiveStorage::Reflection::ReflectionExtension)
ActiveRecord::Base.include(ActiveStorage::Attached::Model)
else
ActiveRecord::Base.extend(ActiveStorage::Attached::Macros)
end
$: << "#{Gem.loaded_specs['activestorage'].full_gem_path}/app/models/"
Dir.glob("#{Gem.loaded_specs['activestorage'].full_gem_path}/app/models/active_storage/*").each{|f| require f}
Dir.glob("#{Gem.loaded_specs['activestorage'].full_gem_path}/app/jobs/active_storage/*").each{|f| require f}
ActiveStorage::Blob.service = ActiveStorage::Service::DiskService.new(root: 'test/tmp')
end

# Silence deprecation halfway through the test
I18n.enforce_available_locales = true

Expand Down Expand Up @@ -208,6 +236,29 @@ def setup_db

timestamps t
end

if ENABLE_ACTIVE_STORAGE
create_table :active_storage_attachments do |t|
t.string :name, :null => false
t.string :record_type, :null => false
t.bigint :record_id, :null => false
t.bigint :blob_id, :null => false
t.datetime :created_at, :null => false
t.index [:blob_id], :name => "index_active_storage_attachments_on_blob_id"
t.index [:record_type, :record_id, :name, :blob_id], :name => "index_active_storage_attachments_uniqueness", :unique => true
end

create_table :active_storage_blobs do |t|
t.string :key, :null => false
t.string :filename, :null => false
t.string :content_type
t.text :metadata
t.bigint :byte_size, :null => false
t.string :checksum, :null => false
t.datetime :created_at, :null => false
t.index [:key], :name => "index_active_storage_blobs_on_key", :unique => true
end
end
end
end

Expand All @@ -225,6 +276,10 @@ def teardown_db
tables.each { |table| ActiveRecord::Base.connection.drop_table(table) }
end

def clean_active_storage_attachments
Dir.glob('test/tmp/*').each{|f| FileUtils.rm_r(f)}
end

class ParanoidTime < ActiveRecord::Base
acts_as_paranoid

Expand All @@ -238,6 +293,13 @@ class ParanoidTime < ActiveRecord::Base
has_one :has_one_not_paranoid, :dependent => :destroy

belongs_to :not_paranoid, :dependent => :destroy

if ENABLE_ACTIVE_STORAGE
has_one_attached :main_file
has_many_attached :files
has_one_attached :undependent_main_file, :dependent => false
has_many_attached :undependent_files, :dependent => false
end
end

class ParanoidBoolean < ActiveRecord::Base
Expand Down Expand Up @@ -393,6 +455,10 @@ class ParanoidHasManyAsParent < ActiveRecord::Base
end

class ParanoidBaseTest < ActiveSupport::TestCase
if ENABLE_ACTIVE_STORAGE
self.file_fixture_path = 'test/fixtures'
end

def setup
setup_db

Expand All @@ -408,6 +474,7 @@ def setup

def teardown
teardown_db
clean_active_storage_attachments
end

def assert_empty(collection)
Expand Down

0 comments on commit e8e2c3c

Please sign in to comment.