Skip to content
This repository
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 92 lines (81 sloc) 2.772 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
require "spec_helper"

describe "render_template" do
  include RSpec::Rails::Matchers::RenderTemplate
  let(:response) { ActionController::TestResponse.new }

  context "given a hash" do
    it "delegates to assert_template" do
      self.should_receive(:assert_template).with({:this => "hash"}, "this message")
      "response".should render_template({:this => "hash"}, "this message")
    end
  end

  context "given a string" do
    it "delegates to assert_template" do
      self.should_receive(:assert_template).with("this string", "this message")
      "response".should render_template("this string", "this message")
    end
  end

  context "given a symbol" do
    it "converts to_s and delegates to assert_template" do
      self.should_receive(:assert_template).with("template_name", "this message")
      "response".should render_template(:template_name, "this message")
    end
  end

  context "with should" do
    context "when assert_template passes" do
      it "passes" do
        self.stub!(:assert_template)
        expect do
          response.should render_template("template_name")
        end.to_not raise_exception
      end
    end

    context "when assert_template fails" do
      it "uses failure message from assert_template" do
        self.stub!(:assert_template) do
          raise ActiveSupport::TestCase::Assertion.new("this message")
        end
        expect do
          response.should render_template("template_name")
        end.to raise_error("this message")
      end
    end

    context "when fails due to some other exception" do
      it "raises that exception" do
        self.stub!(:assert_template) do
          raise "oops"
        end
        expect do
          response.should render_template("template_name")
        end.to raise_exception("oops")
      end
    end
  end

  context "with should_not" do
    context "when assert_template fails" do
      it "passes" do
        def assert_template(*)
          raise ActiveSupport::TestCase::Assertion.new("this message")
        end
        expect do
          response.should_not render_template("template_name")
        end.to_not raise_exception
      end
    end

    context "when assert_template passes" do
      it "fails with custom failure message" do
        def assert_template(*); end
        expect do
          response.should_not render_template("template_name")
        end.to raise_error(/expected not to render \"template_name\", but did/)
      end
    end

    context "when fails due to some other exception" do
      it "raises that exception" do
        def assert_template(*); raise "oops"; end
        expect do
          response.should_not render_template("template_name")
        end.to raise_exception("oops")
      end
    end
  end
end
Something went wrong with that request. Please try again.