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 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
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 5
4
- :patch: 0
4
+ :patch: 1
@@ -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.model_class.delete_all
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
@@ -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
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: myronmarston-factory_data_preloader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Myron Marston