compel 0.4.3 → 0.5.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: 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