factory_boy 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -105,12 +105,20 @@ As with factory_girl you are able to use sequences, like that :
105
105
  == Dependencies
106
106
 
107
107
  No dependency.
108
- Not tested with rails 3
108
+ Doesn't work, for now, with Active Support 3.0 (In development)
109
109
 
110
+ == In Development
111
+
112
+ - Stubs only find of Plant class so we can use both AR find on klasses that are not 'planted'
113
+ - Plant(:xx).clear
114
+ - Provide an id to each Plant
115
+ - When assign instance to an association(ie profile of user), set foreign_key id (ie profile_id of user)
116
+ - To work with Rails 3 (Active Support 3)
110
117
 
111
118
  == Change Log
112
119
 
113
120
  FIX : Push new object in pool of a class doesn't override objects in pool. Safe push.
121
+ FIX : Use #clone instead of #dup. Not same behavior with and without rails(may be overriden by active support)
114
122
 
115
123
  == Notes
116
124
 
@@ -3,30 +3,30 @@ begin
3
3
  rescue LoadError
4
4
  end
5
5
 
6
- module Test
7
- module Unit
8
- class TestCase
9
- alias_method :original_run, :run
10
-
11
- def run(result,&block)
12
- Plant.destroy
13
- original_run(result,&block)
14
- Plant.unstub_find_for_each_class
15
- end
16
- end
6
+ module Plant
7
+ module Run
8
+ def run(result,&block)
9
+ Plant.destroy
10
+ original_run(result,&block)
11
+ Plant.unstub_find_for_each_class
17
12
  end
13
+ end
18
14
  end
19
15
 
20
16
  if defined?(ActiveSupport::TestCase)
21
17
  module ActiveSupport
22
- class TestCase
23
- alias_method :original_run, :run
24
-
25
- def run(result,&block)
26
- Plant.destroy
27
- original_run(result,&block)
28
- Plant.unstub_find_for_each_class
18
+ class TestCase < ::Test::Unit::TestCase
19
+ alias_method :original_run, :run
20
+ include Plant::Run
21
+ end
22
+ end
23
+ else
24
+ module Test
25
+ module Unit
26
+ class TestCase
27
+ alias_method :original_run, :run
28
+ include Plant::Run
29
29
  end
30
30
  end
31
31
  end
32
- end
32
+ end
@@ -1,7 +1,7 @@
1
1
  Object.const_set("RAILS_ROOT", File.join(File.dirname(__FILE__), '../') )
2
2
 
3
+ require 'rubygems'
3
4
  require 'test/unit'
4
- require 'plant'
5
5
  require 'models/adress'
6
6
  require 'models/user'
7
7
  require 'models/profile'
@@ -0,0 +1,115 @@
1
+ module PlantTests
2
+ def setup
3
+ assert_find_is_unstubbed_for_each_class
4
+ Plant(:customer)
5
+ end
6
+
7
+ def test_define_simple_definition
8
+ assert customer = Plant(:customer)
9
+ assert_nil customer.name
10
+ end
11
+
12
+ def test_define_assign_attributes
13
+ user = Plant(:user)
14
+ assert_equal "Zorro", user.name
15
+ assert_equal 800, user.age
16
+ end
17
+
18
+ def test_define_stubs_find_without_parameter
19
+ user = Plant(:user)
20
+ assert_equal user, User.find
21
+ end
22
+
23
+ def test_define_stubs_find_with_array_result
24
+ 2.times { Plant(:user) }
25
+ assert_equal 2, User.find(:all).size
26
+ end
27
+
28
+ def test_define_with_association_has_one
29
+ user = Plant(:user)
30
+ profile = Profile.find
31
+ assert_equal profile, user.profile
32
+ end
33
+
34
+ def test_define_with_association_has_many
35
+ user = Plant(:user)
36
+ assert adresses = user.adresses
37
+ adress = Adress.find
38
+ assert_equal adress, user.adresses.first
39
+ end
40
+
41
+ def test_stubs_find_with_option_all
42
+ user = Plant(:user)
43
+ users = User.find(:all)
44
+ assert_equal [user], users
45
+ end
46
+
47
+ def test_find_all_must_return_an_empty_array_if_no_object
48
+ users = User.find(:all)
49
+ assert_equal [], users
50
+ end
51
+
52
+ def test_stubs_find_with_option_first
53
+ users = 3.times.map { Plant(:user) }
54
+ assert_equal users.first, User.find(:first)
55
+ end
56
+
57
+ def test_stubs_find_with_option_last
58
+ users = 3.times.map { Plant(:user) }
59
+ assert_equal users.last, User.find(:last)
60
+ end
61
+
62
+ def test_mocha_is_not_overidden_with_plant_setup
63
+ Plant.expects(:pool).once
64
+ Plant(:user)
65
+ end
66
+
67
+ def test_create_plant_with_hash_for_values
68
+ adress = Plant(:adress)
69
+ user = Plant(:user, :name => "Marie", :adresses => [adress])
70
+ assert_equal "Marie", user.name
71
+ assert_equal adress, user.adresses.first
72
+ end
73
+
74
+ def test_define_with_class_option
75
+ Plant.define :marie, :class => User do |peter|
76
+ peter.name = "Marie"
77
+ peter.adresses = [Adress.new(:street => "Rue de Brest")]
78
+ end
79
+ marie = Plant(:marie)
80
+ assert_equal "Marie", marie.name
81
+ assert_equal "Rue de Brest", marie.adresses.first.street
82
+ end
83
+
84
+ def test_plants_are_reloaded_and_4_plants_are_defined
85
+ assert_equal 4, Plant.plants.size
86
+ end
87
+
88
+ def test_define_with_dependent_attribute
89
+ Plant.define :user do |user|
90
+ user.name = "Marie"
91
+ user.adresses = [Adress.new(:street => "Rue de #{user.name}")]
92
+ end
93
+ assert_equal "Rue de Marie", Plant(:user).adresses.first.street
94
+ end
95
+
96
+ def test_plant_sequences
97
+ assert_equal "incognito1@kantena.com", Plant.next(:email)
98
+ assert_equal "incognito2@kantena.com", Plant.next(:email)
99
+ end
100
+
101
+ def test_creation_of_two_plants_of_same_class_should_keep_each_object_safe
102
+ user_1 = Plant(:user, :name => "Elise")
103
+ user_2 = Plant(:user, :name => "Vincent")
104
+
105
+ assert_equal "Elise", user_1.name
106
+ assert_equal "Vincent", user_2.name
107
+ end
108
+
109
+ private
110
+
111
+ def assert_find_is_unstubbed_for_each_class
112
+ [Adress, Customer, Profile, User].each {|klass| assert_equal "original_find", klass.find }
113
+ end
114
+
115
+ end
@@ -1,118 +1,7 @@
1
1
  require 'help_test'
2
+ require 'plant'
3
+ require 'plant_tests'
2
4
 
3
5
  class PlantTest < Test::Unit::TestCase
4
-
5
- def setup
6
- assert_find_is_unstubbed_for_each_class
7
- Plant(:customer)
8
- end
9
-
10
- def test_define_simple_definition
11
- assert customer = Plant(:customer)
12
- assert_nil customer.name
13
- end
14
-
15
- def test_define_assign_attributes
16
- user = Plant(:user)
17
- assert_equal "Zorro", user.name
18
- assert_equal 800, user.age
19
- end
20
-
21
- def test_define_stubs_find_without_parameter
22
- user = Plant(:user)
23
- assert_equal user, User.find
24
- end
25
-
26
- def test_define_stubs_find_with_array_result
27
- 2.times { Plant(:user) }
28
- assert_equal 2, User.find(:all).size
29
- end
30
-
31
- def test_define_with_association_has_one
32
- user = Plant(:user)
33
- profile = Profile.find
34
- assert_equal profile, user.profile
35
- end
36
-
37
- def test_define_with_association_has_many
38
- user = Plant(:user)
39
- assert adresses = user.adresses
40
- adress = Adress.find
41
- assert_equal adress, user.adresses.first
42
- end
43
-
44
- def test_stubs_find_with_option_all
45
- user = Plant(:user)
46
- users = User.find(:all)
47
- assert_equal [user], users
48
- end
49
-
50
- def test_find_all_must_return_an_empty_array_if_no_object
51
- users = User.find(:all)
52
- assert_equal [], users
53
- end
54
-
55
- def test_stubs_find_with_option_first
56
- users = 3.times.map { Plant(:user) }
57
- assert_equal users.first, User.find(:first)
58
- end
59
-
60
- def test_stubs_find_with_option_last
61
- users = 3.times.map { Plant(:user) }
62
- assert_equal users.last, User.find(:last)
63
- end
64
-
65
- def test_mocha_is_not_overidden_with_plant_setup
66
- Plant.expects(:pool).once
67
- Plant(:user)
68
- end
69
-
70
- def test_create_plant_with_hash_for_values
71
- adress = Plant(:adress)
72
- user = Plant(:user, :name => "Marie", :adresses => [adress])
73
- assert_equal "Marie", user.name
74
- assert_equal adress, user.adresses.first
75
- end
76
-
77
- def test_define_with_class_option
78
- Plant.define :marie, :class => User do |peter|
79
- peter.name = "Marie"
80
- peter.adresses = [Adress.new(:street => "Rue de Brest")]
81
- end
82
- marie = Plant(:marie)
83
- assert_equal "Marie", marie.name
84
- assert_equal "Rue de Brest", marie.adresses.first.street
85
- end
86
-
87
- def test_plants_are_reloaded_and_4_plants_are_defined
88
- assert_equal 4, Plant.plants.size
89
- end
90
-
91
- def test_define_with_dependent_attribute
92
- Plant.define :user do |user|
93
- user.name = "Marie"
94
- user.adresses = [Adress.new(:street => "Rue de #{user.name}")]
95
- end
96
- assert_equal "Rue de Marie", Plant(:user).adresses.first.street
97
- end
98
-
99
- def test_plant_sequences
100
- assert_equal "incognito1@kantena.com", Plant.next(:email)
101
- assert_equal "incognito2@kantena.com", Plant.next(:email)
102
- end
103
-
104
- def test_creation_of_two_plants_of_same_class_should_keep_each_object_safe
105
- user_1 = Plant(:user, :name => "Elise")
106
- user_2 = Plant(:user, :name => "Vincent")
107
-
108
- assert_equal "Elise", user_1.name
109
- assert_equal "Vincent", user_2.name
110
- end
111
-
112
- private
113
-
114
- def assert_find_is_unstubbed_for_each_class
115
- [Adress, Customer, Profile, User].each {|klass| assert_equal "original_find", klass.find }
116
- end
117
-
6
+ include PlantTests
118
7
  end
@@ -0,0 +1,8 @@
1
+ require 'help_test'
2
+ require 'active_support/test_case'
3
+ require 'plant'
4
+ require 'plant_tests'
5
+
6
+ class PlantTest < ActiveSupport::TestCase
7
+ include PlantTests
8
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factory_boy
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 4
10
- version: 1.0.4
9
+ - 5
10
+ version: 1.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Philippe Cantin
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-06 00:00:00 +02:00
18
+ date: 2010-10-21 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -38,8 +38,10 @@ files:
38
38
  - test/models/customer.rb
39
39
  - test/models/profile.rb
40
40
  - test/models/user.rb
41
+ - test/plant_tests.rb
41
42
  - test/plants.rb
42
43
  - test/test_plant.rb
44
+ - test/test_plant_with_active_support.rb
43
45
  has_rdoc: true
44
46
  homepage: http://github.com/anoiaque/factory_boy
45
47
  licenses: []
@@ -80,5 +82,7 @@ test_files:
80
82
  - test/models/customer.rb
81
83
  - test/models/profile.rb
82
84
  - test/models/user.rb
85
+ - test/plant_tests.rb
83
86
  - test/plants.rb
84
87
  - test/test_plant.rb
88
+ - test/test_plant_with_active_support.rb