dry-initializer-rails 2.0.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a894c708b1e5461c0d316687eb482b01797a2e3d
4
- data.tar.gz: fa349d24f5fa62e059e099bddf5f45d05f41a3d6
3
+ metadata.gz: 6c6808d3a56d819ed0d0f450cf8d866e69cdcf0c
4
+ data.tar.gz: f7f9480365f3b68b1503eafbe8b57ecd6314bc1e
5
5
  SHA512:
6
- metadata.gz: 0e773812ba782a02ca0cfdb35c1841d9c62942b03b6cd285802c295a47078cd3099614e1ee09061d16ae8f68f94e8aa8e62724ed4620111d71399ba3db71f397
7
- data.tar.gz: 6f80e04ad40745801b43063bae14463d5fd509b4d350e1e04d43542ffb0d95088d7d07f04bfbaae5e53b6b60438a6f9945c9d964890cd8753314a328324df25f
6
+ metadata.gz: 605829836cc66781e67c0c2d2b4c299d5a4885ab9e9c0facb4f3e29d8c6e8a9c49e312ea661bf189f42d6e9374f4777ccb252f3d3ba1f86f5ef21443620428a9
7
+ data.tar.gz: e3801f23bddecf3dbb6959ddca18f0b4b52f5de3bb7b11867da5976a700872695e1ae842d885ce79f6cd3c1f62c65cf260b5ca58f4d560db433c36d67b206cd7
data/CHANGELOG.md CHANGED
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
6
6
  and this project adheres to [Semantic Versioning](http://semver.org/).
7
7
 
8
+ ## [3.0.0] [2018-02-01]
9
+
10
+ ### Changed
11
+ - take `nil` as is without trying to find a record (nepalez)
12
+ - raise `ActiveRecord::RecordNotFound` in case of absent key (nepalez)
13
+
8
14
  ## [2.0.0] [2018-02-01]
9
15
 
10
16
  Update dependency to [dry-initializer] v2.4+ (nepalez)
@@ -30,4 +36,5 @@ First public release
30
36
  [0.0.2]: https://github.com/nepalez/dry-initializer-rails/compare/v0.0.1...v0.0.2
31
37
  [0.0.3]: https://github.com/nepalez/dry-initializer-rails/compare/v0.0.2...v0.0.3
32
38
  [1.0.0]: https://github.com/nepalez/dry-initializer-rails/compare/v0.0.3...v1.0.0
33
- [0.0.3]: https://github.com/nepalez/dry-initializer-rails/compare/v1.0.0...v2.0.0
39
+ [2.0.0]: https://github.com/nepalez/dry-initializer-rails/compare/v1.0.0...v2.0.0
40
+ [3.0.0]: https://github.com/nepalez/dry-initializer-rails/compare/v2.0.0...v3.0.0
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "dry-initializer-rails"
3
- gem.version = "2.0.0"
3
+ gem.version = "3.0.0"
4
4
  gem.author = ["Vladimir Kochnev (marshall-lee)", "Andrew Kozin (nepalez)"]
5
5
  gem.email = ["andrew.kozin@gmail.com"]
6
6
  gem.homepage = "https://github.com/nepalez/dry-initializer-rails"
@@ -7,8 +7,8 @@ rails_dispatcher = lambda do |model: nil, find_by: :id, **options|
7
7
 
8
8
  model = model.constantize if model.is_a? String
9
9
  coercer = lambda do |value|
10
- return value if value.instance_of? model
11
- model.find_by(find_by => value)
10
+ return value if value.nil? || value.instance_of?(model)
11
+ model.find_by! find_by => value
12
12
  end
13
13
 
14
14
  options.merge(type: coercer)
@@ -19,39 +19,14 @@ describe "assignment by custom key" do
19
19
  expect(subject.product).to eql item
20
20
  end
21
21
 
22
- it "works when records are absent" do
23
- subject = Test::Order.new("Man", product: "Something strange")
22
+ it "raises when records are absent" do
23
+ Test::Order.new("Dude", product: "The thing")
24
24
 
25
- expect(subject.user).to be_nil
26
- expect(subject.product).to be_nil
27
- end
28
- end
29
-
30
- context "with container syntax" do
31
- before do
32
- class Test::Order
33
- include Dry::Initializer.define -> do
34
- param :user, model: "User", find_by: "name"
35
- option :product, model: Item, find_by: :name
36
- end
37
- end
38
- end
39
-
40
- let!(:user) { User.create name: "Dude" }
41
- let!(:item) { Item.create name: "The thing" }
42
-
43
- it "works when records are present" do
44
- subject = Test::Order.new("Dude", product: "The thing")
45
-
46
- expect(subject.user).to eql user
47
- expect(subject.product).to eql item
48
- end
49
-
50
- it "works when records are absent" do
51
- subject = Test::Order.new("Man", product: "Something strange")
25
+ expect { Test::Order.new("Man", product: "The thing") }
26
+ .to raise_error ActiveRecord::RecordNotFound
52
27
 
53
- expect(subject.user).to be_nil
54
- expect(subject.product).to be_nil
28
+ expect { Test::Order.new("Dude", product: "Something strange") }
29
+ .to raise_error ActiveRecord::RecordNotFound
55
30
  end
56
31
  end
57
32
  end
@@ -18,10 +18,13 @@ describe "assignment by id" do
18
18
  expect(subject.product).to eql item
19
19
  end
20
20
 
21
- it "works when records are absent" do
22
- subject = Test::Order.new(0, product: 0)
21
+ it "raises when records are absent" do
22
+ Test::Order.new(user.id, product: item.id)
23
23
 
24
- expect(subject.user).to be_nil
25
- expect(subject.product).to be_nil
24
+ expect { Test::Order.new(0, product: item) }
25
+ .to raise_error ActiveRecord::RecordNotFound
26
+
27
+ expect { Test::Order.new(user, product: 0) }
28
+ .to raise_error ActiveRecord::RecordNotFound
26
29
  end
27
30
  end
@@ -0,0 +1,20 @@
1
+ describe "assignment by model" do
2
+ before do
3
+ class Test::Order
4
+ extend Dry::Initializer
5
+
6
+ param :user, model: "User"
7
+ option :product, model: Item
8
+ end
9
+ end
10
+
11
+ let!(:user) { User.create name: "Dude" }
12
+ let!(:item) { Item.create name: "The thing" }
13
+
14
+ it "works" do
15
+ subject = Test::Order.new(nil, product: nil)
16
+
17
+ expect(subject.user).to be_nil
18
+ expect(subject.product).to be_nil
19
+ end
20
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-initializer-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vladimir Kochnev (marshall-lee)
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-02-02 00:00:00.000000000 Z
12
+ date: 2018-02-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -135,6 +135,7 @@ files:
135
135
  - spec/dry/initializer/assignment_by_custom_key_spec.rb
136
136
  - spec/dry/initializer/assignment_by_id_spec.rb
137
137
  - spec/dry/initializer/assignment_by_model_spec.rb
138
+ - spec/dry/initializer/assignment_by_nil_spec.rb
138
139
  - spec/dry/initializer/base_syntax_spec.rb
139
140
  - spec/dummy/Rakefile
140
141
  - spec/dummy/app/models/item.rb
@@ -175,6 +176,7 @@ test_files:
175
176
  - spec/dry/initializer/assignment_by_custom_key_spec.rb
176
177
  - spec/dry/initializer/assignment_by_id_spec.rb
177
178
  - spec/dry/initializer/assignment_by_model_spec.rb
179
+ - spec/dry/initializer/assignment_by_nil_spec.rb
178
180
  - spec/dry/initializer/base_syntax_spec.rb
179
181
  - spec/dummy/Rakefile
180
182
  - spec/dummy/app/models/item.rb