myronmarston-factory_data_preloader 0.5.0 → 0.5.1
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.
- data/CHANGELOG.rdoc +4 -0
- data/VERSION.yml +1 -1
- data/lib/factory_data_preloader/factory_data.rb +1 -1
- data/lib/factory_data_preloader/preloader.rb +8 -0
- data/test/preloader_test.rb +33 -0
- metadata +1 -1
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
== 0.5.1 / 2009-07-07
|
2
|
+
|
3
|
+
* Fixed a couple of bugs that caused the data to be preloaded multiple times or deleted multiple times.
|
4
|
+
|
1
5
|
== 0.5.0 / 2009-07-07
|
2
6
|
|
3
7
|
* Added better error handling. The data[:key] = record form is deprecated in favor of data.add(:key) { record }.
|
data/VERSION.yml
CHANGED
@@ -38,7 +38,7 @@ module FactoryDataPreloader
|
|
38
38
|
def delete_preload_data!
|
39
39
|
# Delete them in the reverse order of the dependencies, to handle foreign keys
|
40
40
|
FactoryDataPreloader.requested_preloaders.dependency_order.reverse.each do |preloader|
|
41
|
-
preloader.
|
41
|
+
preloader.delete_table_data!
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
@@ -42,6 +42,7 @@ module FactoryDataPreloader
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def preload!
|
45
|
+
return if preloaded?
|
45
46
|
@data = PreloadedDataHash.new(self)
|
46
47
|
print "Preloading #{model_type}:"
|
47
48
|
benchmark_measurement = Benchmark.measure { self.proc.try(:call, @data) }
|
@@ -52,6 +53,13 @@ module FactoryDataPreloader
|
|
52
53
|
!@data.nil?
|
53
54
|
end
|
54
55
|
|
56
|
+
def delete_table_data!
|
57
|
+
unless @table_data_deleted
|
58
|
+
self.model_class.delete_all
|
59
|
+
@table_data_deleted = true
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
55
63
|
def dependencies
|
56
64
|
self.depends_on.collect { |dependency| AllPreloaders.instance.from_symbol(dependency) }
|
57
65
|
end
|
data/test/preloader_test.rb
CHANGED
@@ -25,6 +25,8 @@ class PreloaderTest < Test::Unit::TestCase
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
+
should_change 'User.count', :by => 2
|
29
|
+
|
28
30
|
should 'return the preloaded data when #get_record is called' do
|
29
31
|
assert_equal 'York', @preloader.get_record(:thom).last_name
|
30
32
|
assert_equal 'Doe', @preloader.get_record(:john).last_name
|
@@ -34,6 +36,37 @@ class PreloaderTest < Test::Unit::TestCase
|
|
34
36
|
assert_equal '', @err
|
35
37
|
assert_match /Preloading users:\.\.\([\d\.]+ secs\)/, @out
|
36
38
|
end
|
39
|
+
|
40
|
+
context 'when preloaded again' do
|
41
|
+
setup do
|
42
|
+
@out, @err = OutputCapturer.capture do
|
43
|
+
@preloader.preload!
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
should 'print nothing' do
|
48
|
+
assert_equal '', @err
|
49
|
+
assert_equal '', @out
|
50
|
+
end
|
51
|
+
|
52
|
+
should_not_change 'User.count'
|
53
|
+
end
|
54
|
+
|
55
|
+
should 'issue a delete statement if #delete_table_data! is called' do
|
56
|
+
User.expects(:delete_all).once
|
57
|
+
@preloader.delete_table_data!
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'when #delete_table_data! is called' do
|
61
|
+
setup do
|
62
|
+
@preloader.delete_table_data!
|
63
|
+
end
|
64
|
+
|
65
|
+
should 'not issue another delete statement if #delete_table_data! is later called on the same preloader' do
|
66
|
+
User.expects(:delete_all).never
|
67
|
+
@preloader.delete_table_data!
|
68
|
+
end
|
69
|
+
end
|
37
70
|
end
|
38
71
|
end
|
39
72
|
|