Class: RailsTwirp::IntegrationTest

Inherits:
ActiveSupport::TestCase
  • Object
show all
Defined in:
lib/rails_twirp/testing/integration_test.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ IntegrationTest

Returns a new instance of IntegrationTest.



5
6
7
8
9
# File 'lib/rails_twirp/testing/integration_test.rb', line 5

def initialize(name)
  super
  reset!
  @before_rpc = []
end

Instance Attribute Details

#controllerObject (readonly)

Returns the value of attribute controller.



3
4
5
# File 'lib/rails_twirp/testing/integration_test.rb', line 3

def controller
  @controller
end

#requestObject (readonly)

Returns the value of attribute request.



3
4
5
# File 'lib/rails_twirp/testing/integration_test.rb', line 3

def request
  @request
end

#responseObject (readonly)

Returns the value of attribute response.



3
4
5
# File 'lib/rails_twirp/testing/integration_test.rb', line 3

def response
  @response
end

Instance Method Details

#appObject



39
40
41
# File 'lib/rails_twirp/testing/integration_test.rb', line 39

def app
  RailsTwirp.test_app
end

#before_rpc(&block) ⇒ Object



16
17
18
# File 'lib/rails_twirp/testing/integration_test.rb', line 16

def before_rpc(&block)
  @before_rpc << block
end

#reset!Object



11
12
13
14
# File 'lib/rails_twirp/testing/integration_test.rb', line 11

def reset!
  @request = nil
  @response = nil
end

#rpc(service, rpc, request, headers: nil) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/rails_twirp/testing/integration_test.rb', line 20

def rpc(service, rpc, request, headers: nil)
  @request = request
  service = app.twirp.routes.services[service].to_service

  rack_env = {}
  http_request = ActionDispatch::Request.new(rack_env)
  http_request.headers.merge! headers if headers.present?
  env = {rack_env: rack_env}

  @before_rpc.each do |hook|
    hook.call(env)
  end

  response = service.call_rpc rpc, request, env
  @response = response
  @controller = http_request.controller_instance
  response
end