Skip to content

Commit 9e89329

Browse files
authored
Merge pull request #26 from lucasmazza/lm-install-method
Move install hooks to an `install` method.
2 parents c6f4a30 + ddd6f6b commit 9e89329

File tree

4 files changed

+45
-21
lines changed

4 files changed

+45
-21
lines changed

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,19 @@ RSpec.configure do |config|
4040
end
4141
```
4242

43+
## Outside Rails
44+
45+
For projects and gems using controller tests outside of a Rails application,
46+
invoke the `Rails::Controller::Testing.install` method inside your test suite
47+
setup to include the required modules on controller test cases.
48+
49+
```ruby
50+
# test/test_helper.rb
51+
52+
require 'rails-controller-testing'
53+
Rails::Controller::Testing.install
54+
```
55+
4356
## Usage
4457

4558
### assigns

lib/rails-controller-testing.rb

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,3 @@
1-
require 'active_support/lazy_load_hooks'
2-
require 'rails/controller/testing/test_process'
3-
require 'rails/controller/testing/integration'
4-
require 'rails/controller/testing/template_assertions'
1+
require 'rails/controller/testing'
2+
require 'rails/controller/testing/railtie' if defined?(Rails::Railtie)
53
require 'rails/controller/testing/version'
6-
7-
class Rails::Controller::Testing::Railtie < Rails::Railtie
8-
initializer "rails_controller_testing" do
9-
ActiveSupport.on_load(:action_controller) do
10-
ActionController::TestCase.include Rails::Controller::Testing::TestProcess
11-
ActionController::TestCase.include Rails::Controller::Testing::TemplateAssertions
12-
13-
ActionDispatch::IntegrationTest.include Rails::Controller::Testing::TemplateAssertions
14-
ActionDispatch::IntegrationTest.include Rails::Controller::Testing::Integration
15-
ActionDispatch::IntegrationTest.include Rails::Controller::Testing::TestProcess
16-
end
17-
18-
ActiveSupport.on_load(:action_view) do
19-
ActionView::TestCase.include Rails::Controller::Testing::TemplateAssertions
20-
end
21-
end
22-
end

lib/rails/controller/testing.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
require 'active_support/lazy_load_hooks'
2+
require 'rails/controller/testing/test_process'
3+
require 'rails/controller/testing/integration'
4+
require 'rails/controller/testing/template_assertions'
5+
6+
module Rails
7+
module Controller
8+
module Testing
9+
def self.install
10+
ActiveSupport.on_load(:action_controller) do
11+
ActionController::TestCase.include Rails::Controller::Testing::TestProcess
12+
ActionController::TestCase.include Rails::Controller::Testing::TemplateAssertions
13+
14+
ActionDispatch::IntegrationTest.include Rails::Controller::Testing::TemplateAssertions
15+
ActionDispatch::IntegrationTest.include Rails::Controller::Testing::Integration
16+
ActionDispatch::IntegrationTest.include Rails::Controller::Testing::TestProcess
17+
end
18+
19+
ActiveSupport.on_load(:action_view) do
20+
ActionView::TestCase.include Rails::Controller::Testing::TemplateAssertions
21+
end
22+
end
23+
end
24+
end
25+
end
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class Rails::Controller::Testing::Railtie < Rails::Railtie
2+
initializer "rails_controller_testing" do
3+
Rails::Controller::Testing.install
4+
end
5+
end

0 commit comments

Comments
 (0)