Skip to content

Commit 954b273

Browse files
authored
Rails: add ControllerHelpers in tests (#822)
I want to make the tests look more like Rails controller tests, so we can add custom methods here.
1 parent 39bcc62 commit 954b273

14 files changed

+32
-17
lines changed

.rubocop.yml

+3
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ Style/StringLiterals: { EnforcedStyle: double_quotes }
3030
Style/SymbolArray: { EnforcedStyle: brackets }
3131
Style/WordArray: { EnforcedStyle: brackets }
3232

33+
# enable after Rails
34+
RSpec/Rails/InferredSpecType: { Enabled: false }
35+
3336
# want to enable these, but they don't work right when using `.rubocop_todo.yml`
3437
Style/DocumentationMethod: { Enabled: false }
3538
Style/Documentation: { Enabled: false }

spec/app_spec.rb

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
require "support/active_record"
55

66
describe "App" do
7+
include ControllerHelpers
8+
79
describe "Rails" do
810
it "returns a fake application" do
911
expect(Rails.application.config.cache_classes).to be(true)

spec/config/asset_pipeline_spec.rb

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
require "spec_helper"
44

55
describe "AssetPipeline" do
6+
include ControllerHelpers
7+
68
it "handles asset requests" do
79
get("/assets/stylesheets/application.css")
810

spec/controllers/debug_controller_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
app_require "controllers/debug_controller"
77

8-
describe DebugController do
8+
describe DebugController, type: :controller do
99
describe "GET /debug" do
1010
def setup
1111
expect(Delayed::Job).to receive(:count).and_return(42)

spec/controllers/exports_controller_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
app_require "controllers/exports_controller"
66

7-
describe ExportsController do
7+
describe ExportsController, type: :controller do
88
describe "GET /feeds/export" do
99
def expected_xml
1010
<<~XML

spec/controllers/feeds_controller_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
app_require "controllers/feeds_controller"
66

7-
describe FeedsController do
7+
describe FeedsController, type: :controller do
88
describe "#index" do
99
it "renders a list of feeds" do
1010
create_pair(:feed)

spec/controllers/imports_controller_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
app_require "controllers/imports_controller"
66

7-
describe ImportsController do
7+
describe ImportsController, type: :controller do
88
describe "GET /feeds/import" do
99
it "displays the import options" do
1010
get "/feeds/import"

spec/controllers/passwords_controller_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
require "spec_helper"
44
require "support/active_record"
55

6-
RSpec.describe PasswordsController do
6+
RSpec.describe PasswordsController, type: :controller do
77
def setup
88
expect(UserRepository).to receive(:setup_complete?).twice.and_return(false)
99
end

spec/controllers/sessions_controller_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
require "spec_helper"
44

5-
describe SessionsController do
5+
describe SessionsController, type: :controller do
66
describe "#new" do
77
it "has a password input and login button" do
88
get "/login"

spec/controllers/stories_controller_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
require "spec_helper"
44

5-
describe StoriesController do
5+
describe StoriesController, type: :controller do
66
let(:story_one) { create(:story) }
77
let(:story_two) { create(:story) }
88
let(:stories) { [story_one, story_two] }

spec/controllers/tutorials_controller_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
require "spec_helper"
44
require "support/active_record"
55

6-
RSpec.describe TutorialsController do
6+
RSpec.describe TutorialsController, type: :controller do
77
describe "#index" do
88
context "when a user has not been setup" do
99
let(:user) { instance_double(User) }

spec/spec_helper.rb

+2-9
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
require "date"
1515

1616
require_relative "support/coverage"
17+
require_relative "support/controller_helpers"
1718
require_relative "support/factory_bot"
1819
require_relative "support/webmock"
1920
require_relative "factories"
@@ -36,18 +37,10 @@ def custom_request(method, path, params = {}, env = {}, &)
3637
end
3738

3839
RSpec.configure do |config|
39-
config.include(Rack::Test::Methods)
40+
config.include(ControllerHelpers, type: :controller)
4041
config.include(RSpecHtmlMatchers)
4142
end
4243

4344
def app_require(file)
4445
require File.expand_path(File.join("app", file))
4546
end
46-
47-
def app
48-
Stringer
49-
end
50-
51-
def session
52-
last_request.env["rack.session"]
53-
end

spec/support/controller_helpers.rb

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# frozen_string_literal: true
2+
3+
module ControllerHelpers
4+
include Rack::Test::Methods
5+
6+
def app
7+
Stringer
8+
end
9+
10+
def session
11+
last_request.env["rack.session"]
12+
end
13+
end

spec/utils/i18n_support_spec.rb

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
require "spec_helper"
44

55
describe "i18n" do
6+
include ControllerHelpers
7+
68
before do
79
allow(UserRepository).to receive(:setup_complete?).and_return(false)
810
ENV["LOCALE"] = locale

0 commit comments

Comments
 (0)