prefactory 0.5.0 → 0.6.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: c1abdafe59af749590d226bcdb0b63c04f365832
4
- data.tar.gz: 8553ebbca23fce19f82b16a8d89928165fafdfd2
3
+ metadata.gz: 95b877ff898937be95f990b77ae54bdf56cdfc98
4
+ data.tar.gz: 62fe2f5a16f43f6c24e7163a26ec5d7644eff8fe
5
5
  SHA512:
6
- metadata.gz: a224b382181a1d36f12adef59627e7f75f82ff11f1d530ce2fb201c6ffa9d759587a9a657b6e6ec2a6260f095870a5cd0296a0c35fad6e2f414a5286b881de2d
7
- data.tar.gz: 8b14d70581d33d8993ea9e306573d77d2726e17fab359b8642b216a4743ee998d24cf3a79a79f998df85bdf6a7c70dcaff72532159661d3f9eac09b7cb6f40e2
6
+ metadata.gz: 3332c9909eeeb534459fbfc2c160e92c9d16b6fb011dccfedaf020f584debc47e03340d613b325c305b3fdd8c910e63064954fef22fe87877ca90c80aca600b2
7
+ data.tar.gz: 6a4a33926f48246b5a3bb25756b3cc7e64ad2b90e244bc8d23322110e83de4a5ec671e655eedea5f8168900125c4dd7acf86596c7037c3ef017c4ade048cdde2
@@ -2,10 +2,10 @@ language: ruby
2
2
  rvm:
3
3
  - 1.9.3
4
4
  - 2.0.0
5
- - 2.1.2
5
+ - 2.2.3
6
6
  env:
7
7
  - ACTIVE_RECORD_VERSION=4.0.0 RSPEC_VERSION=2.99
8
8
  - ACTIVE_RECORD_VERSION=4.0.0
9
9
  - ACTIVE_RECORD_VERSION=4.1.0 RSPEC_VERSION=2.99
10
10
  - ACTIVE_RECORD_VERSION=4.1.0
11
- - ACTIVE_RECORD_VERSION=4.2.0.beta3
11
+ - ACTIVE_RECORD_VERSION=4.2.0
@@ -5,6 +5,7 @@ class PrefactoryLookup < ActiveRecord::Base
5
5
  t.column :key, :string
6
6
  t.column :result_class, :string
7
7
  t.column :result_id, :integer
8
+ t.column :result_value, :text
8
9
  t.index [:key], :unique => true
9
10
  end
10
11
  end
@@ -21,5 +21,5 @@
21
21
  # SOFTWARE.
22
22
 
23
23
  module Prefactory
24
- VERSION = "0.5.0"
24
+ VERSION = "0.6.0"
25
25
  end
@@ -23,6 +23,7 @@
23
23
  require 'prefactory/active_record_integration'
24
24
  require 'rspec_around_all'
25
25
  require 'prefactory/prefactory_lookup'
26
+ require 'yaml'
26
27
 
27
28
  module Prefactory
28
29
  class NotDefined
@@ -38,7 +39,11 @@ module Prefactory
38
39
  @prefactory_memo[key] ||= begin
39
40
  lookup = prefactory_lookup(key)
40
41
  if lookup.present?
41
- lookup[:result_class].constantize.find(lookup[:result_id])
42
+ if lookup[:result_class]
43
+ lookup[:result_class].constantize.find(lookup[:result_id])
44
+ else
45
+ YAML.load(lookup[:result_value])
46
+ end
42
47
  else
43
48
  Prefactory::NotDefined
44
49
  end
@@ -62,10 +67,20 @@ module Prefactory
62
67
  result = create(key, *args) if respond_to?(:create)
63
68
  end
64
69
  if result.present?
65
- PrefactoryLookup.where(:key => key).first_or_initialize.tap do |lookup|
66
- lookup.result_class = result.class.name
67
- lookup.result_id = result.id
68
- lookup.save!
70
+ if result.respond_to?(:id)
71
+ PrefactoryLookup.where(:key => key).first_or_initialize.tap do |lookup|
72
+ lookup.result_class = result.class.name
73
+ lookup.result_id = result.id
74
+ lookup.result_value = nil
75
+ lookup.save!
76
+ end
77
+ else
78
+ PrefactoryLookup.where(:key => key).first_or_initialize.tap do |lookup|
79
+ lookup.result_class = nil
80
+ lookup.result_id = nil
81
+ lookup.result_value = YAML.dump(result)
82
+ lookup.save!
83
+ end
69
84
  end
70
85
  else
71
86
  warn "WARNING: Failed to add #{key} to prefactory: block result not present"
@@ -25,24 +25,25 @@ require 'erb'
25
25
  config = YAML.load(ERB.new(File.read(File.dirname(__FILE__) + '/database.yml')).result)
26
26
  ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
27
27
  ActiveRecord::Base.establish_connection(config[ENV['DB'] || 'sqlite3'])
28
+ ActiveRecord::Base.raise_in_transactional_callbacks = true if ActiveRecord::Base.respond_to?(:raise_in_transactional_callbacks)
28
29
 
29
30
  ActiveRecord::Schema.define(:version => 2) do
30
31
  create_table :blogs, :force => true do |t|
31
32
  t.column :title, :string
32
33
  t.column :counter, :integer
33
- t.timestamps
34
+ t.timestamps :null => false
34
35
  end
35
36
  create_table :comments, :force => true do |t|
36
37
  t.column :blog_id, :integer
37
38
  t.column :counter, :integer
38
39
  t.column :text, :string
39
- t.timestamps
40
+ t.timestamps :null => false
40
41
  end
41
42
  create_table :links, :force => true do |t|
42
43
  t.column :blog_id, :integer
43
44
  t.column :counter, :integer
44
45
  t.column :name, :string
45
- t.timestamps
46
+ t.timestamps :null => false
46
47
  end
47
48
  end
48
49
 
@@ -118,6 +118,15 @@ describe Prefactory do
118
118
  expect(some_other_blog.counter).to eq(24)
119
119
  end
120
120
  end
121
+ context 'when the block returns something that does not respond_to? :id' do
122
+ before :all do
123
+ prefactory_add(:freeze_time) { Time.parse('2015-09-13 17:15') }
124
+ end
125
+ it do
126
+ expect(freeze_time).to be_a Time
127
+ expect(freeze_time).to eq Time.parse('2015-09-13 17:15')
128
+ end
129
+ end
121
130
  context "when referencing the object within the before-all block" do
122
131
  before :all do
123
132
  prefactory_add :blog
@@ -198,7 +207,7 @@ describe Prefactory do
198
207
  expect(@before_each_exception).to be_present
199
208
  end
200
209
  it "raises an error in an it-context" do
201
- expect { prefactory_add(:comment) }.to raise_error
210
+ expect { prefactory_add(:comment) }.to raise_error(/can only be used in a before\(:all\)/)
202
211
  end
203
212
  it "works in a before-all context" do
204
213
  expect(prefactory(:blog)).to be_present
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prefactory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - developers@socialcast.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-30 00:00:00.000000000 Z
11
+ date: 2015-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec_around_all
@@ -183,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
183
183
  version: '0'
184
184
  requirements: []
185
185
  rubyforge_project:
186
- rubygems_version: 2.2.2
186
+ rubygems_version: 2.4.8
187
187
  signing_key:
188
188
  specification_version: 4
189
189
  summary: Transaction-wrapped RSpec example groups with FactoryGirl integration