Class: Ace::TestSupport::Fixtures::HTTPMocks::MockHTTPClient

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/test_support/fixtures/http_mocks.rb

Overview

Mock HTTP client for testing API interactions Simulates HTTP requests without making actual network calls

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeMockHTTPClient

Returns a new instance of MockHTTPClient.



16
17
18
19
20
21
# File 'lib/ace/test_support/fixtures/http_mocks.rb', line 16

def initialize
  @response = nil
  @error_response = nil
  @last_request = nil
  @request_history = []
end

Instance Attribute Details

#last_requestObject (readonly)

Returns the value of attribute last_request.



14
15
16
# File 'lib/ace/test_support/fixtures/http_mocks.rb', line 14

def last_request
  @last_request
end

#request_historyObject (readonly)

Returns the value of attribute request_history.



14
15
16
# File 'lib/ace/test_support/fixtures/http_mocks.rb', line 14

def request_history
  @request_history
end

Instance Method Details

#post(url, body, headers: {}) ⇒ MockResponse

Simulate a POST request

Parameters:

  • url (String)

    Request URL

  • body (Hash)

    Request body

  • headers (Hash) (defaults to: {})

    Request headers

Returns:



43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/ace/test_support/fixtures/http_mocks.rb', line 43

def post(url, body, headers: {})
  @last_request = {url: url, body: body, headers: headers}
  @request_history << @last_request

  if @error_response
    MockResponse.new(
      success: false,
      status: @error_response[:status],
      body: {"error" => {"message" => @error_response[:message], "type" => "api_error"}}
    )
  else
    MockResponse.new(success: true, status: 200, body: @response)
  end
end

#reset!Object

Reset the mock client state



59
60
61
62
63
64
# File 'lib/ace/test_support/fixtures/http_mocks.rb', line 59

def reset!
  @response = nil
  @error_response = nil
  @last_request = nil
  @request_history = []
end

#set_error_response(status, message) ⇒ Object

Set an error response

Parameters:

  • status (Integer)

    HTTP status code

  • message (String)

    Error message



33
34
35
36
# File 'lib/ace/test_support/fixtures/http_mocks.rb', line 33

def set_error_response(status, message)
  @error_response = {status: status, message: message}
  @response = nil
end

#set_response(body) ⇒ Object

Set a successful response

Parameters:

  • body (Hash)

    The response body



25
26
27
28
# File 'lib/ace/test_support/fixtures/http_mocks.rb', line 25

def set_response(body)
  @response = body
  @error_response = nil
end