Skip to content

Commit

Permalink
work around lack of application controller by defaulting to ac::base
Browse files Browse the repository at this point in the history
fixes #922
  • Loading branch information
JonRowe authored and alindeman committed Feb 10, 2014
1 parent 3cc7692 commit 51c58ee
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 11 deletions.
3 changes: 2 additions & 1 deletion lib/rspec/rails/example/controller_example_group.rb
Expand Up @@ -55,9 +55,10 @@ def controller_class
# # ....
# end
def controller(base_class = nil, &body)
root_controller = defined?(ApplicationController) ? ApplicationController : ActionController::Base
base_class ||= RSpec.configuration.infer_base_class_for_anonymous_controllers? ?
controller_class :
ApplicationController
root_controller

metadata[:example_group][:described_class] = Class.new(base_class) do
def self.name; "AnonymousController"; end
Expand Down
46 changes: 36 additions & 10 deletions spec/rspec/rails/example/controller_example_group_spec.rb
Expand Up @@ -80,20 +80,46 @@ module RSpec::Rails
allow(group).to receive(:controller_class).and_return(Class.new)
end

it "infers the anonymous controller class when infer_base_class_for_anonymous_controllers is true" do
allow(RSpec.configuration).to receive(:infer_base_class_for_anonymous_controllers?).and_return(true)
group.controller { }
context "when infer_base_class_for_anonymous_controllers is true" do
before do
allow(RSpec.configuration).to receive(:infer_base_class_for_anonymous_controllers?).and_return(true)
end

it "infers the anonymous controller class" do
group.controller { }

controller_class = group.metadata[:example_group][:described_class]
expect(controller_class.superclass).to eq(group.controller_class)
end

it "infers the anonymous controller class when no ApplicationController is present" do
hide_const '::ApplicationController'
group.controller { }

controller_class = group.metadata[:example_group][:described_class]
expect(controller_class.superclass).to eq(group.controller_class)
controller_class = group.metadata[:example_group][:described_class]
expect(controller_class.superclass).to eq(group.controller_class)
end
end

it "sets the anonymous controller class to ApplicationController when infer_base_class_for_anonymous_controllers is false" do
allow(RSpec.configuration).to receive(:infer_base_class_for_anonymous_controllers?).and_return(false)
group.controller { }
context "when infer_base_class_for_anonymous_controllers is false" do
before do
allow(RSpec.configuration).to receive(:infer_base_class_for_anonymous_controllers?).and_return(false)
end

it "sets the anonymous controller class to ApplicationController" do
group.controller { }

controller_class = group.metadata[:example_group][:described_class]
expect(controller_class.superclass).to eq(ApplicationController)
end

it "sets the anonymous controller class to ActiveController::Base when no ApplicationController is present" do
hide_const '::ApplicationController'
group.controller { }

controller_class = group.metadata[:example_group][:described_class]
expect(controller_class.superclass).to eq(ApplicationController)
controller_class = group.metadata[:example_group][:described_class]
expect(controller_class.superclass).to eq(ActionController::Base)
end
end
end
end
Expand Down

0 comments on commit 51c58ee

Please sign in to comment.