josevalim-nested_scenarios 0.2 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +1 -1
- data/lib/nested_scenarios/fixtures.rb +16 -5
- metadata +2 -2
data/README
CHANGED
@@ -1,4 +1,14 @@
|
|
1
1
|
class Fixtures < (RUBY_VERSION < '1.9' ? YAML::Omap : Hash)
|
2
|
+
cattr_accessor :current_fixture_path
|
3
|
+
@@all_cached_fixtures = {}
|
4
|
+
|
5
|
+
# Overwrite cache for connection to take into account the current fixture path.
|
6
|
+
def self.cache_for_connection(connection)
|
7
|
+
@@all_cached_fixtures[connection.object_id] ||= {}
|
8
|
+
@@all_cached_fixtures[connection.object_id][@@current_fixture_path] ||= {}
|
9
|
+
@@all_cached_fixtures[connection.object_id][@@current_fixture_path]
|
10
|
+
end
|
11
|
+
|
2
12
|
def self.destroy_fixtures(table_names)
|
3
13
|
NestedScenarios.delete_tables(table_names)
|
4
14
|
end
|
@@ -40,10 +50,10 @@ module ActiveRecord #:nodoc:
|
|
40
50
|
def scenario(scenario_name = nil, options = {})
|
41
51
|
case scenario_name
|
42
52
|
when Hash
|
43
|
-
self.load_root_fixtures = scenario_name.delete(:root)
|
53
|
+
self.load_root_fixtures = scenario_name.delete(:root) if scenario_name.key? :root
|
44
54
|
scenario_name = scenario_name.join('/')
|
45
55
|
when Symbol, String
|
46
|
-
self.load_root_fixtures = options.delete(:root)
|
56
|
+
self.load_root_fixtures = options.delete(:root) if options.key? :root
|
47
57
|
scenario_name = scenario_name.to_s
|
48
58
|
else
|
49
59
|
raise ArgumentError, "Scenario must be a symbol, string or hash. You gave #{scenario_name.class}."
|
@@ -83,10 +93,12 @@ module ActiveRecord #:nodoc:
|
|
83
93
|
@loaded_fixtures = {}
|
84
94
|
|
85
95
|
if self.load_root_fixtures
|
96
|
+
Fixtures.current_fixture_path = self.fixture_path
|
86
97
|
root_fixtures = Fixtures.create_fixtures(self.fixture_path, self.root_table_names, fixture_class_names)
|
87
98
|
end
|
88
99
|
|
89
100
|
if self.scenario_path
|
101
|
+
Fixtures.current_fixture_path = self.scenario_path
|
90
102
|
scenario_fixtures = Fixtures.create_fixtures(self.scenario_path, self.scenario_table_names, fixture_class_names)
|
91
103
|
end
|
92
104
|
|
@@ -106,16 +118,15 @@ module ActiveRecord #:nodoc:
|
|
106
118
|
|
107
119
|
Fixtures.destroy_fixtures(self.fixture_table_names)
|
108
120
|
|
109
|
-
unless
|
121
|
+
unless run_in_transaction?
|
110
122
|
Fixtures.reset_cache
|
111
123
|
end
|
112
124
|
|
113
125
|
# Rollback changes if a transaction is active.
|
114
|
-
if
|
126
|
+
if run_in_transaction? && ActiveRecord::Base.connection.open_transactions != 0
|
115
127
|
ActiveRecord::Base.connection.rollback_db_transaction
|
116
128
|
ActiveRecord::Base.connection.decrement_open_transactions
|
117
129
|
end
|
118
|
-
|
119
130
|
ActiveRecord::Base.clear_active_connections!
|
120
131
|
end
|
121
132
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: josevalim-nested_scenarios
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Jos\xC3\xA9 Valim"
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date:
|
14
|
+
date: 2009-02-22 00:00:00 -08:00
|
15
15
|
default_executable:
|
16
16
|
dependencies: []
|
17
17
|
|