fabrication 2.9.3 → 2.9.4
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/lib/{fabrication/fabricator.rb → fabricate.rb} +22 -9
- data/lib/fabrication.rb +7 -32
- data/lib/fabrication/cucumber/step_fabricator.rb +1 -1
- data/lib/fabrication/errors/duplicate_fabricator_error.rb +5 -1
- data/lib/fabrication/generator/active_record.rb +1 -6
- data/lib/fabrication/generator/mongoid.rb +1 -1
- data/lib/fabrication/schematic/manager.rb +8 -16
- data/lib/fabrication/support.rb +5 -7
- data/lib/fabrication/version.rb +1 -1
- data/lib/tasks/defined_fabricators.rake +30 -0
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60ffbcf29301152a8dafc8037856a47f52680f78
|
4
|
+
data.tar.gz: e02c67ec746e96b5c9649dc64d116a83736922e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4fd4365c2eeb9aa1bdf8e7af6ec6529b6980678364b50602b23983509307ddd22f920318a31446054df76276ba0b8067f50a9f4c40710f9fb4e3b3b1ee2cd45
|
7
|
+
data.tar.gz: dd8f177414850efdbc18593b4a6c555c135d4513773fdf185f844987d9e57841cd28a5ff2830948767196750987e2dad3584ce4735050786c08ddf5d06f94585
|
@@ -1,16 +1,13 @@
|
|
1
|
-
class
|
2
|
-
|
3
|
-
|
4
|
-
fail_if_initializing(name)
|
5
|
-
schematic(name).build(overrides, &block)
|
1
|
+
class Fabricate
|
2
|
+
def self.times(count, name, overrides={}, &block)
|
3
|
+
count.times.map { Fabricate(name, overrides, &block) }
|
6
4
|
end
|
7
5
|
|
8
|
-
def self.
|
9
|
-
|
10
|
-
schematic(name).fabricate(overrides, &block)
|
6
|
+
def self.build_times(count, name, overrides={}, &block)
|
7
|
+
count.times.map { Fabricate.build(name, overrides, &block) }
|
11
8
|
end
|
12
9
|
|
13
|
-
def self.
|
10
|
+
def self.attributes_for(name, overrides={}, &block)
|
14
11
|
fail_if_initializing(name)
|
15
12
|
schematic(name).to_attributes(overrides, &block)
|
16
13
|
end
|
@@ -20,6 +17,22 @@ class Fabrication::Fabricator
|
|
20
17
|
schematic(name).to_params(overrides, &block)
|
21
18
|
end
|
22
19
|
|
20
|
+
def self.build(name, overrides={}, &block)
|
21
|
+
fail_if_initializing(name)
|
22
|
+
schematic(name).build(overrides, &block).tap do |object|
|
23
|
+
Fabrication::Cucumber::Fabrications[name] = object if Fabrication::Config.register_with_steps?
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.create(name, overrides={}, &block)
|
28
|
+
fail_if_initializing(name)
|
29
|
+
schematic(name).fabricate(overrides, &block)
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.sequence(name=Fabrication::Sequencer::DEFAULT, start=nil, &block)
|
33
|
+
Fabrication::Sequencer.sequence(name, start, &block)
|
34
|
+
end
|
35
|
+
|
23
36
|
def self.schematic(name)
|
24
37
|
Fabrication::Support.find_definitions if Fabrication.manager.empty?
|
25
38
|
Fabrication.manager[name] || raise(Fabrication::UnknownFabricatorError.new(name))
|
data/lib/fabrication.rb
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
autoload :Fabricate, 'fabricate'
|
2
|
+
|
3
|
+
Dir[File.join(File.dirname(__FILE__),'tasks/*.rake')].each { |f| load f } if defined?(Rake)
|
4
|
+
|
1
5
|
module Fabrication
|
2
6
|
autoload :DuplicateFabricatorError, 'fabrication/errors/duplicate_fabricator_error'
|
3
7
|
autoload :UnfabricatableError, 'fabrication/errors/unfabricatable_error'
|
@@ -13,7 +17,6 @@ module Fabrication
|
|
13
17
|
end
|
14
18
|
|
15
19
|
autoload :Config, 'fabrication/config'
|
16
|
-
autoload :Fabricator, 'fabrication/fabricator'
|
17
20
|
autoload :Sequencer, 'fabrication/sequencer'
|
18
21
|
autoload :Support, 'fabrication/support'
|
19
22
|
autoload :Transform, 'fabrication/transform'
|
@@ -30,7 +33,7 @@ module Fabrication
|
|
30
33
|
end
|
31
34
|
|
32
35
|
def self.clear_definitions
|
33
|
-
|
36
|
+
manager.clear
|
34
37
|
Sequencer.sequences.clear
|
35
38
|
end
|
36
39
|
|
@@ -39,7 +42,7 @@ module Fabrication
|
|
39
42
|
end
|
40
43
|
|
41
44
|
def self.manager
|
42
|
-
@manager ||= Fabrication::Schematic::Manager.
|
45
|
+
@manager ||= Fabrication::Schematic::Manager.instance
|
43
46
|
end
|
44
47
|
|
45
48
|
def self.schematics
|
@@ -53,39 +56,11 @@ def Fabricator(name, options={}, &block)
|
|
53
56
|
end
|
54
57
|
|
55
58
|
def Fabricate(name, overrides={}, &block)
|
56
|
-
|
59
|
+
Fabricate.create(name, overrides, &block).tap do |object|
|
57
60
|
Fabrication::Cucumber::Fabrications[name] = object if Fabrication::Config.register_with_steps?
|
58
61
|
end
|
59
62
|
end
|
60
63
|
|
61
|
-
class Fabricate
|
62
|
-
def self.times(count, name, overrides={}, &block)
|
63
|
-
count.times.map { Fabricate(name, overrides, &block) }
|
64
|
-
end
|
65
|
-
|
66
|
-
def self.build_times(count, name, overrides={}, &block)
|
67
|
-
count.times.map { Fabricate.build(name, overrides, &block) }
|
68
|
-
end
|
69
|
-
|
70
|
-
def self.attributes_for(name, overrides={}, &block)
|
71
|
-
Fabrication::Fabricator.to_attributes(name, overrides, &block)
|
72
|
-
end
|
73
|
-
|
74
|
-
def self.to_params(name, overrides={}, &block)
|
75
|
-
Fabrication::Fabricator.to_params(name, overrides, &block)
|
76
|
-
end
|
77
|
-
|
78
|
-
def self.build(name, overrides={}, &block)
|
79
|
-
Fabrication::Fabricator.build(name, overrides, &block).tap do |object|
|
80
|
-
Fabrication::Cucumber::Fabrications[name] = object if Fabrication::Config.register_with_steps?
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def self.sequence(name=Fabrication::Sequencer::DEFAULT, start=nil, &block)
|
85
|
-
Fabrication::Sequencer.sequence(name, start, &block)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
64
|
module FabricationMethods
|
90
65
|
def fabrications
|
91
66
|
Fabrication::Cucumber::Fabrications
|
@@ -5,7 +5,7 @@ class Fabrication::Generator::ActiveRecord < Fabrication::Generator::Base
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def build_instance
|
8
|
-
if
|
8
|
+
if _klass.respond_to?(:protected_attributes)
|
9
9
|
self._instance = _klass.new(_attributes, without_protection: true)
|
10
10
|
else
|
11
11
|
self._instance = _klass.new(_attributes)
|
@@ -14,11 +14,6 @@ class Fabrication::Generator::ActiveRecord < Fabrication::Generator::Base
|
|
14
14
|
|
15
15
|
protected
|
16
16
|
|
17
|
-
def self.without_protection?
|
18
|
-
@without_protection = Gem::Version.new(ActiveRecord::VERSION::STRING).between?(Gem::Version.new('3.1.0'), Gem::Version.new('3.9')) if @without_protection.nil?
|
19
|
-
@without_protection
|
20
|
-
end
|
21
|
-
|
22
17
|
def validate_instance
|
23
18
|
_instance.valid?
|
24
19
|
end
|
@@ -5,7 +5,7 @@ class Fabrication::Generator::Mongoid < Fabrication::Generator::Base
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def build_instance
|
8
|
-
if
|
8
|
+
if _klass.respond_to?(:protected_attributes)
|
9
9
|
self._instance = _klass.new(_attributes, without_protection: true)
|
10
10
|
else
|
11
11
|
self._instance = _klass.new(_attributes)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
class Fabrication::Schematic::Manager
|
2
|
+
include Singleton
|
2
3
|
|
3
4
|
def preinitialize
|
4
5
|
@initializing = true
|
@@ -7,16 +8,13 @@ class Fabrication::Schematic::Manager
|
|
7
8
|
|
8
9
|
def initializing?; @initializing end
|
9
10
|
|
10
|
-
def
|
11
|
-
@
|
12
|
-
end
|
13
|
-
|
14
|
-
def clear
|
15
|
-
schematics.clear
|
11
|
+
def schematics
|
12
|
+
@schematics ||= {}
|
16
13
|
end
|
14
|
+
delegate :clear, :empty?, to: :schematics
|
17
15
|
|
18
|
-
def
|
19
|
-
|
16
|
+
def freeze
|
17
|
+
@initializing = false
|
20
18
|
end
|
21
19
|
|
22
20
|
def register(name, options, &block)
|
@@ -29,10 +27,6 @@ class Fabrication::Schematic::Manager
|
|
29
27
|
schematics[name.to_sym]
|
30
28
|
end
|
31
29
|
|
32
|
-
def schematics
|
33
|
-
@schematics ||= {}
|
34
|
-
end
|
35
|
-
|
36
30
|
def build_stack
|
37
31
|
@build_stack ||= []
|
38
32
|
end
|
@@ -44,9 +38,7 @@ class Fabrication::Schematic::Manager
|
|
44
38
|
protected
|
45
39
|
|
46
40
|
def raise_if_registered(name)
|
47
|
-
if self[name]
|
48
|
-
raise Fabrication::DuplicateFabricatorError, "'#{name}' is already defined"
|
49
|
-
end
|
41
|
+
(raise Fabrication::DuplicateFabricatorError, name) if self[name]
|
50
42
|
end
|
51
43
|
|
52
44
|
def store(name, aliases, options, &block)
|
@@ -60,7 +52,7 @@ class Fabrication::Schematic::Manager
|
|
60
52
|
(parent && parent.klass) ||
|
61
53
|
options[:from] ||
|
62
54
|
name
|
63
|
-
)
|
55
|
+
)
|
64
56
|
end
|
65
57
|
|
66
58
|
def schematic_for(name, options, &block)
|
data/lib/fabrication/support.rb
CHANGED
@@ -7,15 +7,13 @@ class Fabrication::Support
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def class_for(class_or_to_s)
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
object.const_get(string)
|
14
|
-
end
|
15
|
-
else
|
16
|
-
class_or_to_s
|
10
|
+
class_name = variable_name_to_class_name(class_or_to_s)
|
11
|
+
klass = class_name.split('::').inject(Object) do |object, string|
|
12
|
+
object.const_get(string)
|
17
13
|
end
|
18
14
|
rescue NameError
|
15
|
+
ensure
|
16
|
+
raise Fabrication::UnfabricatableError.new(class_or_to_s) unless klass
|
19
17
|
end
|
20
18
|
|
21
19
|
def extract_options!(args)
|
data/lib/fabrication/version.rb
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
namespace :fabrication do
|
2
|
+
desc "Display all registered fabricators by class"
|
3
|
+
task :list => :environment do
|
4
|
+
Fabrication::Support.find_definitions if Fabrication.manager.empty?
|
5
|
+
|
6
|
+
if Fabrication.manager.schematics.none?
|
7
|
+
puts "No fabricators found"
|
8
|
+
next
|
9
|
+
end
|
10
|
+
|
11
|
+
groups = Fabrication.manager.schematics.group_by do |name, fabdef|
|
12
|
+
fabdef.klass.name
|
13
|
+
end
|
14
|
+
|
15
|
+
fabricators = {}
|
16
|
+
groups.sort_by { |klass, _| klass }.each do |klass, groups|
|
17
|
+
fabricators[klass] = groups.map(&:first).sort.join(", ")
|
18
|
+
end
|
19
|
+
|
20
|
+
class_width = fabricators.keys.max_by { |v| v.size }.size + 3 # padding
|
21
|
+
names_width = fabricators.values.max_by { |v| v.size }.size
|
22
|
+
say = lambda do |f1, f2|
|
23
|
+
printf "%-#{class_width}s%-#{names_width}s\n", f1, f2
|
24
|
+
end
|
25
|
+
|
26
|
+
say["Class", "Fabricator"]
|
27
|
+
puts "-" * (names_width + class_width)
|
28
|
+
fabricators.each { |klass, names| say[klass,names] }
|
29
|
+
end
|
30
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fabrication
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.9.
|
4
|
+
version: 2.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Elliott
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -140,16 +140,16 @@ dependencies:
|
|
140
140
|
name: mongoid
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- -
|
143
|
+
- - ~>
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
145
|
+
version: '3.0'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- -
|
150
|
+
- - ~>
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
152
|
+
version: '3.0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: pry
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -214,13 +214,13 @@ executables: []
|
|
214
214
|
extensions: []
|
215
215
|
extra_rdoc_files: []
|
216
216
|
files:
|
217
|
+
- lib/fabricate.rb
|
217
218
|
- lib/fabrication/config.rb
|
218
219
|
- lib/fabrication/cucumber/step_fabricator.rb
|
219
220
|
- lib/fabrication/errors/duplicate_fabricator_error.rb
|
220
221
|
- lib/fabrication/errors/misplaced_fabricate_error.rb
|
221
222
|
- lib/fabrication/errors/unfabricatable_error.rb
|
222
223
|
- lib/fabrication/errors/unknown_fabricator_error.rb
|
223
|
-
- lib/fabrication/fabricator.rb
|
224
224
|
- lib/fabrication/generator/active_record.rb
|
225
225
|
- lib/fabrication/generator/base.rb
|
226
226
|
- lib/fabrication/generator/data_mapper.rb
|
@@ -241,6 +241,7 @@ files:
|
|
241
241
|
- lib/rails/generators/fabrication/cucumber_steps/templates/fabrication_steps.rb
|
242
242
|
- lib/rails/generators/fabrication/model/model_generator.rb
|
243
243
|
- lib/rails/generators/fabrication/model/templates/fabricator.rb
|
244
|
+
- lib/tasks/defined_fabricators.rake
|
244
245
|
- LICENSE
|
245
246
|
- README.markdown
|
246
247
|
- Rakefile
|
@@ -264,7 +265,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
264
265
|
version: '0'
|
265
266
|
requirements: []
|
266
267
|
rubyforge_project:
|
267
|
-
rubygems_version: 2.1.
|
268
|
+
rubygems_version: 2.1.11
|
268
269
|
signing_key:
|
269
270
|
specification_version: 4
|
270
271
|
summary: Fabrication provides a simple solution for test object generation.
|