Class: CoreLibrary::ComparisonHelper
- Inherits:
-
Object
- Object
- CoreLibrary::ComparisonHelper
- Defined in:
- lib/apimatic-core/utilities/comparison_helper.rb
Overview
A utility that perform the comparison of the Response body and headers.
Class Method Summary collapse
-
.match_body(expected_body, actual_body, check_values: false, check_order: false, check_count: false) ⇒ Object
Compares the received body with the expected body.
-
.match_headers(expected_headers, actual_headers, allow_extra: true) ⇒ Object
Compares the received headers with the expected headers.
Class Method Details
.match_body(expected_body, actual_body, check_values: false, check_order: false, check_count: false) ⇒ Object
Compares the received body with the expected body.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/apimatic-core/utilities/comparison_helper.rb', line 33 def self.match_body(expected_body, actual_body, check_values: false, check_order: false, check_count: false) if expected_body.instance_of? Hash return false unless actual_body.instance_of? Hash for key in expected_body.keys return false unless actual_body.keys.include? key if check_values or expected_body[key].instance_of? Hash return false unless match_body(expected_body[key], actual_body[key], check_values: check_values, check_order: check_order, check_count: check_count) end end elsif expected_body.instance_of? Array return false unless actual_body.instance_of? Array if check_count == true && (expected_body.length != actual_body.length) return false else previous_matches = Array.new expected_body.each.with_index do |expected_element, i| matches = (actual_body.map.with_index do |received_element, j| j if match_body(expected_element, received_element, check_values: check_values, check_order: check_order, check_count: check_count) end).compact return false if matches.length == 0 if check_order == true return false if (i != 0 && matches.map{|x| previous_matches.map{|y| y > x}.all?}.all?) previous_matches = matches end end end elsif expected_body != actual_body return false end return true end |
.match_headers(expected_headers, actual_headers, allow_extra: true) ⇒ Object
Compares the received headers with the expected headers.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/apimatic-core/utilities/comparison_helper.rb', line 9 def self.match_headers(expected_headers, actual_headers, allow_extra: true) return false if ((actual_headers.length < expected_headers.length) || ((allow_extra == false) && (actual_headers.length > expected_headers.length))) actual_headers = Hash[actual_headers.map{|k, v| [k.to_s.downcase, v]}] expected_headers = Hash[expected_headers.map{|k, v| [k.to_s.downcase, v]}] expected_headers.each do |e_key, e_value| return false unless actual_headers.key?(e_key) return false if ((e_value != nil) && (e_value != actual_headers[e_key])) end return true end |