Class: Valligator
- Inherits:
-
Object
- Object
- Valligator
- Defined in:
- lib/version.rb,
lib/valligator.rb,
lib/valligator_helper.rb
Defined Under Namespace
Modules: Helper
Constant Summary collapse
- VERSION =
'1.0'- Error =
Class.new(StandardError)
- ValidationError =
Class.new(Error)
- INFINITY =
1/0.0
Instance Attribute Summary collapse
-
#names ⇒ Object
readonly
Returns the value of attribute names.
-
#stack ⇒ Object
readonly
Returns the value of attribute stack.
-
#testees ⇒ Object
readonly
Returns the value of attribute testees.
Instance Method Summary collapse
-
#asserts(method, *args) {|Object| ... } ⇒ Object
When no block given it passes if the testee, called with a given method and arguments, returns truthy value.
-
#asserts_not(method, *args) {|Object| ... } ⇒ Object
When no block given it passes if the testee, called with a given method and arguments, returns falsy value.
-
#does_not_have(method, *args, &block) ⇒ Object
Is an alias for #asserts_not method.
-
#does_not_speak(*methods) ⇒ Valligator
Passes when the testee does not respond to all the methods.
-
#has(method, *args, &block) ⇒ Object
Is an alias for #asserts method.
-
#initialize(*testees, names: nil) ⇒ Valligator
constructor
Creates a new Valligator instance.
-
#is(method, *args, &block) ⇒ Object
Is an alias for #asserts method.
-
#is_a(*classes) ⇒ Object
Is an alias for #is_instance_of method.
-
#is_instance_of(*classes) ⇒ Valligator
Passes when the testee is an instance of either of the classes.
-
#is_not(method, *args, &block) ⇒ Object
Is an alias for #asserts_not method.
-
#is_not_a(*classes) ⇒ Object
Is an alias for #is_not_instance_of method.
-
#is_not_instance_of(*classes) ⇒ Valligator
Passes when the testee is not an instance of all of the classes.
- #method_missing(method, *args, &block) ⇒ Object
-
#speaks(*methods) ⇒ Valligator
Passes when the testee responds to all the methods.
Constructor Details
#initialize(*testees, names: nil) ⇒ Valligator
Creates a new Valligator instance
40 41 42 43 44 |
# File 'lib/valligator.rb', line 40 def initialize(*testees, names: nil) @testees = testees @names = Array(names) @stack = [] end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/valligator.rb', line 48 def method_missing(method, *args, &block) case when method[/^does_not_speak_(.+)?$/] then does_not_speak(*args.unshift($1.to_sym)) when method[/^speaks_(.+)?$/ ] then speaks(*args.unshift($1.to_sym)) when method[/^asserts_not_(.+)?$/] then asserts_not($1.to_sym, *args, &block) when method[/^asserts_(.+)?$/] then asserts($1.to_sym, *args, &block) when method[/^does_not_have_(.+)?$/] then does_not_have($1.to_sym, *args, &block) when method[/^has_(.+)?$/] then has($1.to_sym, *args, &block) when method[/^is_not_(.+)?$/] then is_not($1.to_sym, *args, &block) when method[/^is_(.+)?$/] then is($1.to_sym, *args, &block) else super(method, *args, &block) end end |
Instance Attribute Details
#names ⇒ Object (readonly)
Returns the value of attribute names.
10 11 12 |
# File 'lib/valligator.rb', line 10 def names @names end |
#stack ⇒ Object (readonly)
Returns the value of attribute stack.
11 12 13 |
# File 'lib/valligator.rb', line 11 def stack @stack end |
#testees ⇒ Object (readonly)
Returns the value of attribute testees.
9 10 11 |
# File 'lib/valligator.rb', line 9 def testees @testees end |
Instance Method Details
#asserts(method, *args) {|Object| ... } ⇒ Object
When no block given it passes if the testee, called with a given method and arguments, returns truthy value.
When block is given then it calls the testee with the given method and arguments. Then it calls the block in the context of the value returned above, and if the block returns truthy value the validation passes.
P.S. Truthy value is anything but nil or false.
165 166 167 |
# File 'lib/valligator.rb', line 165 def asserts(method, *args, &block) clone._asserts(__method__, method, *args, &block) end |
#asserts_not(method, *args) {|Object| ... } ⇒ Object
When no block given it passes if the testee, called with a given method and arguments, returns falsy value.
When block is given then it calls the testee with the given method and arguments. Then it calls the block in the context of the value returned above, and if the block returns falsy value the validation passes.
P.S. Falsy value is either nil or false.
194 195 196 |
# File 'lib/valligator.rb', line 194 def asserts_not(method, *args, &block) clone._asserts(__method__, method, *args, &block) end |
#does_not_have(method, *args, &block) ⇒ Object
Is an alias for #asserts_not method
222 223 224 |
# File 'lib/valligator.rb', line 222 def does_not_have(method, *args, &block) clone._asserts(__method__, method, *args, &block) end |
#does_not_speak(*methods) ⇒ Valligator
Passes when the testee does not respond to all the methods
136 137 138 |
# File 'lib/valligator.rb', line 136 def does_not_speak(*methods) clone._speaks(__method__, *methods) end |
#has(method, *args, &block) ⇒ Object
Is an alias for #asserts method
215 216 217 |
# File 'lib/valligator.rb', line 215 def has(method, *args, &block) clone._asserts(__method__, method, *args, &block) end |
#is(method, *args, &block) ⇒ Object
Is an alias for #asserts method
201 202 203 |
# File 'lib/valligator.rb', line 201 def is(method, *args, &block) clone._asserts(__method__, method, *args, &block) end |
#is_a(*classes) ⇒ Object
Is an alias for #is_instance_of method
99 100 101 |
# File 'lib/valligator.rb', line 99 def is_a(*classes) clone._is_instance_of(__method__, *classes) end |
#is_instance_of(*classes) ⇒ Valligator
Passes when the testee is an instance of either of the classes
75 76 77 |
# File 'lib/valligator.rb', line 75 def is_instance_of(*classes) clone._is_instance_of(__method__, *classes) end |
#is_not(method, *args, &block) ⇒ Object
Is an alias for #asserts_not method
208 209 210 |
# File 'lib/valligator.rb', line 208 def is_not(method, *args, &block) clone._asserts(__method__, method, *args, &block) end |
#is_not_a(*classes) ⇒ Object
Is an alias for #is_not_instance_of method
106 107 108 |
# File 'lib/valligator.rb', line 106 def is_not_a(*classes) clone._is_instance_of(__method__, *classes) end |
#is_not_instance_of(*classes) ⇒ Valligator
Passes when the testee is not an instance of all of the classes
92 93 94 |
# File 'lib/valligator.rb', line 92 def is_not_instance_of(*classes) clone._is_instance_of(__method__, *classes) end |
#speaks(*methods) ⇒ Valligator
Passes when the testee responds to all the methods
121 122 123 |
# File 'lib/valligator.rb', line 121 def speaks(*methods) clone._speaks(__method__, *methods) end |