require_relative 'hash_methods' require_relative 'xpath_not_found' RSpec::Matchers.define :contain_value do |expected| match do |actual| expect(actual.response.body.include_value?(expected)).to be true end failure_message do |actual| "expected that #{actual.response.body} would contain value #{expected}" end end RSpec::Matchers.define :contain_key do |expected| match do |actual| expect(actual.response.body.include_key?(expected)).to be true end failure_message do |actual| "expected that #{actual.response.body} would contain key #{expected}" end end RSpec::Matchers.define :have_element_at_xpath do |xpath| match do |exchange| expect { exchange[xpath] }.to_not raise_error NoElementAtXpath end end RSpec::Matchers.define :have_xpath_value do |expected_hash| match do |exchange| expected_hash = Hash[*expected_hash.flatten] if expected_hash.is_a?(Array) # For some reason Array was occuring expect(exchange[expected_hash.keys.first]).to eq expected_hash.values.first end failure_message do |actual| "expected that xpath '#{expected_hash.keys.first}' has value '#{expected_hash.values.first}' but was '#{actual[expected_hash.keys.first]}'" end end