Module: Cell::RailsExtensions::Testing

Defined in:
lib/cell/rails/testing.rb

Overview

This modules overrides Cell::Testing#controller_for and provides Rails-specific logic.

Constant Summary collapse

RAILS_8_0 =
Gem::Version.new("8.0.0")
RAILS_5_1 =
Gem::Version.new("5.1.0")
RAILS_5_0 =
Gem::Version.new("5.0.0")

Instance Method Summary collapse

Instance Method Details

#action_controller_test_request(controller_class) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/cell/rails/testing.rb', line 18

def action_controller_test_request(controller_class)
  version = ::Rails.gem_version

  if version >= RAILS_5_1 && version < RAILS_8_0
    ::ActionController::TestRequest.create(controller_class)
  elsif version >= RAILS_5_0 && version < RAILS_5_1
    ::ActionController::TestRequest.create
  else
    ::ActionController::TestRequest.new
  end
end

#controller_for(controller_class) ⇒ Object



9
10
11
12
13
14
15
16
# File 'lib/cell/rails/testing.rb', line 9

def controller_for(controller_class)
  return unless controller_class

  controller_class.new.tap do |ctl|
    ctl.request = action_controller_test_request(controller_class)
    ctl.instance_variable_set :@routes, ::Rails.application.routes.url_helpers
  end
end