compel 0.4.3 → 0.5.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: a0f3b93d575f3944b1468d63d8e23ee2ecfca78c
4
- data.tar.gz: 4dc2e41aec14acc27928fa800bf16831f67829f7
3
+ metadata.gz: 760b8bea600ef35e2feaf4f884ce9993e60308f2
4
+ data.tar.gz: 2d6c7964a591146d16920535d751c5e4bc786d57
5
5
  SHA512:
6
- metadata.gz: e5c4eaebc721edf7480a06044ccd09f0e73773b0e7d4dcea66a3af2740258014e24a8f02e2f4523ca9f3851d59f4f9da30fdc25600f8501721fc53a1f6434b71
7
- data.tar.gz: 2a72784727bf7a24a7bed5a18958db7248358962d737c8ad1f052e763c88d932bafa70d4a58bfa581685ff7d9ce4c6c33bd7fc526826aa9fc403500381fe6552
6
+ metadata.gz: ac24d0904ce924b9c34a44faaaa5fc138840412ad57db195e743d7ac0e40251adc0e2dc1cf37bee934acb9a9c777006abbd920743f4a6d881cc360c4bc2b81c6
7
+ data.tar.gz: 727af6ca9af8da14f937aacf58f3a4b52224c38a7db63cabd4ad8d1cef1d9be8609b8fae29a5e6995d3e00e36cfc8c875465c7732fd6b001a4bc480a1ebb07f9
data/.travis.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
3
+ - 2.2.0
4
4
  - 2.2.3
5
+ - 2.3.0
@@ -1,3 +1,5 @@
1
+ # encoding: UTF-8
2
+
1
3
  module Compel
2
4
  module Validation
3
5
 
@@ -5,17 +7,42 @@ module Compel
5
7
 
6
8
  def validate_value
7
9
  unless valid?
8
- "'#{value}' is invalid"
10
+ "is invalid"
9
11
  end
10
12
  end
11
13
 
12
14
  private
13
15
 
14
16
  def valid?
15
- if option_value.arity == 1
16
- option_value.call(value)
17
+ CustomValidator.new(option_value).valid?(value)
18
+ end
19
+
20
+ end
21
+
22
+ class CustomValidator
23
+
24
+ attr_reader :caller,
25
+ :method
26
+
27
+ def initialize(caller)
28
+ ❨╯°□°❩╯︵┻━┻? caller
29
+ end
30
+
31
+ def valid?(value)
32
+ caller.send(method, value)
33
+ end
34
+
35
+ private
36
+
37
+ def ❨╯°□°❩╯︵┻━┻? caller
38
+ fail unless caller.is_a?(Proc) || caller.arity > 1
39
+
40
+ if caller.arity == 1
41
+ @caller = caller
42
+ @method = 'call'
17
43
  else
18
- eval("#{option_value.call}(#{value})", option_value.binding)
44
+ @caller = caller.binding.receiver
45
+ @method = caller.call
19
46
  end
20
47
  end
21
48
 
@@ -1,3 +1,3 @@
1
1
  module Compel
2
- VERSION = '0.4.3'
2
+ VERSION = '0.5.0'
3
3
  end
@@ -401,6 +401,11 @@ describe Compel::Builder do
401
401
  raise_error Compel::TypeError, 'invalid proc for if'
402
402
  end
403
403
 
404
+ it 'should raise_error for invalid proc 1' do
405
+ expect{ Compel.any.if(1) }.to \
406
+ raise_error Compel::TypeError, 'invalid proc for if'
407
+ end
408
+
404
409
  end
405
410
 
406
411
  end
@@ -671,21 +676,21 @@ describe Compel::Builder do
671
676
  result = Compel.any.if{:is_valid_one}.validate(2)
672
677
 
673
678
  expect(result.valid?).to eq(false)
674
- expect(result.errors).to include("'2' is invalid")
679
+ expect(result.errors).to include('is invalid')
675
680
  end
676
681
 
677
682
  it 'should validate with lambda' do
678
683
  result = Compel.any.if(Proc.new {|value| value == 2 }).validate(1)
679
684
 
680
685
  expect(result.valid?).to eq(false)
681
- expect(result.errors).to include("'1' is invalid")
686
+ expect(result.errors).to include('is invalid')
682
687
  end
683
688
 
684
689
  it 'should validate within an instance method' do
685
690
  result = CustomValidationsKlass.new(1).validate
686
691
 
687
692
  expect(result.valid?).to eq(false)
688
- expect(result.errors).to include("'1' is invalid")
693
+ expect(result.errors).to include('is invalid')
689
694
  end
690
695
 
691
696
  it 'should validate within an instance method 1' do
@@ -694,7 +699,7 @@ describe Compel::Builder do
694
699
  .validate_with_lambda(Proc.new {|value| value == [1, 2, 3] })
695
700
 
696
701
  expect(result.valid?).to eq(false)
697
- expect(result.errors).to include("'two' is invalid")
702
+ expect(result.errors).to include('is invalid')
698
703
  end
699
704
 
700
705
  it 'should use custom message with parsed value' do
@@ -707,6 +712,35 @@ describe Compel::Builder do
707
712
  expect(result.errors).to include('give me a 1!')
708
713
  end
709
714
 
715
+ it 'should validate a date value' do
716
+ to_validate = '1969-01-01T00:00:00'
717
+
718
+ def validate_time(value)
719
+ value > Time.at(0)
720
+ end
721
+
722
+ result = Compel.time.if{:validate_time}.validate(to_validate)
723
+
724
+ expect(result.valid?).to eq(false)
725
+ expect(result.errors).to include('is invalid')
726
+ end
727
+
728
+ it 'should raise_error for invalid custom method arity' do
729
+ def custom_method_arity_two(value, extra_arg)
730
+ false
731
+ end
732
+
733
+ def custom_method_arity_zero
734
+ false
735
+ end
736
+
737
+ expect{ Compel.integer.if{:custom_method_arity_two}.validate(1) }.to \
738
+ raise_error ArgumentError
739
+
740
+ expect{ Compel.integer.if{:custom_method_arity_zero}.validate(1) }.to \
741
+ raise_error ArgumentError
742
+ end
743
+
710
744
  end
711
745
 
712
746
  context 'valid' do
@@ -756,6 +790,18 @@ describe Compel::Builder do
756
790
  expect(result.valid?).to eq(true)
757
791
  end
758
792
 
793
+ it 'should validate a date value' do
794
+ to_validate = '1969-01-01T00:00:00'
795
+
796
+ def validate_time(value)
797
+ value < Time.at(0)
798
+ end
799
+
800
+ result = Compel.time.if{:validate_time}.validate(to_validate)
801
+
802
+ expect(result.valid?).to eq(true)
803
+ end
804
+
759
805
  end
760
806
 
761
807
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: compel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joaquim Adráz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-25 00:00:00.000000000 Z
11
+ date: 2016-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -149,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
149
  version: '0'
150
150
  requirements: []
151
151
  rubyforge_project:
152
- rubygems_version: 2.4.6
152
+ rubygems_version: 2.5.1
153
153
  signing_key:
154
154
  specification_version: 4
155
155
  summary: Ruby Object Coercion and Validation