Module: Soaspec::ExchangeExtractor

Included in:
Exchange
Defined in:
lib/soaspec/exchange/exchange_extractor.rb

Overview

Methods for extracting aspects of the traffic for a request / response in an exchange from the ExchangeHandler that it’s tied to

Instance Method Summary collapse

Instance Method Details

#[](path) ⇒ String Also known as: value_from_path

Extract value from path api class

Examples:

Extract unique value

@exchange['unique_value_name']

Extract value via JSON path

@exchange['$..path.to.element']

Extract value via XPath

@exchange['//path/to/element']


33
34
35
# File 'lib/soaspec/exchange/exchange_extractor.rb', line 33

def [](path)
  exchange_handler.value_from_path(response, path.to_s)
end

#element?(path) ⇒ Boolean

Using same path syntax as []. Returns true of false depending on whether an element is found



41
42
43
44
45
46
# File 'lib/soaspec/exchange/exchange_extractor.rb', line 41

def element?(path)
  self[path]
  true
rescue NoElementAtPath
  false
end

#requestObject

Request of API call. Either intended request or actual request



9
10
11
# File 'lib/soaspec/exchange/exchange_extractor.rb', line 9

def request
  exchange_handler.request(@response)
end

#status_codeInteger

Get status code from api class. This is http response code for Web Api



15
16
17
# File 'lib/soaspec/exchange/exchange_extractor.rb', line 15

def status_code
  exchange_handler.status_code_for(response)
end

#successful_status_code?Boolean



20
21
22
# File 'lib/soaspec/exchange/exchange_extractor.rb', line 20

def successful_status_code?
  (200..299).cover? status_code
end

#to_hashHash

Return the response equivalent of the response. XML, JSON will be converted to a Hash

Examples:

Counting items in a JSON list

# Say there is JSON response {"notes":[{"title":"note1","note":"A note"},{"title":"note2"}]}
hash = @exchange.to_hash
expect(hash['notes'].count).to eq 2
expect(hash['notes'].first['title']).to eq 'note1'


67
68
69
# File 'lib/soaspec/exchange/exchange_extractor.rb', line 67

def to_hash
  exchange_handler.to_hash(response)
end

#values_from_path(path, attribute: nil) ⇒ Array

Returns List of values found at path.

Examples:

Counting items in a JSON list

# Say there is JSON response {"notes":[{"title":"note1","note":"A note"},{"title":"note2"}]}
titles = @exchange.values_at_path('$..title')
expect(titles.count).to eq 2
expect(titles.first).to eq 'note1'


56
57
58
# File 'lib/soaspec/exchange/exchange_extractor.rb', line 56

def values_from_path(path, attribute: nil)
  exchange_handler.values_from_path(response, path, attribute: attribute)
end