fabrication 2.8.1 → 2.9.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ca46c77d2fd703ffa53b9a00039b8732afa59ad8
4
- data.tar.gz: 92e078436be385fcaaca19a7ac3a0456287dedb6
3
+ metadata.gz: 10a5fdcebce63ed58d267558fe39d5cdb8711248
4
+ data.tar.gz: 901d7205fd0dd1a85fd6a95174c9747756064e29
5
5
  SHA512:
6
- metadata.gz: 7b8df7fc0ed4bab31a3ac0a70cc8d4ea3a6fe178415da30cc337442d3f31fd2eb46a94cc414f9c961ba8756d539b99b92d191934bf0e1bbdee9078ae906bb14b
7
- data.tar.gz: f264f1e92c91ef32c3f5e9ce1b021a88ecd74772a54149e29831797b450f62bc737a063eee6ab9febcaecd706aa16a109543d0e25770e687949207f85a50edaf
6
+ metadata.gz: 445df3c8a9d0f206ab8b313ccf59d0c4551e63ba6892ad579212066afd494adf40a9906b2595aca1c260e7387c0ba66a6d39a75a0122d58734feacae3fb0f662
7
+ data.tar.gz: 3e2da04c11c80b739d68c91b49e870e28537b2a65921603876cc910eb0482db92612084b3199d4f278f205144b83868bc6311d6d0831eefdda06a87b47551b37
@@ -43,7 +43,7 @@ module Fabrication
43
43
  end
44
44
 
45
45
  def self.schematics
46
- puts "DEPRECATION WARNING: Fabrication.schematics has been replaced by Fabrication.manager"
46
+ puts "DEPRECATION WARNING: Fabrication.schematics has been replaced by Fabrication.manager and will be removed in 3.0.0."
47
47
  manager
48
48
  end
49
49
  end
@@ -63,10 +63,19 @@ class Fabricate
63
63
  count.times.map { Fabricate(name, overrides, &block) }
64
64
  end
65
65
 
66
+ def self.build_times(count, name, overrides={}, &block)
67
+ count.times.map { Fabricate.build(name, overrides, &block) }
68
+ end
69
+
66
70
  def self.attributes_for(name, overrides={}, &block)
71
+ puts "DEPRECATION WARNING: Fabrication.attributes_for has been replaced by Fabrication.to_params and will be removed in 3.0.0."
67
72
  Fabrication::Fabricator.to_attributes(name, overrides, &block)
68
73
  end
69
74
 
75
+ def self.to_params(name, overrides={}, &block)
76
+ Fabrication::Fabricator.to_params(name, overrides, &block)
77
+ end
78
+
70
79
  def self.build(name, overrides={}, &block)
71
80
  Fabrication::Fabricator.build(name, overrides, &block).tap do |object|
72
81
  Fabrication::Cucumber::Fabrications[name] = object if Fabrication::Config.register_with_steps?
@@ -15,6 +15,11 @@ class Fabrication::Fabricator
15
15
  schematic(name).to_attributes(overrides, &block)
16
16
  end
17
17
 
18
+ def self.to_params(name, overrides={}, &block)
19
+ fail_if_initializing(name)
20
+ schematic(name).to_params(overrides, &block)
21
+ end
22
+
18
23
  private
19
24
 
20
25
  def self.fail_if_initializing(name)
@@ -23,9 +28,7 @@ class Fabrication::Fabricator
23
28
 
24
29
  def self.schematic(name)
25
30
  Fabrication::Support.find_definitions if Fabrication.manager.empty?
26
- Fabrication.manager[name].tap do |schematic|
27
- raise Fabrication::UnknownFabricatorError.new(name) unless schematic
28
- end
31
+ Fabrication.manager[name] || raise(Fabrication::UnknownFabricatorError.new(name))
29
32
  end
30
33
 
31
34
  end
@@ -33,6 +33,11 @@ class Fabrication::Generator::Base
33
33
  callbacks.each { |callback| _instance.instance_exec(_instance, _transient_attributes, &callback) } if callbacks
34
34
  end
35
35
 
36
+ def to_params(attributes=[])
37
+ process_attributes(attributes)
38
+ _attributes.respond_to?(:with_indifferent_access) ? _attributes.with_indifferent_access : _attributes
39
+ end
40
+
36
41
  def to_hash(attributes=[], callbacks=[])
37
42
  process_attributes(attributes)
38
43
  Fabrication::Support.hash_class.new.tap do |hash|
@@ -47,24 +47,41 @@ class Fabrication::Schematic::Definition
47
47
  end
48
48
 
49
49
  def build(overrides={}, &block)
50
- Fabrication.manager.build_stack << self
51
- merge(overrides, &block).instance_eval do
52
- generator.new(klass).build(attributes, callbacks)
50
+ if Fabrication.manager.to_params_stack.any?
51
+ to_params(overrides, &block)
52
+ else
53
+ begin
54
+ Fabrication.manager.build_stack << self
55
+ merge(overrides, &block).instance_eval do
56
+ generator.new(klass).build(attributes, callbacks)
57
+ end
58
+ ensure
59
+ Fabrication.manager.build_stack.pop
60
+ end
53
61
  end
54
- ensure
55
- Fabrication.manager.build_stack.pop
56
62
  end
57
63
 
58
64
  def fabricate(overrides={}, &block)
59
- if Fabrication.manager.build_stack.empty?
65
+ if Fabrication.manager.build_stack.any?
66
+ build(overrides, &block)
67
+ elsif Fabrication.manager.to_params_stack.any?
68
+ to_params(overrides, &block)
69
+ else
60
70
  merge(overrides, &block).instance_eval do
61
71
  generator.new(klass).create(attributes, callbacks)
62
72
  end
63
- else
64
- build(overrides, &block)
65
73
  end
66
74
  end
67
75
 
76
+ def to_params(overrides={}, &block)
77
+ Fabrication.manager.to_params_stack << self
78
+ merge(overrides, &block).instance_eval do
79
+ generator.new(klass).to_params(attributes)
80
+ end
81
+ ensure
82
+ Fabrication.manager.to_params_stack.pop
83
+ end
84
+
68
85
  def to_attributes(overrides={}, &block)
69
86
  merge(overrides, &block).instance_eval do
70
87
  generator.new(klass).to_hash(attributes, callbacks)
@@ -37,6 +37,10 @@ class Fabrication::Schematic::Manager
37
37
  @build_stack ||= []
38
38
  end
39
39
 
40
+ def to_params_stack
41
+ @to_params_stack ||= []
42
+ end
43
+
40
44
  protected
41
45
 
42
46
  def raise_if_registered(name)
@@ -1,3 +1,3 @@
1
1
  module Fabrication
2
- VERSION = '2.8.1'
2
+ VERSION = '2.9.0'
3
3
  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.8.1
4
+ version: 2.9.0
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-09-21 00:00:00.000000000 Z
11
+ date: 2013-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord