faker_maker 1.1.8 → 1.2.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.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +7 -0
- data/.rubocop.yml +9 -0
- data/README.md +2 -1
- data/docs/usage/json_field_names.md +32 -4
- data/docs/usage/lifecycle_hooks.md +3 -5
- data/faker_maker.gemspec +4 -2
- data/lib/faker_maker/attribute.rb +1 -1
- data/lib/faker_maker/definition_proxy.rb +1 -1
- data/lib/faker_maker/factory.rb +21 -3
- data/lib/faker_maker/lifecycle_hooks.rb +2 -2
- data/lib/faker_maker/naming/json.rb +12 -0
- data/lib/faker_maker/naming/json_capitalized.rb +12 -0
- data/lib/faker_maker/naming.rb +7 -0
- data/lib/faker_maker/version.rb +1 -1
- data/lib/faker_maker.rb +5 -1
- metadata +15 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d52a9450058657ec1fba8756afa5a965a6f92fcf074ef5d05c0c2b7a1d09ea2
|
4
|
+
data.tar.gz: e0c12b011abd0337a5699a054c44e0b4fc3eb05f385b24a0dd9e54d2864ee611
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d467cdafe73e4ddd1cf0b1677f96c935f28430b09b2580b7a141d674d4c8690f6c850bacb8c2f2c22ad32805e9d2d2e8c86c77f5807a50018d375299f56c70b1
|
7
|
+
data.tar.gz: 4f4ede5c6ac0e3290952e29f03b90855c7112332a32a6ceaebe0d5b8ab54340388698bebcdaadabe390beb55a4ac91597200a8960e668e8fb9f0a276ad9f00e1
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -12,6 +12,7 @@
|
|
12
12
|
<div align="center">
|
13
13
|
|
14
14
|
[](https://badge.fury.io/rb/faker_maker)
|
15
|
+
[](https://rubygems.org/gems/faker_maker)
|
15
16
|

|
16
17
|
[](https://www.codefactor.io/repository/github/billyruffian/faker_maker)
|
17
18
|

|
@@ -20,4 +21,4 @@
|
|
20
21
|
|
21
22
|
FakerMaker is a simple factory builder so you can throw away your fixtures and generate test data instead.
|
22
23
|
|
23
|
-
Read the [documentation here](https://billyruffian.github.io/faker_maker/).
|
24
|
+
Read the [documentation here](https://billyruffian.github.io/faker_maker/).
|
@@ -9,21 +9,49 @@ nav_order: 4
|
|
9
9
|
|
10
10
|
JavaScript likes to use camelCase, Ruby's idiom is to use snake_case. This can make make manipulating factory-built objects in ruby ugly. To avoid this, you can call your fields one thing and ask the JSON outputter to rename the field when generating JSON.
|
11
11
|
|
12
|
+
Faker Maker provides two mechanisms for dealing with this.
|
13
|
+
|
14
|
+
## Factory-wide attribute name re-writing (since 1.1.10)
|
15
|
+
|
16
|
+
Using the `:naming` option to the factory, you can specify a naming strategy. Currently supported are:
|
17
|
+
|
18
|
+
* `:json` camelCase with lowercase first letter
|
19
|
+
* `:json_capitalized` CamelCase with uppercase first letter
|
20
|
+
|
12
21
|
```ruby
|
13
|
-
FakerMaker.factory :vehicle do
|
22
|
+
FakerMaker.factory :vehicle, naming: :json do
|
14
23
|
wheels { 4 }
|
15
24
|
colour { Faker::Color.color_name }
|
16
|
-
engine_capacity
|
25
|
+
engine_capacity { rand( 600..2500 ) }
|
17
26
|
end
|
18
27
|
|
19
28
|
v = FM[:vehicle].build
|
20
29
|
v.engine_capacity = 125
|
30
|
+
|
31
|
+
v.to_json
|
32
|
+
|
33
|
+
=> "{\"wheels\":4,\"colour\":\"blue\",\"engineCapacity\":125}"
|
21
34
|
```
|
22
35
|
|
23
|
-
|
36
|
+
## Per-attribute naming
|
37
|
+
|
38
|
+
You can override the name of the attribute on the individual attribute level.
|
24
39
|
|
25
40
|
```ruby
|
41
|
+
FakerMaker.factory :vehicle do
|
42
|
+
wheels { 4 }
|
43
|
+
colour { Faker::Color.color_name }
|
44
|
+
engine_capacity(json: 'engineCapacity') { rand( 600..2500 ) }
|
45
|
+
end
|
46
|
+
|
47
|
+
v = FM[:vehicle].build
|
48
|
+
v.engine_capacity = 125
|
49
|
+
|
26
50
|
v.to_json
|
27
51
|
|
28
52
|
=> "{\"wheels\":4,\"colour\":\"blue\",\"engineCapacity\":125}"
|
29
|
-
```
|
53
|
+
```
|
54
|
+
|
55
|
+
## Combining the two approaches
|
56
|
+
|
57
|
+
If the factory has a `:naming` strategy defined and an attribute has its own `:json` name defined, the attribute's `:json` name will take precedence.
|
@@ -16,7 +16,7 @@ For instance:
|
|
16
16
|
|
17
17
|
```ruby
|
18
18
|
FakerMaker.factory :user do
|
19
|
-
before_build do
|
19
|
+
before_build do |instance, factory|
|
20
20
|
puts 'Building an instance of User'
|
21
21
|
end
|
22
22
|
|
@@ -24,10 +24,8 @@ FakerMaker.factory :user do
|
|
24
24
|
email {'patsy@fabulous.co.uk'}
|
25
25
|
admin {false}
|
26
26
|
|
27
|
-
after_build do
|
28
|
-
puts "Built an instance of User (#{
|
27
|
+
after_build do |instance, factory|
|
28
|
+
puts "Built an instance of User (#{instance.name})"
|
29
29
|
end
|
30
30
|
end
|
31
31
|
```
|
32
|
-
|
33
|
-
Access to the factory object is through the `faker_maker_factory` method. The instance under construction is available through the `faker_maker_factory.instance` method.
|
data/faker_maker.gemspec
CHANGED
@@ -46,13 +46,15 @@ Gem::Specification.new do |spec|
|
|
46
46
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
47
47
|
spec.add_development_dependency 'faker', '~> 2.1'
|
48
48
|
spec.add_development_dependency 'guard', '~> 2.16'
|
49
|
-
spec.add_development_dependency 'guard-bundler', '~>
|
49
|
+
spec.add_development_dependency 'guard-bundler', '~> 3.0'
|
50
50
|
spec.add_development_dependency 'guard-rubocop', '~> 1.3'
|
51
51
|
spec.add_development_dependency 'guard-rspec', '~> 4.7'
|
52
52
|
spec.add_development_dependency 'pry', '~> 0.12'
|
53
53
|
spec.add_development_dependency 'rake', '~> 13.0'
|
54
54
|
spec.add_development_dependency 'rspec', '~> 3.8'
|
55
|
-
spec.add_development_dependency 'rubocop', '~> 0
|
55
|
+
spec.add_development_dependency 'rubocop', '~> 1.0'
|
56
56
|
spec.add_development_dependency 'simplecov', '~> 0.16'
|
57
57
|
spec.add_development_dependency 'coveralls', '~> 0.8'
|
58
|
+
|
59
|
+
spec.required_ruby_version = '>= 2.6'
|
58
60
|
end
|
@@ -13,7 +13,7 @@ module FakerMaker
|
|
13
13
|
@factory
|
14
14
|
end
|
15
15
|
|
16
|
-
def method_missing(name, *args, &block)
|
16
|
+
def method_missing(name, *args, &block)
|
17
17
|
attribute = FakerMaker::Attribute.new name, block, *args
|
18
18
|
@factory.attach_attribute attribute
|
19
19
|
end
|
data/lib/faker_maker/factory.rb
CHANGED
@@ -10,6 +10,16 @@ module FakerMaker
|
|
10
10
|
assert_valid_options options
|
11
11
|
@name = name.respond_to?(:to_sym) ? name.to_sym : name.to_s.underscore.to_sym
|
12
12
|
@class_name = (options[:class] || @name).to_s.camelcase
|
13
|
+
@naming_strategy = case options[:naming]
|
14
|
+
when :json
|
15
|
+
FakerMaker::Naming::JSON
|
16
|
+
when :json_capitalized, :json_capitalised
|
17
|
+
FakerMaker::Naming::JSONCapitalized
|
18
|
+
when nil
|
19
|
+
nil
|
20
|
+
else
|
21
|
+
raise FakerMaker::NoSuchAttributeNamingStrategy, opttions[:naming]
|
22
|
+
end
|
13
23
|
@attributes = []
|
14
24
|
@klass = nil
|
15
25
|
@parent = options[:parent]
|
@@ -32,6 +42,7 @@ module FakerMaker
|
|
32
42
|
end
|
33
43
|
|
34
44
|
def build( attributes = {} )
|
45
|
+
@instance = nil
|
35
46
|
before_build if respond_to? :before_build
|
36
47
|
assert_only_known_attributes_for_override( attributes )
|
37
48
|
populate_instance instance, attributes
|
@@ -67,7 +78,14 @@ module FakerMaker
|
|
67
78
|
@json_key_map = {}.with_indifferent_access
|
68
79
|
@json_key_map.merge!( FakerMaker[parent].json_key_map ) if parent?
|
69
80
|
attributes.each_with_object( @json_key_map ) do |attr, map|
|
70
|
-
key = attr.translation?
|
81
|
+
key = if attr.translation?
|
82
|
+
attr.translation
|
83
|
+
elsif @naming_strategy
|
84
|
+
@naming_strategy.name(attr.name)
|
85
|
+
else
|
86
|
+
attr.name
|
87
|
+
end
|
88
|
+
|
71
89
|
map[attr.name] = key
|
72
90
|
end
|
73
91
|
end
|
@@ -85,7 +103,7 @@ module FakerMaker
|
|
85
103
|
end
|
86
104
|
|
87
105
|
def find_attribute( name = '' )
|
88
|
-
attributes.filter { |a| [a.name, a.translation].include? name }.first
|
106
|
+
attributes.filter { |a| [a.name, a.translation, @naming_strategy&.name(a.name)].include? name }.first
|
89
107
|
end
|
90
108
|
|
91
109
|
protected
|
@@ -142,7 +160,7 @@ module FakerMaker
|
|
142
160
|
end
|
143
161
|
|
144
162
|
def assert_valid_options( options )
|
145
|
-
options.assert_valid_keys :class, :parent
|
163
|
+
options.assert_valid_keys :class, :parent, :naming
|
146
164
|
end
|
147
165
|
end
|
148
166
|
end
|
@@ -5,11 +5,11 @@ module FakerMaker
|
|
5
5
|
# Lifecycle hooks which can be called during the building of an instance
|
6
6
|
module DefinitionProxy
|
7
7
|
def before_build(&block)
|
8
|
-
@factory.define_singleton_method(:before_build) {
|
8
|
+
@factory.define_singleton_method(:before_build) { yield(self.instance, self) }
|
9
9
|
end
|
10
10
|
|
11
11
|
def after_build(&block)
|
12
|
-
@factory.define_singleton_method(:after_build) {
|
12
|
+
@factory.define_singleton_method(:after_build) { yield(self.instance, self) }
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
data/lib/faker_maker/version.rb
CHANGED
data/lib/faker_maker.rb
CHANGED
@@ -9,7 +9,10 @@ require 'faker_maker/base'
|
|
9
9
|
require 'faker_maker/lifecycle_hooks'
|
10
10
|
require 'faker_maker/definition_proxy'
|
11
11
|
require 'faker_maker/factory'
|
12
|
-
|
12
|
+
|
13
|
+
require 'faker_maker/naming'
|
14
|
+
require 'faker_maker/naming/json'
|
15
|
+
require 'faker_maker/naming/json_capitalized'
|
13
16
|
require 'faker_maker/version'
|
14
17
|
|
15
18
|
# FakerMaker module for generating Fakes
|
@@ -19,6 +22,7 @@ module FakerMaker
|
|
19
22
|
class Error < StandardError; end
|
20
23
|
class NoSuchFactoryError < StandardError; end
|
21
24
|
class NoSuchAttributeError < StandardError; end
|
25
|
+
class NoSuchAttributeNamingStrategy < StandardError; end
|
22
26
|
# Your code goes here...
|
23
27
|
|
24
28
|
module_function
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: faker_maker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nigel Brookes-Thomas
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-11-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -78,14 +78,14 @@ dependencies:
|
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
81
|
+
version: '3.0'
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
88
|
+
version: '3.0'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: guard-rubocop
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -162,14 +162,14 @@ dependencies:
|
|
162
162
|
requirements:
|
163
163
|
- - "~>"
|
164
164
|
- !ruby/object:Gem::Version
|
165
|
-
version: '0
|
165
|
+
version: '1.0'
|
166
166
|
type: :development
|
167
167
|
prerelease: false
|
168
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
169
|
requirements:
|
170
170
|
- - "~>"
|
171
171
|
- !ruby/object:Gem::Version
|
172
|
-
version: '0
|
172
|
+
version: '1.0'
|
173
173
|
- !ruby/object:Gem::Dependency
|
174
174
|
name: simplecov
|
175
175
|
requirement: !ruby/object:Gem::Requirement
|
@@ -208,6 +208,7 @@ extra_rdoc_files: []
|
|
208
208
|
files:
|
209
209
|
- ".circleci/config.yml"
|
210
210
|
- ".coveralls.yml"
|
211
|
+
- ".github/dependabot.yml"
|
211
212
|
- ".gitignore"
|
212
213
|
- ".rspec"
|
213
214
|
- ".rubocop.yml"
|
@@ -246,6 +247,9 @@ files:
|
|
246
247
|
- lib/faker_maker/definition_proxy.rb
|
247
248
|
- lib/faker_maker/factory.rb
|
248
249
|
- lib/faker_maker/lifecycle_hooks.rb
|
250
|
+
- lib/faker_maker/naming.rb
|
251
|
+
- lib/faker_maker/naming/json.rb
|
252
|
+
- lib/faker_maker/naming/json_capitalized.rb
|
249
253
|
- lib/faker_maker/version.rb
|
250
254
|
homepage: https://billyruffian.github.io/faker_maker/
|
251
255
|
licenses:
|
@@ -254,7 +258,7 @@ metadata:
|
|
254
258
|
homepage_uri: https://billyruffian.github.io/faker_maker/
|
255
259
|
source_code_uri: https://github.com/BillyRuffian/faker_maker
|
256
260
|
changelog_uri: https://github.com/BillyRuffian/faker_maker/releases
|
257
|
-
post_install_message:
|
261
|
+
post_install_message:
|
258
262
|
rdoc_options: []
|
259
263
|
require_paths:
|
260
264
|
- lib
|
@@ -262,15 +266,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
262
266
|
requirements:
|
263
267
|
- - ">="
|
264
268
|
- !ruby/object:Gem::Version
|
265
|
-
version: '
|
269
|
+
version: '2.6'
|
266
270
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
267
271
|
requirements:
|
268
272
|
- - ">="
|
269
273
|
- !ruby/object:Gem::Version
|
270
274
|
version: '0'
|
271
275
|
requirements: []
|
272
|
-
rubygems_version: 3.
|
273
|
-
signing_key:
|
276
|
+
rubygems_version: 3.2.22
|
277
|
+
signing_key:
|
274
278
|
specification_version: 4
|
275
279
|
summary: FakerMaker bakes fakes.
|
276
280
|
test_files: []
|