Class: ApiValidator::ResponseExpectation
- Inherits:
-
Object
- Object
- ApiValidator::ResponseExpectation
show all
- Defined in:
- lib/api-validator/response_expectation.rb,
lib/api-validator/response_expectation/results.rb
Defined Under Namespace
Classes: Results
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(validator, options = {}, &block) ⇒ ResponseExpectation
Returns a new instance of ResponseExpectation.
7
8
9
10
11
12
|
# File 'lib/api-validator/response_expectation.rb', line 7
def initialize(validator, options = {}, &block)
@validator, @block = validator, block
(options.delete(:headers))
initialize_status(options.delete(:status))
initialize_schema(options.delete(:schema))
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
81
82
83
84
85
86
87
|
# File 'lib/api-validator/response_expectation.rb', line 81
def method_missing(method, *args, &block)
if respond_to_method_missing?(method)
@validator.send(method, *args, &block)
else
super
end
end
|
Instance Attribute Details
#status_validator ⇒ Object
Returns the value of attribute status_validator.
6
7
8
|
# File 'lib/api-validator/response_expectation.rb', line 6
def status_validator
@status_validator
end
|
Instance Method Details
57
58
59
|
# File 'lib/api-validator/response_expectation.rb', line 57
def ()
<< ApiValidator::Header.new()
end
|
#expect_post_type(type_uri) ⇒ Object
61
62
63
64
|
# File 'lib/api-validator/response_expectation.rb', line 61
def expect_post_type(type_uri)
response_filters << proc { |response| response.env['expected_post_type'] = type_uri }
type_uri
end
|
#expect_properties(properties) ⇒ Object
49
50
51
|
# File 'lib/api-validator/response_expectation.rb', line 49
def expect_properties(properties)
json_validators << ApiValidator::Json.new(properties)
end
|
#expect_schema(expected_schema, path = nil) ⇒ Object
53
54
55
|
# File 'lib/api-validator/response_expectation.rb', line 53
def expect_schema(expected_schema, path=nil)
schema_validators << ApiValidator::JsonSchema.new(expected_schema, path)
end
|
#expectations ⇒ Object
45
46
47
|
# File 'lib/api-validator/response_expectation.rb', line 45
def expectations
[status_validator].compact + + schema_validators + json_validators
end
|
37
38
39
|
# File 'lib/api-validator/response_expectation.rb', line 37
def
@header_validators ||= []
end
|
14
15
16
17
|
# File 'lib/api-validator/response_expectation.rb', line 14
def ()
return unless
self. << ApiValidator::Header.new()
end
|
#initialize_schema(expected_schema) ⇒ Object
24
25
26
27
|
# File 'lib/api-validator/response_expectation.rb', line 24
def initialize_schema(expected_schema)
return unless expected_schema
schema_validators << ApiValidator::JsonSchema.new(expected_schema)
end
|
#initialize_status(expected_status) ⇒ Object
19
20
21
22
|
# File 'lib/api-validator/response_expectation.rb', line 19
def initialize_status(expected_status)
return unless expected_status
self.status_validator = ApiValidator::Status.new(expected_status)
end
|
#json_validators ⇒ Object
29
30
31
|
# File 'lib/api-validator/response_expectation.rb', line 29
def json_validators
@json_validators ||= []
end
|
#respond_to_method_missing?(method) ⇒ Boolean
77
78
79
|
# File 'lib/api-validator/response_expectation.rb', line 77
def respond_to_method_missing?(method)
@validator.respond_to?(method)
end
|
#response_filters ⇒ Object
41
42
43
|
# File 'lib/api-validator/response_expectation.rb', line 41
def response_filters
@response_filters ||= []
end
|
#run ⇒ Object
66
67
68
69
70
|
# File 'lib/api-validator/response_expectation.rb', line 66
def run
return unless @block
response = instance_eval(&@block)
Results.new(response, validate(response))
end
|
#schema_validators ⇒ Object
33
34
35
|
# File 'lib/api-validator/response_expectation.rb', line 33
def schema_validators
@schema_validators ||= []
end
|
#validate(response) ⇒ Object
72
73
74
75
|
# File 'lib/api-validator/response_expectation.rb', line 72
def validate(response)
response_filters.each { |filter| filter.call(response) }
expectations.map { |expectation| expectation.validate(response) }
end
|