Class: ApiTester::MethodCaseTest
- Inherits:
-
Object
- Object
- ApiTester::MethodCaseTest
- Defined in:
- lib/api-tester/method_case_test.rb
Overview
Class for testing methods
Direct Known Subclasses
FormatTest, GoodCaseTest, RequiredFieldsTest, TypoClass, UnexpectedFieldsTest, VerbClass
Instance Attribute Summary collapse
-
#expected_response ⇒ Object
Returns the value of attribute expected_response.
-
#module_name ⇒ Object
Returns the value of attribute module_name.
-
#payload ⇒ Object
Returns the value of attribute payload.
-
#reports ⇒ Object
Returns the value of attribute reports.
-
#response ⇒ Object
Returns the value of attribute response.
-
#url ⇒ Object
Returns the value of attribute url.
Instance Method Summary collapse
- #check ⇒ Object
- #check_response_code ⇒ Object
- #extra_field_report(field) ⇒ Object
- #increment_fields(seen_fields) ⇒ Object
-
#initialize(response:, payload:, expected_response:, url:, verb:, module_name:) ⇒ MethodCaseTest
constructor
A new instance of MethodCaseTest.
- #json_parse(body) ⇒ Object
- #missing_field_report(field) ⇒ Object
- #response_code_report ⇒ Object
Constructor Details
#initialize(response:, payload:, expected_response:, url:, verb:, module_name:) ⇒ MethodCaseTest
Returns a new instance of MethodCaseTest.
15 16 17 18 19 20 21 22 |
# File 'lib/api-tester/method_case_test.rb', line 15 def initialize(response:, payload:, expected_response:, url:, verb:, module_name:) self.payload = payload self.response = response self.expected_response = expected_response self.reports = [] self.url = "#{verb} #{url}" self.module_name = module_name end |
Instance Attribute Details
#expected_response ⇒ Object
Returns the value of attribute expected_response.
8 9 10 |
# File 'lib/api-tester/method_case_test.rb', line 8 def expected_response @expected_response end |
#module_name ⇒ Object
Returns the value of attribute module_name.
13 14 15 |
# File 'lib/api-tester/method_case_test.rb', line 13 def module_name @module_name end |
#payload ⇒ Object
Returns the value of attribute payload.
9 10 11 |
# File 'lib/api-tester/method_case_test.rb', line 9 def payload @payload end |
#reports ⇒ Object
Returns the value of attribute reports.
11 12 13 |
# File 'lib/api-tester/method_case_test.rb', line 11 def reports @reports end |
#response ⇒ Object
Returns the value of attribute response.
10 11 12 |
# File 'lib/api-tester/method_case_test.rb', line 10 def response @response end |
#url ⇒ Object
Returns the value of attribute url.
12 13 14 |
# File 'lib/api-tester/method_case_test.rb', line 12 def url @url end |
Instance Method Details
#check ⇒ Object
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/api-tester/method_case_test.rb', line 54 def check if check_response_code evaluator = ApiTester::ResponseEvaluator.new actual_body: json_parse(response.body), expected_fields: expected_response evaluator.missing_fields.map { |field| missing_field_report(field) } evaluator.extra_fields.map { |field| extra_field_report(field) } increment_fields evaluator.seen_fields end reports end |
#check_response_code ⇒ Object
65 66 67 68 69 70 71 |
# File 'lib/api-tester/method_case_test.rb', line 65 def check_response_code if response.code != expected_response.code response_code_report return false end true end |
#extra_field_report(field) ⇒ Object
44 45 46 47 48 49 50 51 52 |
# File 'lib/api-tester/method_case_test.rb', line 44 def extra_field_report(field) report = Report.new description: "#{module_name} - Found extra field #{field}", url: url, request: payload, expected_response: expected_response, actual_response: response reports << report nil end |
#increment_fields(seen_fields) ⇒ Object
73 74 75 |
# File 'lib/api-tester/method_case_test.rb', line 73 def increment_fields(seen_fields) seen_fields.each(&:seen) end |
#json_parse(body) ⇒ Object
77 78 79 80 81 |
# File 'lib/api-tester/method_case_test.rb', line 77 def json_parse(body) JSON.parse!(body) rescue JSON::ParserError body end |
#missing_field_report(field) ⇒ Object
34 35 36 37 38 39 40 41 42 |
# File 'lib/api-tester/method_case_test.rb', line 34 def missing_field_report(field) report = Report.new description: "#{module_name} - Missing field #{field}", url: url, request: payload, expected_response: expected_response, actual_response: response reports << report nil end |
#response_code_report ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/api-tester/method_case_test.rb', line 24 def response_code_report report = StatusCodeReport.new description: "#{module_name} - Incorrect response code", url: url, request: payload, expected_status_code: expected_response.code, actual_status_code: "#{response.code} : #{response.body}" reports << report nil end |