validate 1.0.0 → 1.0.1

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.
data/README.md CHANGED
@@ -1,13 +1,13 @@
1
- # Validations
1
+ # Validate
2
2
 
3
- Validations is a validations library that can validate *any* object that can be
3
+ Validate is a validations library that can validate *any* object that can be
4
4
  converted to a hash using `to_hash`.
5
5
 
6
6
  ## Installation
7
7
 
8
8
  Add this line to your application's Gemfile:
9
9
 
10
- gem 'validations'
10
+ gem 'validate'
11
11
 
12
12
  And then execute:
13
13
 
@@ -15,7 +15,7 @@ And then execute:
15
15
 
16
16
  Or install it yourself as:
17
17
 
18
- $ gem install validations
18
+ $ gem install validate
19
19
 
20
20
  ## Usage
21
21
 
@@ -35,7 +35,7 @@ module Store
35
35
 
36
36
  # Order matters, first include library. Also: validations are
37
37
  # executed and checked in the order in which they are defined.
38
- include Validations
38
+ include Validate
39
39
 
40
40
  # Validations are contained within a block, so as to not pollute
41
41
  # the class namespace with a DSL's implementation.
@@ -11,15 +11,18 @@ module Validate
11
11
 
12
12
  def validates?(context)
13
13
  bool = @validations
14
- .select do |v|
15
- # `:when` is a special case, this gets processed right away and
16
- # filtered out...
17
- !(v[:opts] || {})[:when].is_a?(Proc) || context.instance_exec(&v[:opts][:when])
18
- end
19
14
  .map do |v|
20
15
  # destructure fields
21
16
  v[:fields].map {|f| v.merge(fields: f) }
22
17
  end.flatten(1)
18
+ .select do |v|
19
+ # `:when` is a special case, this gets processed right away and
20
+ # filtered out...
21
+ when_opt = (v[:opts] || {})[:when]
22
+ # :is_set is short for checking if then field is set
23
+ when_opt = -> { self.to_hash.include?(v[:fields]) } if when_opt == :is_set
24
+ !when_opt.is_a?(Proc) || context.instance_exec(&when_opt)
25
+ end
23
26
  .map do |v|
24
27
  # lastly, execute validation
25
28
  validator = if v[:validations]
@@ -1,4 +1,4 @@
1
1
 
2
2
  module Validate
3
- VERSION = '1.0.0'
3
+ VERSION = '1.0.1'
4
4
  end
@@ -86,6 +86,31 @@ describe Validate do
86
86
  end
87
87
  end
88
88
 
89
+ context 'when option' do
90
+ before do
91
+ class TestClass < BaseTestClass
92
+ validations do
93
+ validates_type_of :name, is: Symbol, when: :is_set
94
+ end
95
+ end
96
+ end
97
+
98
+ it 'validates when when does not match' do
99
+ test = TestClass.new(something: false)
100
+ test.validates?.should == true
101
+ end
102
+
103
+ it 'validates when when does match' do
104
+ test = TestClass.new(name: :sym)
105
+ test.validates?.should == true
106
+ end
107
+
108
+ it 'fails' do
109
+ test = TestClass.new(name: 'me')
110
+ test.validates?.should == false
111
+ end
112
+ end
113
+
89
114
  context 'run_when block' do
90
115
  before do
91
116
  class TestClass < BaseTestClass
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validate
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-11 00:00:00.000000000 Z
12
+ date: 2013-04-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec