transactional-factories 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +8 -0
- data/README.rdoc +2 -5
- data/VERSION +1 -1
- data/lib/transactional_factories/test_case.rb +1 -0
- data/lib/transactional_factories/test_suite.rb +20 -5
- metadata +4 -3
data/CHANGELOG
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
|
2
|
+
=Version 0.4.0 - 2010-10-29=
|
3
|
+
|
4
|
+
* Added support for testcase.transaction_class method to allow a testcase to specify which connection to use for transactions.
|
5
|
+
|
6
|
+
=Version 0.5.0 - 2010-10-29=
|
7
|
+
|
8
|
+
* Added support for multiple simultaneous transactions. 0.4.0 did not really make any sense without this.
|
data/README.rdoc
CHANGED
@@ -32,13 +32,10 @@ transactional-factories provides self.setup and self.teardown callbacks that are
|
|
32
32
|
|
33
33
|
=== Multiple Database Connections
|
34
34
|
|
35
|
-
If you have an application that connects to multiple databases,
|
35
|
+
If you have an application that connects to multiple databases, transactional-factories needs to create transactions for all of them. This is done at with another class-level accessor: TestCase.transaction_classes. In the example below two transactions (to two different databases) are created:
|
36
36
|
|
37
37
|
class MyModelTest < Test::Unit::TestCase
|
38
|
-
|
39
|
-
# Default is ActiveRecord::Base
|
40
|
-
ModelWithDifferentDatabaseConnection
|
41
|
-
end
|
38
|
+
self.transaction_classes = [ModelWithDifferentDatabaseConnection, ActiveRecord::Base]
|
42
39
|
end
|
43
40
|
|
44
41
|
=== Dependencies
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
@@ -10,16 +10,20 @@ module TransactionalFactories
|
|
10
10
|
raise TransactionalFixturesEnabled, 'transactional-factories does not work with transactional fixtures. Please set use_transactional_fixtures = false.'
|
11
11
|
end
|
12
12
|
end
|
13
|
-
|
13
|
+
transaction_classes = testcase.class.transaction_classes if testcase.class.respond_to?(:transaction_classes)
|
14
|
+
unless transaction_classes.nil? or transaction_classes.is_a?(Enumerable)
|
15
|
+
transaction_classes = [transaction_classes]
|
16
|
+
end
|
17
|
+
transaction_classes ||= [ActiveRecord::Base]
|
18
|
+
|
14
19
|
if @tests.any? { |testcase| testcase.method_name != 'default_test' }
|
15
|
-
|
20
|
+
run_rollback_transactions(transaction_classes) do
|
16
21
|
testcase.class.setup if testcase
|
17
22
|
begin
|
18
23
|
yield(STARTED, name)
|
19
24
|
@tests.each do |test|
|
20
|
-
|
25
|
+
run_rollback_transactions(transaction_classes) do
|
21
26
|
test.run(result, &progress_block)
|
22
|
-
raise ActiveRecord::Rollback
|
23
27
|
end
|
24
28
|
end
|
25
29
|
yield(FINISHED, name)
|
@@ -29,9 +33,20 @@ module TransactionalFactories
|
|
29
33
|
testcase.class.teardown if testcase.class.respond_to?(:teardown)
|
30
34
|
end
|
31
35
|
Timecop.return if defined?(Timecop)
|
32
|
-
raise ActiveRecord::Rollback
|
33
36
|
end
|
34
37
|
end
|
35
38
|
end
|
39
|
+
|
40
|
+
# Recursively setup transactions that roll back...
|
41
|
+
def run_rollback_transactions(transaction_classes, &block)
|
42
|
+
transaction_classes.first.transaction(:requires_new => true) do
|
43
|
+
if transaction_classes.size <= 1
|
44
|
+
yield
|
45
|
+
else
|
46
|
+
run_rollback_transactions(transaction_classes[1..transaction_classes.size-1], &block)
|
47
|
+
end
|
48
|
+
raise ActiveRecord::Rollback
|
49
|
+
end
|
50
|
+
end
|
36
51
|
end
|
37
52
|
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
7
|
+
- 5
|
8
8
|
- 0
|
9
|
-
version: 0.
|
9
|
+
version: 0.5.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Andrew Carpenter
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-11-01 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -56,6 +56,7 @@ extra_rdoc_files:
|
|
56
56
|
- LICENSE-MIT
|
57
57
|
- README.rdoc
|
58
58
|
files:
|
59
|
+
- CHANGELOG
|
59
60
|
- LICENSE-MIT
|
60
61
|
- README.rdoc
|
61
62
|
- Rakefile
|