Class: Syntropy::MockAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/syntropy/request/mock_adapter.rb

Overview

Implements a mock adapter for testing

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request_body) ⇒ MockAdapter

Returns a new instance of MockAdapter.



22
23
24
25
26
27
28
29
30
31
# File 'lib/syntropy/request/mock_adapter.rb', line 22

def initialize(request_body)
  @request_body_chunks =
    case request_body
    when Array then request_body
    when nil   then []
    else            [request_body]
    end

  @calls = []
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(sym, *args) ⇒ Object



52
53
54
# File 'lib/syntropy/request/mock_adapter.rb', line 52

def method_missing(sym, *args)
  calls << [sym, *args]
end

Instance Attribute Details

#callsObject (readonly)

Returns the value of attribute calls.



6
7
8
# File 'lib/syntropy/request/mock_adapter.rb', line 6

def calls
  @calls
end

#response_bodyObject (readonly)

Returns the value of attribute response_body.



6
7
8
# File 'lib/syntropy/request/mock_adapter.rb', line 6

def response_body
  @response_body
end

#response_headersObject (readonly)

Returns the value of attribute response_headers.



6
7
8
# File 'lib/syntropy/request/mock_adapter.rb', line 6

def response_headers
  @response_headers
end

Class Method Details

.mock(headers = {}, request_body = nil) ⇒ Object



56
57
58
59
60
# File 'lib/syntropy/request/mock_adapter.rb', line 56

def self.mock(headers = {}, request_body = nil)
  headers[':method'] ||= ''
  headers[':path'] ||= ''
  Request.new(headers, new(request_body))
end

Instance Method Details

#complete?(_req) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/syntropy/request/mock_adapter.rb', line 18

def complete?(_req)
  @request_body_chunks.empty?
end

#get_body(_req) ⇒ Object



12
13
14
15
16
# File 'lib/syntropy/request/mock_adapter.rb', line 12

def get_body(_req)
  body = @request_body_chunks.join('')
  @request_body_chunks.clear
  body
end

#get_body_chunk(_req) ⇒ Object



8
9
10
# File 'lib/syntropy/request/mock_adapter.rb', line 8

def get_body_chunk(_req)
  @request_body_chunks.shift
end

#respond(req, body, headers) ⇒ Object



37
38
39
40
41
42
# File 'lib/syntropy/request/mock_adapter.rb', line 37

def respond(req, body, headers)
  headers = @response_headers.merge(headers) if @response_headers
  @calls << [:respond, req, body, headers]
  @response_body = body
  @response_headers = headers
end

#respond_to_missing?(sym) ⇒ Boolean

Returns:

  • (Boolean)


50
# File 'lib/syntropy/request/mock_adapter.rb', line 50

def respond_to_missing?(sym) = true

#set_response_headers(headers) ⇒ Object



33
34
35
# File 'lib/syntropy/request/mock_adapter.rb', line 33

def set_response_headers(headers)
  @response_headers = headers
end

#statusObject



44
45
46
47
48
# File 'lib/syntropy/request/mock_adapter.rb', line 44

def status
  raise 'No response' if !response_headers

  response_headers[':status'] || HTTP::OK
end