faker_maker 1.1.9 → 1.1.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +9 -0
- data/README.md +2 -1
- data/docs/usage/json_field_names.md +32 -4
- data/faker_maker.gemspec +3 -1
- data/lib/faker_maker.rb +5 -1
- data/lib/faker_maker/definition_proxy.rb +1 -1
- data/lib/faker_maker/factory.rb +19 -2
- data/lib/faker_maker/naming.rb +7 -0
- data/lib/faker_maker/naming/json.rb +12 -0
- data/lib/faker_maker/naming/json_capitalized.rb +12 -0
- data/lib/faker_maker/version.rb +1 -1
- metadata +12 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b3913f6f52a9519d1b25770428e7a4789845c9115f9b34ffac7347141d80c6c
|
4
|
+
data.tar.gz: edf41922350fa0ea7a28561822ed834edddd724ac82f6ecb6bb89fdba18d5c4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3d6f954a378a1198f4523e188208059b2d2859b2af0ab0e2d89a00373ee03c5a1baca7289b8c0538bee03652963b361450435efa13dfab7dbd84f68945c6c6a
|
7
|
+
data.tar.gz: ea8fed86a1715e39245e5459f70c293b02febf76c4b806858ebddd0d4879dac7d07caadd565d32396165747d355d7099c428258c48526d72e0586114342b86b2
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -12,6 +12,7 @@
|
|
12
12
|
<div align="center">
|
13
13
|
|
14
14
|
[![Gem Version](https://badge.fury.io/rb/faker_maker.svg)](https://badge.fury.io/rb/faker_maker)
|
15
|
+
[![Downloads](https://img.shields.io/gem/dt/faker_maker)](https://rubygems.org/gems/faker_maker)
|
15
16
|
![CircleCI branch](https://img.shields.io/circleci/project/github/BillyRuffian/faker_maker/master.svg?style=flat-square)
|
16
17
|
[![CodeFactor](https://www.codefactor.io/repository/github/billyruffian/faker_maker/badge?style=flat-square)](https://www.codefactor.io/repository/github/billyruffian/faker_maker)
|
17
18
|
![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/BillyRuffian/faker_maker.svg?style=flat-square)
|
@@ -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.
|
data/faker_maker.gemspec
CHANGED
@@ -52,7 +52,9 @@ Gem::Specification.new do |spec|
|
|
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
|
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
|
@@ -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]
|
@@ -68,7 +78,14 @@ module FakerMaker
|
|
68
78
|
@json_key_map = {}.with_indifferent_access
|
69
79
|
@json_key_map.merge!( FakerMaker[parent].json_key_map ) if parent?
|
70
80
|
attributes.each_with_object( @json_key_map ) do |attr, map|
|
71
|
-
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
|
+
|
72
89
|
map[attr.name] = key
|
73
90
|
end
|
74
91
|
end
|
@@ -143,7 +160,7 @@ module FakerMaker
|
|
143
160
|
end
|
144
161
|
|
145
162
|
def assert_valid_options( options )
|
146
|
-
options.assert_valid_keys :class, :parent
|
163
|
+
options.assert_valid_keys :class, :parent, :naming
|
147
164
|
end
|
148
165
|
end
|
149
166
|
end
|
data/lib/faker_maker/version.rb
CHANGED
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.1.10
|
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: 2020-
|
11
|
+
date: 2020-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -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
|
@@ -246,6 +246,9 @@ files:
|
|
246
246
|
- lib/faker_maker/definition_proxy.rb
|
247
247
|
- lib/faker_maker/factory.rb
|
248
248
|
- lib/faker_maker/lifecycle_hooks.rb
|
249
|
+
- lib/faker_maker/naming.rb
|
250
|
+
- lib/faker_maker/naming/json.rb
|
251
|
+
- lib/faker_maker/naming/json_capitalized.rb
|
249
252
|
- lib/faker_maker/version.rb
|
250
253
|
homepage: https://billyruffian.github.io/faker_maker/
|
251
254
|
licenses:
|
@@ -254,7 +257,7 @@ metadata:
|
|
254
257
|
homepage_uri: https://billyruffian.github.io/faker_maker/
|
255
258
|
source_code_uri: https://github.com/BillyRuffian/faker_maker
|
256
259
|
changelog_uri: https://github.com/BillyRuffian/faker_maker/releases
|
257
|
-
post_install_message:
|
260
|
+
post_install_message:
|
258
261
|
rdoc_options: []
|
259
262
|
require_paths:
|
260
263
|
- lib
|
@@ -262,15 +265,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
262
265
|
requirements:
|
263
266
|
- - ">="
|
264
267
|
- !ruby/object:Gem::Version
|
265
|
-
version: '
|
268
|
+
version: '2.6'
|
266
269
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
267
270
|
requirements:
|
268
271
|
- - ">="
|
269
272
|
- !ruby/object:Gem::Version
|
270
273
|
version: '0'
|
271
274
|
requirements: []
|
272
|
-
rubygems_version: 3.1.
|
273
|
-
signing_key:
|
275
|
+
rubygems_version: 3.1.4
|
276
|
+
signing_key:
|
274
277
|
specification_version: 4
|
275
278
|
summary: FakerMaker bakes fakes.
|
276
279
|
test_files: []
|