acidic_job 1.0.0.pre7 → 1.0.0.pre8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/acidic_job/test_case.rb +53 -2
- data/lib/acidic_job/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ed45351f35a4450eebc153e9bff2eba2a8c5cd1dcf5b121f9fa9c9e5e910936
|
4
|
+
data.tar.gz: a4eff2b6a54ab1e89fab5b548022e3104540e118694f45bc42ebaf6b8e5cadb1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79ebea1341fcab4b84b4534b0a6aa468c1b1b96813bd687744c5caff97050ec62a2af51f6c89b8631801774b06babfb5044233b5e060383051bc33ff4bc8338c
|
7
|
+
data.tar.gz: b10c9a7c05c8bd4079a35f865a1c31cef193ccfd2219718cb0df453272211ad2c62772db14763e4244752f6c2c8666a3ef5eb512b07bff7ffa75325d41ccf68e
|
data/Gemfile.lock
CHANGED
data/lib/acidic_job/test_case.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "active_job/test_case"
|
4
|
-
require "database_cleaner
|
4
|
+
require "database_cleaner"
|
5
5
|
|
6
6
|
module AcidicJob
|
7
7
|
class TestCase < ActiveJob::TestCase
|
8
|
-
self.use_transactional_tests = false
|
8
|
+
self.use_transactional_tests = false if respond_to?(:use_transactional_tests)
|
9
9
|
|
10
10
|
def before_setup
|
11
|
+
@original_cleaners = DatabaseCleaner.cleaners
|
12
|
+
DatabaseCleaner.cleaners = transaction_free_cleaners_for(@original_cleaners)
|
11
13
|
super
|
12
14
|
DatabaseCleaner.start
|
13
15
|
end
|
@@ -15,6 +17,55 @@ module AcidicJob
|
|
15
17
|
def after_teardown
|
16
18
|
DatabaseCleaner.clean
|
17
19
|
super
|
20
|
+
DatabaseCleaner.cleaners = @original_cleaners
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
# Ensure that the system's original DatabaseCleaner configuration is maintained, options included,
|
26
|
+
# except that any `transaction` strategies for any ORMs are replaced with a `deletion` strategy.
|
27
|
+
def transaction_free_cleaners_for(original_cleaners)
|
28
|
+
non_transaction_cleaners = original_cleaners.dup.map do |(orm, opts), cleaner|
|
29
|
+
[[orm, opts], ensure_no_transaction_strategies_for(cleaner)]
|
30
|
+
end.to_h
|
31
|
+
DatabaseCleaner::Cleaners.new(non_transaction_cleaners)
|
32
|
+
end
|
33
|
+
|
34
|
+
def ensure_no_transaction_strategies_for(cleaner)
|
35
|
+
return cleaner unless strategy_name_for(cleaner) == "transaction"
|
36
|
+
|
37
|
+
cleaner.strategy = deletion_strategy_for(cleaner)
|
38
|
+
cleaner
|
39
|
+
end
|
40
|
+
|
41
|
+
def strategy_name_for(cleaner)
|
42
|
+
cleaner # <DatabaseCleaner::Cleaner>
|
43
|
+
.strategy # <DatabaseCleaner::ActiveRecord::Truncation>
|
44
|
+
.class # DatabaseCleaner::ActiveRecord::Truncation
|
45
|
+
.name # "DatabaseCleaner::ActiveRecord::Truncation"
|
46
|
+
.rpartition("::") # ["DatabaseCleaner::ActiveRecord", "::", "Truncation"]
|
47
|
+
.last # "Truncation"
|
48
|
+
.downcase # "truncation"
|
49
|
+
end
|
50
|
+
|
51
|
+
def deletion_strategy_for(cleaner)
|
52
|
+
strategy = cleaner.strategy
|
53
|
+
strategy_namespace = strategy # <DatabaseCleaner::ActiveRecord::Truncation>
|
54
|
+
.class # DatabaseCleaner::ActiveRecord::Truncation
|
55
|
+
.name # "DatabaseCleaner::ActiveRecord::Truncation"
|
56
|
+
.rpartition("::") # ["DatabaseCleaner::ActiveRecord", "::", "Truncation"]
|
57
|
+
.first # "DatabaseCleaner::ActiveRecord"
|
58
|
+
deletion_strategy_class_name = [strategy_namespace, "::", "Deletion"].join
|
59
|
+
deletion_strategy_class = deletion_strategy_class_name.constantize
|
60
|
+
instance_variable_hash = strategy.instance_variables.map do |var|
|
61
|
+
[
|
62
|
+
var.to_s.remove("@"),
|
63
|
+
strategy.instance_variable_get(var)
|
64
|
+
]
|
65
|
+
end.to_h
|
66
|
+
options = instance_variable_hash.except("db", "connection_class")
|
67
|
+
|
68
|
+
deletion_strategy_class.new(**options)
|
18
69
|
end
|
19
70
|
end
|
20
71
|
end
|
data/lib/acidic_job/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acidic_job
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.pre8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- fractaledmind
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-03-
|
11
|
+
date: 2022-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|