factories 0.1.0 → 0.2.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.
- checksums.yaml +4 -4
- data/README.md +19 -7
- data/lib/factories/version.rb +1 -1
- data/lib/factories.rb +18 -9
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49462fc87b70c002eec2a5bf71e8a2392da86996
|
4
|
+
data.tar.gz: bccbaf079b5b0dc8737f321857c6df240238d9ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31361b6aff21b1f452a8d6ffbc691d5b804ba2147e1f1f97ab397ae5cada9b19bccc39908be44aa0dab3d53403b9038da07868b86661218d4d800d0eca7a45fc
|
7
|
+
data.tar.gz: db6ac7360322730335a5d79d0cf9f368cb8fb957f7140ceb6d99236f93cf11b7ac777e7155a14545b39aad68aeeab52453a1fd9fe8e0ad2d7942e0a9041ef045
|
data/README.md
CHANGED
@@ -24,13 +24,11 @@ class User < ActiveRecord::Base
|
|
24
24
|
validates :name, presence: true
|
25
25
|
end
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
}
|
33
|
-
end
|
27
|
+
Factories.gen :user do
|
28
|
+
def defaults
|
29
|
+
{
|
30
|
+
name: "Nathan"
|
31
|
+
}
|
34
32
|
end
|
35
33
|
end
|
36
34
|
|
@@ -47,6 +45,20 @@ user4 = Factories.build(:user, name: nil)
|
|
47
45
|
user4.valid? # => false
|
48
46
|
```
|
49
47
|
|
48
|
+
If you don't want to use the fancy `#gen` method, the equivilent is:
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
module Factories
|
52
|
+
class UserFactory < BaseFactory
|
53
|
+
def defaults
|
54
|
+
{
|
55
|
+
name: "Nathan"
|
56
|
+
}
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
```
|
61
|
+
|
50
62
|
For the best result, `include Factories` into your test/spec scope.
|
51
63
|
|
52
64
|
An example `spec_helper.rb` could be:
|
data/lib/factories/version.rb
CHANGED
data/lib/factories.rb
CHANGED
@@ -1,21 +1,30 @@
|
|
1
1
|
require "inflecto"
|
2
2
|
|
3
3
|
module Factories
|
4
|
+
def self.gen(name, &blk)
|
5
|
+
klass = Class.new(BaseFactory, &blk)
|
6
|
+
Factories.const_set(factory_class_name_from_string(name).intern, klass)
|
7
|
+
klass
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.class_from_name(name)
|
11
|
+
factory_name = factory_class_name_from_string(name)
|
12
|
+
class_name = "Factories::#{factory_name}"
|
13
|
+
Inflecto.constantize class_name
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.factory_class_name_from_string(name)
|
17
|
+
Inflecto.classify "#{name}_factory"
|
18
|
+
end
|
19
|
+
|
4
20
|
module_function
|
5
21
|
|
6
22
|
def create(name, opts = {})
|
7
|
-
class_from_name(name).create(opts)
|
23
|
+
Factories.class_from_name(name).create(opts)
|
8
24
|
end
|
9
25
|
|
10
26
|
def build(name, opts = {})
|
11
|
-
class_from_name(name).build(opts)
|
12
|
-
end
|
13
|
-
|
14
|
-
def class_from_name(name)
|
15
|
-
class_name = "#{name}_factory"
|
16
|
-
class_name = Inflecto.classify class_name
|
17
|
-
class_name = "Factories::#{class_name}"
|
18
|
-
Inflecto.constantize class_name
|
27
|
+
Factories.class_from_name(name).build(opts)
|
19
28
|
end
|
20
29
|
end
|
21
30
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: factories
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Herald
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -88,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
88
|
version: '0'
|
89
89
|
requirements: []
|
90
90
|
rubyforge_project:
|
91
|
-
rubygems_version: 2.
|
91
|
+
rubygems_version: 2.4.5
|
92
92
|
signing_key:
|
93
93
|
specification_version: 4
|
94
94
|
summary: Super simple way to use build(:author) or create(:book) in your tests.
|