class OptimusPrime::Base

Attributes

op_port[R]
wait_for[R]

Public Class Methods

new(opts={}) click to toggle source
# File lib/optimus_prime.rb, line 107
def initialize(opts={})
  @wait_for = opts[:wait_for] || 3
  @op_port = $port
end

Public Instance Methods

clear!() click to toggle source
# File lib/optimus_prime.rb, line 123
def clear!
  ::Faraday.get("http://localhost:#{op_port}/clear")
end
count(path_name) click to toggle source
# File lib/optimus_prime.rb, line 127
def count(path_name)
  requests = ::Faraday.get("http://localhost:#{op_port}/requests/#{path_name}").body
  JSON.parse(requests)["count"]
end
last_request_for(path_name) click to toggle source
# File lib/optimus_prime.rb, line 132
def last_request_for(path_name)
  seconds = 0
  while :waiting
    return {} if seconds > wait_for.to_f
    sleep(0.1)
    seconds += 0.1

    requests = ::Faraday.get("http://localhost:#{op_port}/requests/#{path_name}").body
    last_request = JSON.parse(requests)["last_request"]
    return last_request if !last_request.nil? && !last_request.empty?
  end
end
prime(path_name, response="", options={}) click to toggle source
# File lib/optimus_prime.rb, line 112
def prime(path_name, response="", options={})
  connection = ::Faraday.new("http://localhost:#{op_port}")
  connection.post do |request|
    request.url('/prime')
    request.headers['Accept'] = 'application/json'
    request.headers['Content-Type'] = 'application/json'
    # request.headers['Access-Control-Allow-Meth'] = 'post'
    request.body = ({ path_name: path_name, response: response }.merge!(options)).to_json
  end
end
wait_until_request(path_name, &block) click to toggle source
# File lib/optimus_prime.rb, line 145
def wait_until_request(path_name, &block)
  seconds = 0
  while :waiting
    sleep(0.1)

    raise "Timeout - waited for: #{wait_for}. \n--> No requests have been made to: #{path_name} endpoint." if seconds > wait_for.to_f
    seconds += 0.1

    request = ::Faraday.get("http://localhost:#{op_port}/requests/#{path_name}").body

    last_request = JSON.parse(request)["last_request"]

    begin
      return true if block.call(last_request)
      rescue Exception => e
        raise "#{e}" if seconds > wait_for.to_f
    end

  end
end