Skip to content

Commit 3def656

Browse files
committed
expose render_template to view specs
1 parent 321a2e7 commit 3def656

File tree

9 files changed

+65
-52
lines changed

9 files changed

+65
-52
lines changed

lib/rspec/rails/example/controller_example_group.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ module ControllerExampleGroup
8383
include Webrat::Matchers
8484
include Webrat::Methods
8585
include RSpec::Matchers
86-
include RSpec::Rails::ControllerSpecMatchers
86+
include RSpec::Rails::Matchers::RedirectTo
87+
include RSpec::Rails::Matchers::RenderTemplate
8788

8889
module ClassMethods
8990
def controller_class

lib/rspec/rails/example/request_example_group.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ module RequestExampleGroup
2323
include Webrat::Matchers
2424
include Webrat::Methods
2525
include RSpec::Matchers
26-
include RSpec::Rails::ControllerSpecMatchers
26+
include RSpec::Rails::Matchers::RedirectTo
27+
include RSpec::Rails::Matchers::RenderTemplate
2728
include ActionController::TemplateAssertions
2829

2930
module InstanceMethods

lib/rspec/rails/example/view_example_group.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ module ViewExampleGroup
2626
include ActionView::TestCase::Behavior
2727
include RSpec::Rails::ViewAssigns
2828
include Webrat::Matchers
29+
include RSpec::Rails::Matchers::RenderTemplate
2930

3031
module InstanceMethods
3132
# :call-seq:
@@ -93,6 +94,10 @@ def _controller_path
9394
included do
9495
before do
9596
controller.controller_path = _controller_path
97+
# this won't be necessary if/when
98+
# https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/4903
99+
# is accepted and released
100+
@request ||= controller.request
96101
end
97102
end
98103

lib/rspec/rails/matchers.rb

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,26 @@
1-
require 'rspec/rails/matchers/controller_spec_matchers'
2-
require 'rspec/rails/matchers/controller_spec_matchers'
1+
module RSpec::Rails
2+
module Matchers
3+
end
4+
end
5+
6+
begin
7+
require 'test/unit/assertionfailederror'
8+
rescue LoadError
9+
module Test
10+
module Unit
11+
class AssertionFailedError < StandardError
12+
end
13+
end
14+
end
15+
end
16+
17+
begin
18+
require "action_controller"
19+
rescue LoadError
20+
end
21+
22+
require 'rspec/rails/matchers/render_template'
23+
require 'rspec/rails/matchers/redirect_to'
324
require 'rspec/rails/matchers/routing_spec_matchers'
425
require 'rspec/rails/matchers/model_matchers'
526
require 'rspec/rails/matchers/matcher_extensions'

lib/rspec/rails/matchers/controller_spec_matchers.rb

Lines changed: 0 additions & 46 deletions
This file was deleted.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module RSpec::Rails::Matchers
2+
module RedirectTo
3+
extend RSpec::Matchers::DSL
4+
5+
matcher :redirect_to do |destination|
6+
match_unless_raises Test::Unit::AssertionFailedError do |_|
7+
assert_redirected_to destination
8+
end
9+
10+
failure_message_for_should do
11+
rescued_exception.message
12+
end
13+
end
14+
end
15+
end
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
module RSpec::Rails::Matchers
2+
module RenderTemplate
3+
extend RSpec::Matchers::DSL
4+
5+
matcher :render_template do |options, message|
6+
match_unless_raises Test::Unit::AssertionFailedError do |_|
7+
options = options.to_s if Symbol === options
8+
assert_template options, message
9+
end
10+
11+
failure_message_for_should do
12+
rescued_exception.message
13+
end
14+
end
15+
end
16+
end

spec/rspec/rails/matchers/redirect_to_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
require "action_controller/test_case"
33

44
describe "redirect_to" do
5-
include RSpec::Rails::ControllerSpecMatchers
5+
include RSpec::Rails::Matchers::RedirectTo
66

77
it "delegates to assert_redirected_to" do
88
self.should_receive(:assert_redirected_to).with("destination")

spec/rspec/rails/matchers/render_template_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
require "spec_helper"
22

33
describe "render_template" do
4-
include RSpec::Rails::ControllerSpecMatchers
4+
include RSpec::Rails::Matchers::RenderTemplate
55

66
it "uses failure message from render_template" do
77
self.stub!(:assert_template).and_raise(

0 commit comments

Comments
 (0)