dry-initializer 0.8.0 → 0.8.1

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: dc5b54635b8cfc7c85c33e0aac287c54919cb3de
4
- data.tar.gz: dde1379e2f5f9f86ad1de906e8402a326a850c70
3
+ metadata.gz: 6b5d5685f90f815d5bc7b45fcc0e342bb5d4545a
4
+ data.tar.gz: d6d8c4c59b72d4f7a9933dfb10e9b15350c16ecc
5
5
  SHA512:
6
- metadata.gz: 512704ff1885b0c9bbb147020b950e97e70eacd4405548cad5478b728eee2861c47e58f19ff4603c21edf08965372820386645fb451e3c93edfdb61f3185d3e2
7
- data.tar.gz: 7090b29b8c66d79c1b7c9f9ccb4019ec9ccc9ae07126a9c2b670eb4f6a0f6b4b669f450dd701514e24cab465a9d760b81443db5959d38834c4cec327ad9ec336
6
+ metadata.gz: 0e40ba0777d78ec4fcb44ced947679cf4b0e5db97e28d774b6c4e1d9edf27c971dee92387f35a2e4501ce5eaf516b4e4e8586268fc8bdcf2dca8cb7132a052ea
7
+ data.tar.gz: 1dfdc453fbff8f8050c18bd5f13ecf4ec5c3586386ece9198067d793629e08bb0c433e3aaaa1a4f7a080e9edc19f9e14b9034bc8bf9128dd3556eace65329e87
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## v0.8.1 2016-11-05
2
+
3
+ ### Added
4
+
5
+ * Support for `dry-struct`ish syntax for constraints (type as a second parameter) (@nepalez)
6
+
7
+ option :name, Dry::Types['strict.string']
8
+
9
+ [Compare v0.8.0...v0.8.1](https://github.com/dry-rb/dry-initializer/compare/v0.8.0..v0.8.1)
10
+
1
11
  ## v0.8.0 2016-11-05
2
12
 
3
13
  In this version we switched from key arguments to ** to support special keys:
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = "dry-initializer"
3
- gem.version = "0.8.0"
3
+ gem.version = "0.8.1"
4
4
  gem.author = ["Vladimir Kochnev (marshall-lee)", "Andrew Kozin (nepalez)"]
5
5
  gem.email = ["hashtable@yandex.ru", "andrew.kozin@gmail.com"]
6
6
  gem.homepage = "https://github.com/dryrb/dry-initializer"
@@ -13,7 +13,8 @@ module Dry::Initializer
13
13
  #
14
14
  # @return [self] itself
15
15
  #
16
- def param(name, **options)
16
+ def param(name, type = nil, **options)
17
+ options[:type] = type if type
17
18
  @initializer_builder = \
18
19
  initializer_builder.define(name, option: false, **options)
19
20
  initializer_builder.call(self)
@@ -25,7 +26,8 @@ module Dry::Initializer
25
26
  # @option (see #param)
26
27
  # @return (see #param)
27
28
  #
28
- def option(name, **options)
29
+ def option(name, type = nil, **options)
30
+ options[:type] = type if type
29
31
  @initializer_builder = \
30
32
  initializer_builder.define(name, option: true, **options)
31
33
  initializer_builder.call(self)
@@ -0,0 +1,35 @@
1
+ require "dry-types"
2
+
3
+ describe "type argument" do
4
+ before do
5
+ class Test::Foo
6
+ extend Dry::Initializer::Mixin
7
+ param :foo, Dry::Types["strict.string"]
8
+ option :bar, Dry::Types["strict.string"]
9
+ end
10
+ end
11
+
12
+ context "in case of param mismatch" do
13
+ subject { Test::Foo.new 1, bar: "2" }
14
+
15
+ it "raises TypeError" do
16
+ expect { subject }.to raise_error TypeError, /1/
17
+ end
18
+ end
19
+
20
+ context "in case of option mismatch" do
21
+ subject { Test::Foo.new "1", bar: 2 }
22
+
23
+ it "raises TypeError" do
24
+ expect { subject }.to raise_error TypeError, /2/
25
+ end
26
+ end
27
+
28
+ context "in case of match" do
29
+ subject { Test::Foo.new "1", bar: "2" }
30
+
31
+ it "completes the initialization" do
32
+ expect { subject }.not_to raise_error
33
+ end
34
+ end
35
+ end
@@ -3,13 +3,9 @@ require "dry-types"
3
3
  describe "type constraint" do
4
4
  context "by dry-type" do
5
5
  before do
6
- module Test::Types
7
- include Dry::Types.module
8
- end
9
-
10
6
  class Test::Foo
11
7
  extend Dry::Initializer::Mixin
12
- param :foo, type: Test::Types::Strict::String, optional: true
8
+ param :foo, type: Dry::Types["strict.string"], optional: true
13
9
  end
14
10
  end
15
11
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-initializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vladimir Kochnev (marshall-lee)
@@ -135,6 +135,7 @@ files:
135
135
  - spec/shared_definitions_spec.rb
136
136
  - spec/spec_helper.rb
137
137
  - spec/subclassing_spec.rb
138
+ - spec/type_argument_spec.rb
138
139
  - spec/type_constraint_spec.rb
139
140
  - spec/value_coercion_via_dry_types_spec.rb
140
141
  homepage: https://github.com/dryrb/dry-initializer
@@ -176,5 +177,6 @@ test_files:
176
177
  - spec/shared_definitions_spec.rb
177
178
  - spec/spec_helper.rb
178
179
  - spec/subclassing_spec.rb
180
+ - spec/type_argument_spec.rb
179
181
  - spec/type_constraint_spec.rb
180
182
  - spec/value_coercion_via_dry_types_spec.rb