faker_maker 1.0.0 → 1.0.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/.circleci/config.yml +13 -0
- data/.gitignore +3 -0
- data/.rubocop.yml +13 -2
- data/Gemfile +1 -1
- data/README.md +6 -1
- data/Rakefile +3 -3
- data/bin/console +4 -4
- data/faker_maker.gemspec +12 -8
- data/lib/faker_maker/attribute.rb +5 -5
- data/lib/faker_maker/base.rb +2 -2
- data/lib/faker_maker/definition_proxy.rb +9 -6
- data/lib/faker_maker/factory.rb +43 -30
- data/lib/faker_maker/version.rb +1 -1
- data/lib/faker_maker.rb +6 -5
- metadata +25 -19
- data/test.rb +0 -61
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fee4b085d7597c65882a322c750393492922c22653b66bb5c4b2e2da064c85be
|
4
|
+
data.tar.gz: ad9fa43a58aefcba71b1beaa0a2a53ebbf200644b01f9cfd568f234d665d1631
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14dd70aa6b4cdac5402e1603073bd018dbd699b23181ef8294c8ea5ec3b759d8e6dc6fffcccec30f66e3b34d764c975e6c899b8703027f94ffbdf4b4e53ae2f5
|
7
|
+
data.tar.gz: '083a7808d7c4c8d8830b1c02595192f9f72aef08880918d9667e7f63e8d5749f42878f239f24443aa4c680b7f5d6cce8f39b1992be1c50bde782f9b02f4a71ca'
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# Use the latest 2.1 version of CircleCI pipeline processing engine, see https://circleci.com/docs/2.0/configuration-reference/
|
2
|
+
version: 2.1
|
3
|
+
|
4
|
+
jobs:
|
5
|
+
build:
|
6
|
+
docker:
|
7
|
+
- image: circleci/ruby:2.6.3-stretch-node
|
8
|
+
steps:
|
9
|
+
- checkout
|
10
|
+
- run: gem update --system
|
11
|
+
- run: gem install bundler
|
12
|
+
- run: bundle install
|
13
|
+
- run: bundle exec rake spec
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
Layout/SpaceInsideParens:
|
2
2
|
Enabled: false
|
3
|
-
|
3
|
+
|
4
4
|
Metrics/LineLength:
|
5
|
-
Max: 120
|
5
|
+
Max: 120
|
6
|
+
|
7
|
+
Metrics/ModuleLength:
|
8
|
+
Exclude:
|
9
|
+
- "**/*_spec.rb"
|
10
|
+
|
11
|
+
Metrics/BlockLength:
|
12
|
+
Exclude:
|
13
|
+
- "**/*_spec.rb"
|
14
|
+
|
15
|
+
Layout/TrailingWhitespace:
|
16
|
+
Enabled: false
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
|
2
|
+

|
3
|
+
[](https://www.codefactor.io/repository/github/billyruffian/faker_maker)
|
4
|
+

|
5
|
+
|
1
6
|
# FakerMaker
|
2
7
|
|
3
8
|
FakerMaker is a simple fixture generator with a concise and straightforward syntax.
|
@@ -155,7 +160,7 @@ result = FakerMaker[:item].build( name: 'Electric Blanket' ) do |i|
|
|
155
160
|
end
|
156
161
|
```
|
157
162
|
|
158
|
-
then the value of `
|
163
|
+
then the value of `result.name` is 'Electric Sheep'.
|
159
164
|
|
160
165
|
Beware when overriding values in this way: there is no type checking. You will get an exception if you try to set a value to an attribute that doesn't exist but you won't get one if you assign, say, an array of values where you would otherwise have a string and vice versa.
|
161
166
|
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'faker_maker'
|
5
5
|
|
6
6
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
8
8
|
|
9
9
|
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require
|
10
|
+
# require 'pry'
|
11
11
|
# Pry.start
|
12
12
|
|
13
|
-
require
|
13
|
+
require 'irb'
|
14
14
|
IRB.start(__FILE__)
|
data/faker_maker.gemspec
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
# Disable rubocop checks for the .gemspec
|
2
|
+
# I'll take the output from 'bundle gem new' to be authoritative
|
3
|
+
# rubocop:disable all
|
4
|
+
|
1
5
|
lib = File.expand_path('../lib', __FILE__)
|
2
6
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
7
|
require 'faker_maker/version'
|
@@ -35,13 +39,13 @@ Gem::Specification.new do |spec|
|
|
35
39
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
36
40
|
spec.require_paths = ['lib']
|
37
41
|
|
38
|
-
spec.add_dependency 'activesupport', '>= 5.2'
|
42
|
+
spec.add_dependency 'activesupport', '>= 5.2', '< 6'
|
39
43
|
|
40
|
-
spec.add_development_dependency 'bundler',
|
41
|
-
spec.add_development_dependency 'faker',
|
42
|
-
spec.add_development_dependency 'pry'
|
43
|
-
spec.add_development_dependency 'rake',
|
44
|
-
spec.add_development_dependency 'rspec',
|
45
|
-
spec.add_development_dependency 'rubocop'
|
46
|
-
spec.add_development_dependency 'simplecov', '
|
44
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
45
|
+
spec.add_development_dependency 'faker', '~> 1.9'
|
46
|
+
spec.add_development_dependency 'pry', '~> 0.12'
|
47
|
+
spec.add_development_dependency 'rake', '~> 12.3'
|
48
|
+
spec.add_development_dependency 'rspec', '~> 3.8'
|
49
|
+
spec.add_development_dependency 'rubocop', '~> 0.68'
|
50
|
+
spec.add_development_dependency 'simplecov', '~> 0.16'
|
47
51
|
end
|
@@ -1,8 +1,9 @@
|
|
1
1
|
module FakerMaker
|
2
|
+
# Attributes describe the fields of classes
|
2
3
|
class Attribute
|
3
4
|
attr_reader :name, :block, :translation
|
4
5
|
|
5
|
-
def initialize name, options={}
|
6
|
+
def initialize( name, block = nil, options = {} )
|
6
7
|
assert_valid_options options
|
7
8
|
@name = name
|
8
9
|
@block = block
|
@@ -24,7 +25,7 @@ module FakerMaker
|
|
24
25
|
end
|
25
26
|
|
26
27
|
def translation?
|
27
|
-
|
28
|
+
!@translation.blank?
|
28
29
|
end
|
29
30
|
|
30
31
|
private
|
@@ -33,9 +34,8 @@ module FakerMaker
|
|
33
34
|
@cardinality.is_a?( Range ) || @cardinality > 1
|
34
35
|
end
|
35
36
|
|
36
|
-
def assert_valid_options options
|
37
|
+
def assert_valid_options( options )
|
37
38
|
options.assert_valid_keys :has, :array, :json
|
38
39
|
end
|
39
|
-
|
40
40
|
end
|
41
|
-
end
|
41
|
+
end
|
data/lib/faker_maker/base.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module FakerMaker
|
2
|
+
# Base module for defining the DSL
|
2
3
|
module Base
|
3
|
-
|
4
|
-
def factory name, options={}, &block
|
4
|
+
def factory(name, options = {}, &block)
|
5
5
|
factory = FakerMaker::Factory.new name, options
|
6
6
|
proxy = DefinitionProxy.new factory
|
7
7
|
proxy.instance_eval( &block ) if block_given?
|
@@ -1,14 +1,17 @@
|
|
1
1
|
module FakerMaker
|
2
|
+
# Proxy for mapping attribute names
|
2
3
|
class DefinitionProxy
|
3
|
-
|
4
|
-
def initialize factory
|
4
|
+
def initialize(factory)
|
5
5
|
@factory = factory
|
6
6
|
end
|
7
7
|
|
8
|
-
def method_missing
|
9
|
-
attribute = FakerMaker::Attribute.new name, *args
|
8
|
+
def method_missing(name, *args, &block) # rubocop:disable Style/MethodMissingSuper
|
9
|
+
attribute = FakerMaker::Attribute.new name, block, *args
|
10
10
|
@factory.attach_attribute attribute
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
|
+
def respond_to_missing?(method_name, include_private = false)
|
14
|
+
super
|
15
|
+
end
|
13
16
|
end
|
14
|
-
end
|
17
|
+
end
|
data/lib/faker_maker/factory.rb
CHANGED
@@ -1,26 +1,30 @@
|
|
1
1
|
module FakerMaker
|
2
|
+
# Factories construct instances of a fake
|
2
3
|
class Factory
|
3
|
-
attr_reader :name, :attributes, :class_name, :
|
4
|
+
attr_reader :name, :attributes, :class_name, :parent
|
4
5
|
|
5
|
-
def initialize name, options={}
|
6
|
+
def initialize( name, options = {} )
|
6
7
|
assert_valid_options options
|
7
8
|
@name = name.respond_to?(:to_sym) ? name.to_sym : name.to_s.underscore.to_sym
|
8
9
|
@class_name = (options[:class] || @name).to_s.camelcase
|
9
10
|
@attributes = []
|
10
11
|
@klass = nil
|
11
12
|
@parent = options[:parent]
|
12
|
-
|
13
|
+
end
|
14
|
+
|
15
|
+
def parent_class
|
16
|
+
if @parent
|
13
17
|
Object.const_get( FakerMaker[@parent].class_name )
|
14
18
|
else
|
15
|
-
|
19
|
+
Object
|
16
20
|
end
|
17
21
|
end
|
18
22
|
|
19
|
-
def attach_attribute attribute
|
23
|
+
def attach_attribute( attribute )
|
20
24
|
@attributes << attribute
|
21
25
|
end
|
22
26
|
|
23
|
-
def build attributes={}
|
27
|
+
def build( attributes = {} )
|
24
28
|
instance = instantiate
|
25
29
|
populate_instance instance, attributes
|
26
30
|
yield instance if block_given?
|
@@ -29,7 +33,7 @@ module FakerMaker
|
|
29
33
|
|
30
34
|
def assemble
|
31
35
|
if @klass.nil?
|
32
|
-
@klass = Class.new
|
36
|
+
@klass = Class.new parent_class
|
33
37
|
Object.const_set @class_name, @klass
|
34
38
|
attach_attributes_to_class
|
35
39
|
attach_json_overrides_to_class
|
@@ -37,12 +41,12 @@ module FakerMaker
|
|
37
41
|
@klass
|
38
42
|
end
|
39
43
|
|
40
|
-
def to_json
|
44
|
+
def to_json(*_args)
|
41
45
|
build.to_json
|
42
46
|
end
|
43
47
|
|
44
48
|
def parent?
|
45
|
-
|
49
|
+
!@parent.nil?
|
46
50
|
end
|
47
51
|
|
48
52
|
def json_key_map
|
@@ -59,30 +63,39 @@ module FakerMaker
|
|
59
63
|
|
60
64
|
protected
|
61
65
|
|
62
|
-
def populate_instance instance, attr_override_values
|
63
|
-
|
64
|
-
raise FakerMaker::NoSuchAttributeError,
|
65
|
-
"Can't build an instance of '#{class_name}' setting '#{unknown_attrs.join( ', ' )}', no such attribute(s)"
|
66
|
-
end
|
66
|
+
def populate_instance( instance, attr_override_values )
|
67
|
+
assert_only_know_attributes_for_override( attr_override_values )
|
67
68
|
|
68
|
-
FakerMaker[parent].populate_instance instance if
|
69
|
-
@attributes.each do |attr|
|
70
|
-
value =
|
71
|
-
|
72
|
-
if ! attr_override_values[attr.name].nil?
|
73
|
-
value = attr_override_values[attr.name]
|
74
|
-
elsif attr.array?
|
75
|
-
value = Array.new.tap{ |a| attr.cardinality.times{ a << attr.block.call } }
|
76
|
-
else
|
77
|
-
value = attr.block.call
|
78
|
-
end
|
79
|
-
|
69
|
+
FakerMaker[parent].populate_instance instance if parent?
|
70
|
+
@attributes.each do |attr|
|
71
|
+
value = value_for_attribute( attr, attr_override_values )
|
80
72
|
instance.send "#{attr.name}=", value
|
81
73
|
end
|
82
74
|
instance.instance_variable_set( :@fm_factory, self )
|
83
75
|
end
|
84
76
|
|
85
77
|
private
|
78
|
+
|
79
|
+
def assert_only_know_attributes_for_override( attr_override_values )
|
80
|
+
unknown_attrs = attr_override_values.keys - @attributes.map( &:name )
|
81
|
+
issue = "Can't build an instance of '#{class_name}' " \
|
82
|
+
"setting '#{unknown_attrs.join( ', ' )}', no such attribute(s)"
|
83
|
+
raise FakerMaker::NoSuchAttributeError, issue unless unknown_attrs.empty?
|
84
|
+
end
|
85
|
+
|
86
|
+
def attribute_hash_overridden_value?( attr, attr_override_values )
|
87
|
+
!attr_override_values[attr.name].nil?
|
88
|
+
end
|
89
|
+
|
90
|
+
def value_for_attribute( attr, attr_override_values )
|
91
|
+
if attribute_hash_overridden_value?( attr, attr_override_values )
|
92
|
+
attr_override_values[attr.name]
|
93
|
+
elsif attr.array?
|
94
|
+
[].tap { |a| attr.cardinality.times { a << attr.block.call } }
|
95
|
+
else
|
96
|
+
attr.block.call
|
97
|
+
end
|
98
|
+
end
|
86
99
|
|
87
100
|
def instantiate
|
88
101
|
assemble.new
|
@@ -96,13 +109,13 @@ module FakerMaker
|
|
96
109
|
end
|
97
110
|
|
98
111
|
def attach_json_overrides_to_class
|
99
|
-
@klass.define_method :as_json do |options={}|
|
100
|
-
super( options.merge( except: 'fm_factory' ) ).transform_keys{ |key| @fm_factory.json_key_map[key] || key }
|
112
|
+
@klass.define_method :as_json do |options = {}|
|
113
|
+
super( options.merge( except: 'fm_factory' ) ).transform_keys { |key| @fm_factory.json_key_map[key] || key }
|
101
114
|
end
|
102
115
|
end
|
103
116
|
|
104
|
-
def assert_valid_options options
|
117
|
+
def assert_valid_options( options )
|
105
118
|
options.assert_valid_keys :class, :parent
|
106
119
|
end
|
107
120
|
end
|
108
|
-
end
|
121
|
+
end
|
data/lib/faker_maker/version.rb
CHANGED
data/lib/faker_maker.rb
CHANGED
@@ -8,6 +8,7 @@ require 'faker_maker/factory'
|
|
8
8
|
require 'faker_maker/definition_proxy'
|
9
9
|
require 'faker_maker/attribute'
|
10
10
|
|
11
|
+
# FakerMaker module for generating Fakes
|
11
12
|
module FakerMaker
|
12
13
|
extend FakerMaker::Base
|
13
14
|
|
@@ -18,7 +19,7 @@ module FakerMaker
|
|
18
19
|
|
19
20
|
module_function
|
20
21
|
|
21
|
-
def register_factory factory
|
22
|
+
def register_factory( factory )
|
22
23
|
factory.assemble
|
23
24
|
factories[factory.name] = factory
|
24
25
|
end
|
@@ -27,19 +28,19 @@ module FakerMaker
|
|
27
28
|
@factories ||= {}
|
28
29
|
end
|
29
30
|
|
30
|
-
def build name
|
31
|
+
def build( name )
|
31
32
|
find_factory( name ).build
|
32
33
|
end
|
33
34
|
|
34
|
-
def [] name
|
35
|
+
def []( name )
|
35
36
|
find_factory name
|
36
37
|
end
|
37
38
|
|
38
|
-
def find_factory name
|
39
|
+
def find_factory( name )
|
39
40
|
raise NoSuchFactoryError, "No such factory '#{name}'" if factories[name].nil?
|
41
|
+
|
40
42
|
factories[name]
|
41
43
|
end
|
42
|
-
|
43
44
|
end
|
44
45
|
|
45
46
|
FM = FakerMaker
|
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.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nigel Brookes-Thomas
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -17,6 +17,9 @@ dependencies:
|
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '5.2'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '6'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -24,6 +27,9 @@ dependencies:
|
|
24
27
|
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '5.2'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '6'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: bundler
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -42,84 +48,84 @@ dependencies:
|
|
42
48
|
name: faker
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
|
-
- - "
|
51
|
+
- - "~>"
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: '1.9'
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
|
-
- - "
|
58
|
+
- - "~>"
|
53
59
|
- !ruby/object:Gem::Version
|
54
60
|
version: '1.9'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: pry
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
|
-
- - "
|
65
|
+
- - "~>"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
67
|
+
version: '0.12'
|
62
68
|
type: :development
|
63
69
|
prerelease: false
|
64
70
|
version_requirements: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
|
-
- - "
|
72
|
+
- - "~>"
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
74
|
+
version: '0.12'
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
76
|
name: rake
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
72
78
|
requirements:
|
73
79
|
- - "~>"
|
74
80
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
81
|
+
version: '12.3'
|
76
82
|
type: :development
|
77
83
|
prerelease: false
|
78
84
|
version_requirements: !ruby/object:Gem::Requirement
|
79
85
|
requirements:
|
80
86
|
- - "~>"
|
81
87
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
88
|
+
version: '12.3'
|
83
89
|
- !ruby/object:Gem::Dependency
|
84
90
|
name: rspec
|
85
91
|
requirement: !ruby/object:Gem::Requirement
|
86
92
|
requirements:
|
87
|
-
- - "
|
93
|
+
- - "~>"
|
88
94
|
- !ruby/object:Gem::Version
|
89
95
|
version: '3.8'
|
90
96
|
type: :development
|
91
97
|
prerelease: false
|
92
98
|
version_requirements: !ruby/object:Gem::Requirement
|
93
99
|
requirements:
|
94
|
-
- - "
|
100
|
+
- - "~>"
|
95
101
|
- !ruby/object:Gem::Version
|
96
102
|
version: '3.8'
|
97
103
|
- !ruby/object:Gem::Dependency
|
98
104
|
name: rubocop
|
99
105
|
requirement: !ruby/object:Gem::Requirement
|
100
106
|
requirements:
|
101
|
-
- - "
|
107
|
+
- - "~>"
|
102
108
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
109
|
+
version: '0.68'
|
104
110
|
type: :development
|
105
111
|
prerelease: false
|
106
112
|
version_requirements: !ruby/object:Gem::Requirement
|
107
113
|
requirements:
|
108
|
-
- - "
|
114
|
+
- - "~>"
|
109
115
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
116
|
+
version: '0.68'
|
111
117
|
- !ruby/object:Gem::Dependency
|
112
118
|
name: simplecov
|
113
119
|
requirement: !ruby/object:Gem::Requirement
|
114
120
|
requirements:
|
115
|
-
- - "
|
121
|
+
- - "~>"
|
116
122
|
- !ruby/object:Gem::Version
|
117
123
|
version: '0.16'
|
118
124
|
type: :development
|
119
125
|
prerelease: false
|
120
126
|
version_requirements: !ruby/object:Gem::Requirement
|
121
127
|
requirements:
|
122
|
-
- - "
|
128
|
+
- - "~>"
|
123
129
|
- !ruby/object:Gem::Version
|
124
130
|
version: '0.16'
|
125
131
|
description: FakerMaker is a simple fixture generator with a concise and straightforward
|
@@ -130,6 +136,7 @@ executables: []
|
|
130
136
|
extensions: []
|
131
137
|
extra_rdoc_files: []
|
132
138
|
files:
|
139
|
+
- ".circleci/config.yml"
|
133
140
|
- ".gitignore"
|
134
141
|
- ".rspec"
|
135
142
|
- ".rubocop.yml"
|
@@ -147,7 +154,6 @@ files:
|
|
147
154
|
- lib/faker_maker/definition_proxy.rb
|
148
155
|
- lib/faker_maker/factory.rb
|
149
156
|
- lib/faker_maker/version.rb
|
150
|
-
- test.rb
|
151
157
|
homepage: https://github.com/BillyRuffian/faker_maker
|
152
158
|
licenses:
|
153
159
|
- MIT
|
data/test.rb
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
FakerMaker.factory :Foo, class: 'FooBar' do
|
2
|
-
bob {'hey'}
|
3
|
-
end
|
4
|
-
|
5
|
-
FakerMaker.factory :bar, parent: :Foo, class: 'BarFoo' do
|
6
|
-
box {'ho'}
|
7
|
-
bex { {foo: :bar } }
|
8
|
-
end
|
9
|
-
|
10
|
-
FakerMaker.factory :green_eggs_and_ham, class: 'Egg' do
|
11
|
-
name { Faker::Name.name }
|
12
|
-
date { Time.now }
|
13
|
-
parameter( has: 2 ) { Faker::Company.bs }
|
14
|
-
array( array: true ) { 'bang' }
|
15
|
-
sub has: 0..2 do
|
16
|
-
FakerMaker.build :Foo
|
17
|
-
end
|
18
|
-
blank { nil }
|
19
|
-
end
|
20
|
-
|
21
|
-
FakerMaker.factory :seuss, parent: :green_eggs_and_ham do
|
22
|
-
quote { 'Today you are you! That is truer than true! There is no one alive who is you-er than you!' }
|
23
|
-
end
|
24
|
-
|
25
|
-
FakerMaker.factory :vehicle do
|
26
|
-
wheels { 4 }
|
27
|
-
colour { Faker::Color.color_name }
|
28
|
-
engine_capacity( json: 'engineCapacity' ) { rand( 600..2500 ) }
|
29
|
-
end
|
30
|
-
|
31
|
-
FakerMaker.factory :motorbike, parent: :vehicle do
|
32
|
-
wheels { 2 }
|
33
|
-
sidecar { [true, false].sample }
|
34
|
-
end
|
35
|
-
|
36
|
-
|
37
|
-
FakerMaker.factory :item do
|
38
|
-
name( json: 'productName' ) { Faker::Commerce.product_name }
|
39
|
-
price( json: 'ticketPrice' ) { Faker::Commerce.price }
|
40
|
-
end
|
41
|
-
|
42
|
-
|
43
|
-
FakerMaker.factory :basket do
|
44
|
-
items( has: 10 ) { FakerMaker[:item].build }
|
45
|
-
end
|
46
|
-
|
47
|
-
FakerMaker.factory :a do
|
48
|
-
a( json: 'bigA' ) { 'a' }
|
49
|
-
end
|
50
|
-
|
51
|
-
FakerMaker.factory :b, parent: :a do
|
52
|
-
b( json: 'bigB' ) { 'b' }
|
53
|
-
end
|
54
|
-
|
55
|
-
FakerMaker.factory :c, parent: :b do
|
56
|
-
c( json: 'bigC' ) { 'c' }
|
57
|
-
end
|
58
|
-
|
59
|
-
FakerMaker.factory :d do
|
60
|
-
label{ 'hello' }
|
61
|
-
end
|