knight 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -4,6 +4,7 @@
4
4
  .config
5
5
  .yardoc
6
6
  Gemfile.lock
7
+ Gemfile.local
7
8
  InstalledFiles
8
9
  _yardoc
9
10
  coverage
data/Gemfile CHANGED
@@ -6,6 +6,6 @@ source 'https://rubygems.org'
6
6
  gemspec
7
7
 
8
8
  group :development, :test do
9
- gem 'rontgen'
9
+ gem 'rontgen', git: 'https://github.com/handiwiguna/rontgen'
10
10
  eval_gemfile('Gemfile.dev') if File.exists?('Gemfile.dev')
11
11
  end
data/README.md CHANGED
@@ -20,7 +20,39 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- TODO: Write usage instructions here
23
+ ```ruby
24
+ class User
25
+ attr_reader :username
26
+
27
+ def initialize(username)
28
+ @username = username
29
+ end
30
+ end
31
+ user = User.new('john')
32
+
33
+ validator = Knight::Validator.new(Rule::Presence.new(:username))
34
+ result = validator.run(user)
35
+ result.valid? # => true
36
+
37
+
38
+ class UserValidator
39
+ include Knight::InstanceMethod
40
+
41
+ validator.add(Knight::Rule::Presence.new(:username))
42
+
43
+ context :login do |validator|
44
+ validator.add(Knight::Rule::Presence.new(:username))
45
+ validator.add(Knight::Rule::Presence.new(:password))
46
+ end
47
+ end
48
+ validator = UserValidator.new(user)
49
+
50
+ result = validator.run
51
+ result.valid? # => true
52
+
53
+ result = validator.run(:login)
54
+ result.valid? # => false
55
+ ```
24
56
 
25
57
  ## Contributing
26
58
 
data/lib/knight/error.rb CHANGED
@@ -29,7 +29,7 @@ module Knight
29
29
  #
30
30
  # @api private
31
31
  def initialize(rule, resource)
32
- @rule = rule
32
+ @rule = rule
33
33
  @resource = resource
34
34
  end
35
35
 
@@ -45,16 +45,22 @@ module Knight
45
45
  rule.message % rule.to_hash.merge(value: value)
46
46
  end
47
47
 
48
- private
48
+ # Return error attribute name
49
+ #
50
+ # @return [String]
51
+ #
52
+ # @api private
53
+ def attribute_name
54
+ rule.attribute_name
55
+ end
49
56
 
50
- # Return attribute value
57
+ # Return error value
51
58
  #
52
59
  # @return [Object]
53
60
  #
54
61
  # @api private
55
62
  def value
56
- attribute = rule.attribute_name
57
- resource.public_send(attribute) if resource.respond_to?(attribute)
63
+ resource.public_send(attribute_name) if resource.respond_to?(attribute_name)
58
64
  end
59
65
  end
60
66
  end
@@ -4,6 +4,7 @@ module Knight
4
4
 
5
5
  # Base functionality that added when included to a class
6
6
  module InstanceMethods
7
+ DEFAULT_CONTEXT = :default
7
8
 
8
9
  # Return the resource
9
10
  #
@@ -42,27 +43,64 @@ module Knight
42
43
  #
43
44
  # class RegistrationValidator
44
45
  # include Knight::InstanceMethods
45
- # validator.add(Knight::Rule::Presence.new(:username))
46
46
  # end
47
47
  #
48
- # result = RegistrationValidator.new(user).result
48
+ # result = RegistrationValidator.new(user).run
49
49
  #
50
50
  # @return [Result]
51
51
  #
52
52
  # @api public
53
- def run(context = Validator::DEFAULT_CONTEXT)
54
- self.class.validator.run(resource, context)
53
+ def run(context = DEFAULT_CONTEXT)
54
+ self.class.validator(context).run(resource)
55
55
  end
56
56
 
57
57
  module ClassMethods
58
58
 
59
59
  # Return the validator object
60
60
  #
61
+ # @example
62
+ # class RegistrationValidator
63
+ # include Knight::InstanceMethods
64
+ #
65
+ # validator.add(Knight::Rule::Presence.new(:username))
66
+ # end
67
+ #
61
68
  # @return [Validator]
62
69
  #
70
+ # @api public
71
+ def validator(context = DEFAULT_CONTEXT)
72
+ validators.fetch(context) do |key|
73
+ validators[key] = Validator.new
74
+ end
75
+ end
76
+
77
+ # Return the validator object
78
+ #
79
+ # @example
80
+ # class RegistrationValidator
81
+ # include Knight::InstanceMethods
82
+ #
83
+ # context :register do |validator|
84
+ # validator.add(Knight::Rule::Presence.new(:username))
85
+ # end
86
+ # end
87
+ #
88
+ # @return [undefined]
89
+ #
90
+ # @api public
91
+ def context(name)
92
+ yield validator(name)
93
+ end
94
+
95
+ private
96
+
97
+ # Return the validators contextual based
98
+ #
99
+ # @return [Hash]
100
+ #
63
101
  # @api private
64
- def validator
65
- @validator = @validator || Validator.new
102
+ def validators
103
+ @validators = @validators || {}
66
104
  end
67
105
  end
68
106
  end
data/lib/knight/result.rb CHANGED
@@ -28,7 +28,7 @@ module Knight
28
28
  # @api private
29
29
  def initialize(resource, rules)
30
30
  @resource = resource
31
- @rules = rules
31
+ @rules = rules
32
32
  end
33
33
 
34
34
  # Check the result valid or not
@@ -67,6 +67,22 @@ module Knight
67
67
  end
68
68
  end
69
69
 
70
+ # Return the errors for specific attribute
71
+ #
72
+ # @example
73
+ # validator = Validator.new(Rule::Presence.new(:username))
74
+ # user = User.new(username: 'john')
75
+ #
76
+ # result = validator.run(resource)
77
+ # result.on(:username)
78
+ #
79
+ # @return [Set(Error)]
80
+ #
81
+ # @api public
82
+ def on(attribute)
83
+ errors.select { |error| error.attribute_name == attribute }
84
+ end
85
+
70
86
  private
71
87
 
72
88
  # Check an attribute to the rule
@@ -3,12 +3,20 @@
3
3
  module Knight
4
4
  class Validator
5
5
 
6
- DEFAULT_CONTEXT = :default
6
+ # Return validation rules
7
+ #
8
+ # @example
9
+ # validator = Validator.new(Rule::Presence.new(:username))
10
+ # validator.rules
11
+ #
12
+ # @return [Set(Rule)]
13
+ #
14
+ # @api public
15
+ attr_reader :rules
7
16
 
8
17
  # Initialize a validator
9
18
  #
10
19
  # @example
11
- # Validator.new
12
20
  # Validator.new(Rule::Presence.new(:username))
13
21
  #
14
22
  # @param [Array(Rule)] rules
@@ -17,8 +25,7 @@ module Knight
17
25
  #
18
26
  # @api public
19
27
  def initialize(*rules)
20
- @rules = {}
21
- rules.each { |rule| add(rule) }
28
+ @rules = Set.new(rules)
22
29
  end
23
30
 
24
31
  # Add a rule
@@ -28,64 +35,29 @@ module Knight
28
35
  # validator.add(Rule::Presence.new(:username))
29
36
  #
30
37
  # @param [Rule] rule
31
- # @param [Symbol] context
32
38
  #
33
39
  # @return [Set(Rule)]
34
40
  #
35
41
  # @api public
36
- def add(rule, context_name = DEFAULT_CONTEXT)
37
- context(context_name) { |rules| rules << rule } if rule
42
+ def add(rule)
43
+ rules << rule if rule
38
44
  end
39
45
 
40
46
  # Run the validator
41
47
  #
42
48
  # @example
43
- # validator = Validator.new(Rule::Presence.new(:username))
44
49
  # user = User.new(username: 'john')
50
+ #
51
+ # validator = Validator.new(Rule::Presence.new(:username))
45
52
  # validator.run(user)
46
53
  #
47
54
  # @param [Object] resource
48
- # @param [Symbol] context
49
55
  #
50
56
  # @return [Result]
51
57
  #
52
58
  # @api public
53
- def run(resource, context_name = DEFAULT_CONTEXT)
54
- Result.new(resource, rules(context_name))
55
- end
56
-
57
- # Run the validator
58
- #
59
- # @example
60
- # validator = Validator.new(Rule::Presence.new(:username))
61
- # validator.rules
62
- #
63
- # @param [Symbol] context
64
- #
65
- # @return [Set(Rule)]
66
- #
67
- # @api public
68
- def rules(context_name = DEFAULT_CONTEXT)
69
- @rules.fetch(context_name) do |key|
70
- @rules[key] = Set.new
71
- end
72
- end
73
-
74
- # Accept block
75
- #
76
- # @example
77
- # validator = Validator.new
78
- # validator.context :registration do |context|
79
- # context << Rule::Presence.new(:username)
80
- # end
81
- #
82
- # @param [Symbol] name
83
- #
84
- # @return [undefined]
85
- #
86
- # @api public
87
- def context(name)
88
- yield rules(name)
59
+ def run(resource)
60
+ Result.new(resource, rules)
89
61
  end
90
62
  end
91
63
  end
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Knight
4
- VERSION = '0.0.2'
4
+ VERSION = '0.0.3'
5
5
  end
@@ -5,17 +5,20 @@ require 'spec_helper'
5
5
  describe Knight do
6
6
  subject { result.valid? }
7
7
 
8
- let(:result) { validator.new(resource).run }
8
+ let(:object) { validator.new(resource) }
9
+ let(:resource) { user_class.new('john') }
9
10
  let(:validator) do
10
11
  Class.new do
11
12
  include InstanceMethods
12
13
  validator.add(Rule::Presence.new(:username))
13
- validator.add(Rule::ExactLength.new(:username, 4))
14
- validator.add(Rule::Inclusion.new(:username, %w(john bejo)))
15
- validator.add(Rule::Format.new(:username, /\Ajo/))
14
+
15
+ context :registration do |validator|
16
+ validator.add(Rule::ExactLength.new(:username, 4))
17
+ validator.add(Rule::Presence.new(:title))
18
+ validator.add(Rule::ExactLength.new(:description, 40))
19
+ end
16
20
  end
17
21
  end
18
-
19
22
  let(:user_class) do
20
23
  Class.new do
21
24
  attr_reader :username
@@ -25,6 +28,13 @@ describe Knight do
25
28
  end
26
29
  end
27
30
 
28
- let(:resource) { user_class.new('john') }
29
- it { should be_true }
31
+ context 'valid' do
32
+ let(:result) { object.run }
33
+ it { should be_true }
34
+ end
35
+
36
+ context 'invalid' do
37
+ let(:result) { object.run(:registration) }
38
+ it { should be_false }
39
+ end
30
40
  end
data/spec/spec_helper.rb CHANGED
@@ -9,7 +9,7 @@ if ENV['COVERAGE'] == 'true'
9
9
  Coveralls::SimpleCov::Formatter
10
10
  ]
11
11
  SimpleCov.start do
12
- add_filter "/spec/"
12
+ add_filter '/spec/'
13
13
  end
14
14
  end
15
15
 
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe InstanceMethods, '.context' do
6
+
7
+ let(:described_class) { Class.new { include InstanceMethods } }
8
+
9
+ it do
10
+ described_class.should_receive(:validator).with(:registration).and_return(Validator.new)
11
+ described_class.context(:registration) do |validator|
12
+ validator.add Rule::Presence.new(:foo)
13
+ end
14
+ end
15
+ end
@@ -3,10 +3,9 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe InstanceMethods, '.included' do
6
- subject { object }
6
+ subject { described_class }
7
7
 
8
- let(:object) { described_class }
9
- let(:klass) { Class.new }
8
+ let(:klass) { Class.new }
10
9
 
11
10
  it 'delegates to the ancestor' do
12
11
  included_ancestor = false
@@ -21,4 +20,10 @@ describe InstanceMethods, '.included' do
21
20
  klass.send(:include, subject)
22
21
  expect(klass).to respond_to(:validator)
23
22
  end
23
+
24
+ it 'extends the klass' do
25
+ klass.singleton_class.should_not include(described_class::ClassMethods)
26
+ klass.send(:include, subject)
27
+ klass.singleton_class.should include(described_class::ClassMethods)
28
+ end
24
29
  end
@@ -3,11 +3,21 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe InstanceMethods, '.validator' do
6
- subject { described_class.validator }
7
6
 
8
7
  let(:described_class) { Class.new { include InstanceMethods } }
9
8
  let(:object) { described_class.new(double('1')) }
10
9
 
11
- it { should be_instance_of(Validator) }
12
- specify { expect(subject).to equal(object.class.validator) }
10
+ context 'default context' do
11
+ subject { described_class.validator }
12
+
13
+ it { should be_instance_of(Validator) }
14
+ specify { expect(subject).to equal(object.class.validator) }
15
+ end
16
+
17
+ context 'registration context' do
18
+ subject { described_class.validator(:registration) }
19
+
20
+ it { should be_instance_of(Validator) }
21
+ specify { expect(subject).not_to equal(described_class.validator) }
22
+ end
13
23
  end
@@ -3,27 +3,31 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe InstanceMethods, '.run' do
6
- subject { object.run }
7
6
 
8
7
  let(:described_class) do
9
8
  Class.new do
10
9
  include InstanceMethods
11
10
  validator.add(Rule::Presence.new(:username))
12
- validator.add(Rule::Presence.new(:title), :registration)
11
+
12
+ context :registration do |validator|
13
+ validator.add(Rule::Presence.new(:username))
14
+ validator.add(Rule::Presence.new(:title))
15
+ end
13
16
  end
14
17
  end
15
18
  let(:object) { described_class.new(resource) }
16
19
  let(:resource) { double('resource') }
17
20
 
18
- context 'default context' do
21
+ context 'run without context' do
19
22
  subject { object.run }
23
+ it { should be_instance_of(Result) }
20
24
  specify { expect(subject.rules).to eql(described_class.validator.rules) }
21
25
  specify { expect(subject.rules.size).to eql(1) }
22
26
  end
23
27
 
24
- context 'register context' do
28
+ context 'run with context' do
25
29
  subject { object.run(:registration) }
26
- specify { expect(subject.rules).to eql(described_class.validator.rules(:registration)) }
27
- specify { expect(subject.rules.size).to eql(1) }
30
+ specify { expect(subject.rules).to eql(described_class.validator(:registration).rules) }
31
+ specify { expect(subject.rules.size).to eql(2) }
28
32
  end
29
33
  end
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Result, '#on' do
6
+ subject { result.on(:foo) }
7
+
8
+ let(:klass) do
9
+ Class.new do
10
+ attr_reader :foo
11
+ def initialize(foo)
12
+ @foo = foo
13
+ end
14
+ end
15
+ end
16
+
17
+ let(:result) { validator.run(resource) }
18
+ let(:validator) { Validator.new(*rules) }
19
+ let(:resource) { klass.new('bar') }
20
+ let(:rules) do
21
+ [
22
+ Rule::Presence.new(:foo),
23
+ Rule::ExactLength.new(:foo, 4),
24
+ Rule::Presence.new(:username),
25
+ Rule::ExactLength.new(:username, 3)
26
+ ]
27
+ end
28
+
29
+ specify { expect(subject.size).to eql(1) }
30
+ specify { expect(result.errors.size).to eql(2) }
31
+ end
@@ -3,27 +3,17 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Validator, '#add' do
6
- subject { validator.rules(context) }
6
+ subject { validator.rules }
7
7
 
8
8
  let(:validator) { described_class.new(rule1) }
9
9
  let(:rule1) { Rule::ExactLength.new(:username, 10) }
10
10
  let(:rule2) { Rule::Presence.new(:username) }
11
11
 
12
12
  before do
13
- validator.add(rule2, :register)
14
13
  validator.add(rule2)
15
14
  validator.add(nil)
16
15
  end
17
16
 
18
- context 'default_context' do
19
- let(:context) { :default }
20
- specify { expect(subject.size).to eql(2) }
21
- specify { expect(subject).to eql(Set.new([rule1, rule2])) }
22
- end
23
-
24
- context 'register' do
25
- let(:context) { :register }
26
- specify { expect(subject.size).to eql(1) }
27
- specify { expect(subject).to eql(Set.new([rule2])) }
28
- end
17
+ specify { expect(subject.size).to eql(2) }
18
+ specify { expect(subject).to eql(Set.new([rule1, rule2])) }
29
19
  end
@@ -3,24 +3,12 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Validator, '#run' do
6
+ subject { validator.run(resource) }
6
7
 
7
8
  let(:validator) { described_class.new(Rule::Presence.new(:username)) }
8
9
  let(:resource) { double('resource') }
9
10
 
10
- before do
11
- validator.add(Rule::Presence.new(:title), :register)
12
- end
13
-
14
- context 'default context' do
15
- subject { validator.run(resource) }
16
- it { should be_instance_of(Result) }
17
- its(:resource) { should eql(resource) }
18
- specify { expect(subject.rules).to eql(validator.rules) }
19
- end
20
-
21
- context 'register context' do
22
- subject { validator.run(resource, :register) }
23
- it { should be_instance_of(Result) }
24
- specify { expect(subject.rules).to eql(validator.rules(:register)) }
25
- end
11
+ it { should be_instance_of(Result) }
12
+ its(:resource) { should eql(resource) }
13
+ its(:rules) { should eql(validator.rules) }
26
14
  end
metadata CHANGED
@@ -2,14 +2,14 @@
2
2
  name: knight
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.2
5
+ version: 0.0.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Handi Wiguna
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-07 00:00:00.000000000 Z
12
+ date: 2013-08-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  prerelease: false
@@ -75,17 +75,18 @@ files:
75
75
  - lib/knight/version.rb
76
76
  - metrics/flog.yml
77
77
  - metrics/rubocop.yml
78
- - spec/integration/contextual_validator_spec.rb
79
78
  - spec/integration/knight_spec.rb
80
79
  - spec/spec_helper.rb
81
80
  - spec/unit/knight/error/class_methods/new_spec.rb
82
81
  - spec/unit/knight/error/message_spec.rb
82
+ - spec/unit/knight/instance_methods/class_methods/context_spec.rb
83
83
  - spec/unit/knight/instance_methods/class_methods/included_spec.rb
84
84
  - spec/unit/knight/instance_methods/class_methods/new_spec.rb
85
85
  - spec/unit/knight/instance_methods/class_methods/validator_spec.rb
86
86
  - spec/unit/knight/instance_methods/run_spec.rb
87
87
  - spec/unit/knight/result/class_methods/new_spec.rb
88
88
  - spec/unit/knight/result/errors_spec.rb
89
+ - spec/unit/knight/result/on_spec.rb
89
90
  - spec/unit/knight/result/valid_predicate_spec.rb
90
91
  - spec/unit/knight/rule/class_methods/new_spec.rb
91
92
  - spec/unit/knight/rule/error_spec.rb
@@ -111,8 +112,6 @@ files:
111
112
  - spec/unit/knight/rule/to_hash_spec.rb
112
113
  - spec/unit/knight/validator/add_spec.rb
113
114
  - spec/unit/knight/validator/class_methods/new_spec.rb
114
- - spec/unit/knight/validator/context_spec.rb
115
- - spec/unit/knight/validator/rules_spec.rb
116
115
  - spec/unit/knight/validator/run_spec.rb
117
116
  homepage: ''
118
117
  licenses: []
@@ -126,7 +125,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
125
  - !ruby/object:Gem::Version
127
126
  segments:
128
127
  - 0
129
- hash: 2891558261604624583
128
+ hash: -2162189312537362928
130
129
  version: '0'
131
130
  none: false
132
131
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -135,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
134
  - !ruby/object:Gem::Version
136
135
  segments:
137
136
  - 0
138
- hash: 2891558261604624583
137
+ hash: -2162189312537362928
139
138
  version: '0'
140
139
  none: false
141
140
  requirements: []
@@ -145,17 +144,18 @@ signing_key:
145
144
  specification_version: 3
146
145
  summary: ''
147
146
  test_files:
148
- - spec/integration/contextual_validator_spec.rb
149
147
  - spec/integration/knight_spec.rb
150
148
  - spec/spec_helper.rb
151
149
  - spec/unit/knight/error/class_methods/new_spec.rb
152
150
  - spec/unit/knight/error/message_spec.rb
151
+ - spec/unit/knight/instance_methods/class_methods/context_spec.rb
153
152
  - spec/unit/knight/instance_methods/class_methods/included_spec.rb
154
153
  - spec/unit/knight/instance_methods/class_methods/new_spec.rb
155
154
  - spec/unit/knight/instance_methods/class_methods/validator_spec.rb
156
155
  - spec/unit/knight/instance_methods/run_spec.rb
157
156
  - spec/unit/knight/result/class_methods/new_spec.rb
158
157
  - spec/unit/knight/result/errors_spec.rb
158
+ - spec/unit/knight/result/on_spec.rb
159
159
  - spec/unit/knight/result/valid_predicate_spec.rb
160
160
  - spec/unit/knight/rule/class_methods/new_spec.rb
161
161
  - spec/unit/knight/rule/error_spec.rb
@@ -181,6 +181,4 @@ test_files:
181
181
  - spec/unit/knight/rule/to_hash_spec.rb
182
182
  - spec/unit/knight/validator/add_spec.rb
183
183
  - spec/unit/knight/validator/class_methods/new_spec.rb
184
- - spec/unit/knight/validator/context_spec.rb
185
- - spec/unit/knight/validator/rules_spec.rb
186
184
  - spec/unit/knight/validator/run_spec.rb
@@ -1,41 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Knight do
6
- subject { result.valid? }
7
-
8
- let(:validator) do
9
- Class.new do
10
- include InstanceMethods
11
- validator.add(Rule::Presence.new(:username))
12
- validator.add(Rule::ExactLength.new(:username, 3..4), :registration)
13
-
14
- validator.context :registration do |context|
15
- context << Rule::Presence.new(:title)
16
- context << Rule::ExactLength.new(:description, 40)
17
- end
18
- end
19
- end
20
-
21
- let(:user_class) do
22
- Class.new do
23
- attr_reader :username
24
- def initialize(username)
25
- @username = username
26
- end
27
- end
28
- end
29
-
30
- context 'valid' do
31
- let(:result) { validator.new(resource).run }
32
- let(:resource) { user_class.new('john') }
33
- it { should be_true }
34
- end
35
-
36
- context 'invalid' do
37
- let(:result) { validator.new(resource).run(:registration) }
38
- let(:resource) { user_class.new('john') }
39
- it { should be_false }
40
- end
41
- end
@@ -1,13 +0,0 @@
1
- # encoding: utf-8
2
-
3
- describe Validator, '#context' do
4
-
5
- before do
6
- validator.context :registration do |context|
7
- context << Rule::Presence.new(:username)
8
- end
9
- end
10
-
11
- let(:validator) { described_class.new }
12
- specify { expect(validator.rules(:registration).size).to eql(1) }
13
- end
@@ -1,29 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Validator, '#rules' do
6
-
7
- let(:validator) { described_class.new(Rule::Presence.new(:username)) }
8
- let(:resource) { double('resource') }
9
-
10
- before do
11
- validator.add(Rule::Presence.new(:title), :register)
12
- end
13
-
14
- context 'default context' do
15
- subject { validator.rules }
16
- specify { expect(subject.size).to eql(1) }
17
- end
18
-
19
- context 'register context' do
20
- subject { validator.rules(:register) }
21
- specify { expect(subject.size).to eql(1) }
22
- end
23
-
24
- context 'not defined context' do
25
- subject { validator.rules(:else) }
26
- it { should be_instance_of(Set) }
27
- specify { expect(subject.size).to eql(0) }
28
- end
29
- end