factory_girl_extensions 2.0.0 → 2.1.0

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/README.markdown CHANGED
@@ -17,7 +17,7 @@ As of version 2.0, factory_girl_extensions now targets the new FactoryGirl 2.0 A
17
17
  ## Usage
18
18
 
19
19
  ```ruby
20
- require 'factory_girl_extensions'
20
+ require 'factory_girl_extensions' # This includes custom methods in every Class. See below to customize this.
21
21
 
22
22
  FactoryGirl.define do
23
23
  factory :user do
@@ -76,6 +76,27 @@ User.generate(:admin, :with_profile, :name => 'Custom name')
76
76
  # User.build and User.attributes also support these custom prefix/suffixes.
77
77
  ```
78
78
 
79
+ ### Extend custom classes with FactoryGirlExtensions
80
+
81
+ When you `require "factory_girl_extensions"`, we include custom methods (build/generate/etc) into
82
+ every class by calling:
83
+
84
+ ```ruby
85
+ require "factory_girl_extensions/core"
86
+
87
+ Class.send :include, FactoryGirlExtensions
88
+ ```
89
+
90
+ If you don't want all of your classes to be polluted with these methods (for example, you only want
91
+ to extend your ActiveRecord::Base classes with these methods), you can simply:
92
+
93
+ ```ruby
94
+ # don't require factory_girl_extensions! require factory_girl_extensions/core instead.
95
+ require "factory_girl_extensions/core"
96
+
97
+ ActiveRecord::Base.send :extend, FactoryGirlExtensions
98
+ ```
99
+
79
100
  ## Why User.gen instead of FactoryGirl(:user)?
80
101
 
81
102
  Personally, I really dislike the `FactoryGirl(:user)` syntax. When you have a lot of
@@ -1,3 +1,3 @@
1
1
  require "factory_girl_extensions/core"
2
2
 
3
- Object.send :extend, FactoryGirl::Syntax::ObjectMethods
3
+ Class.send :include, FactoryGirlExtensions
@@ -1,5 +1,3 @@
1
- require "factory_girl_extensions/version"
2
-
3
1
  module FactoryGirl
4
2
  module Syntax
5
3
 
@@ -149,3 +147,10 @@ module FactoryGirl
149
147
  end
150
148
  end
151
149
  end
150
+
151
+ # Alias FactoryGirl::Syntax::ObjectMethods (which is named to be conventional with the official FactoryGirl syntaxes)
152
+ # to FactoryGirlExtensions so it's easy for users to manually extend custom classes without having to remember the
153
+ # unintuitive name of the real module. We'll deprecate FactoryGirlExtensions if we get this merged into FactoryGirl.
154
+ FactoryGirlExtensions = FactoryGirl::Syntax::ObjectMethods
155
+
156
+ require "factory_girl_extensions/version"
@@ -1,7 +1,7 @@
1
1
  module FactoryGirlExtensions
2
2
  begin
3
3
  old, $VERBOSE = $VERBOSE, nil
4
- VERSION = "2.0.0"
4
+ VERSION = "2.1.0"
5
5
  ensure
6
6
  $VERBOSE = old
7
7
  end
@@ -0,0 +1,37 @@
1
+ require "factory_girl"
2
+ require "factory_girl_extensions"
3
+
4
+ class Dog
5
+ attr_accessor :name, :breed, :is_saved
6
+
7
+ def save
8
+ self.is_saved = "Saved via #save"
9
+ end
10
+
11
+ def save!
12
+ self.is_saved = "Saved via #save!"
13
+ end
14
+ end
15
+
16
+ FactoryGirl.define do
17
+ factory :dog do
18
+ name "Rover"
19
+ breed "Golden Retriever"
20
+ end
21
+ end
22
+
23
+ def print_and_eval_code(code)
24
+ puts ">> #{code}"
25
+ puts "=> #{eval(code).inspect}"
26
+ rescue Exception => ex
27
+ puts "Exception raised: #{ex.inspect}"
28
+ end
29
+
30
+ print_and_eval_code "Dog.build"
31
+ print_and_eval_code "Dog.build(:name => 'Spot')"
32
+ print_and_eval_code "Dog.gen"
33
+ print_and_eval_code "Dog.gen(:name => 'Spot')"
34
+ print_and_eval_code "Dog.gen!"
35
+ print_and_eval_code "Dog.gen!(:name => 'Spot')"
36
+ print_and_eval_code "Dog.attrs"
37
+ print_and_eval_code "'a string'.gen"
@@ -12,7 +12,7 @@ require "rspec"
12
12
 
13
13
  # Example class
14
14
  class Dog
15
- extend FactoryGirl::Syntax::ObjectMethods
15
+ extend FactoryGirlExtensions
16
16
 
17
17
  attr_accessor :name, :saved
18
18
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factory_girl_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-24 00:00:00.000000000 Z
12
+ date: 2012-03-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: factory_girl
16
- requirement: &19502360 !ruby/object:Gem::Requirement
16
+ requirement: &8440440 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '2.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *19502360
24
+ version_requirements: *8440440
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &19501200 !ruby/object:Gem::Requirement
27
+ requirement: &8439800 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *19501200
35
+ version_requirements: *8439800
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &19499300 !ruby/object:Gem::Requirement
38
+ requirement: &8439160 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *19499300
46
+ version_requirements: *8439160
47
47
  description: ! "Alternative FactoryGirl API allowing you to build/generate factories
48
48
  \nusing your class constants, eg. User.gen instead of Factory(:user).\n"
49
49
  email: remi@remitaylor.com
@@ -60,6 +60,7 @@ files:
60
60
  - lib/factory_girl_extensions.rb
61
61
  - lib/factory_girl_extensions/core.rb
62
62
  - lib/factory_girl_extensions/version.rb
63
+ - samples/dog_sample.rb
63
64
  - spec/factory_girl_extensions_spec.rb
64
65
  homepage: http://github.com/remi/factory_girl_extensions
65
66
  licenses: []