Rails/Rspec - test une redirection dans le contrôleur

Donc je suis en train d'écrire un test pour un contrôleur dans un contrôleur existant juste ne pas en avoir un avant. Ce que je veux est un test de redirection qui se passe quand quelqu'un n'est pas autorisé à modifier quelque chose vs quelqu'un qui est autorisé à le modifier.

le contrôleur de l'action modifier

def edit
  if !@scorecard.reviewed? || admin?
    @company = @scorecard.company
    @custom_css_include = "confirmation_page"
  else
    redirect_to :back
  end
end

Donc, si une carte de pointage a été examiné ensuite seul un administrateur peut modifier ce score.
Les itinéraires de ce contrôleur..

# scorecards
resources :scorecards do
  member do
    get 'report'
  end
  resources :inaccuracy_reports, :only => [:new, :create]
end

et enfin le test

  require 'spec_helper'

  describe ScorecardsController do

    describe "GET edit" do
      before(:each) do
        @agency = Factory(:agency)
        @va = Factory(:va_user, :agency => @agency)
        @admin = Factory(:admin)
        @company = Factory(:company)
        @scorecard = Factory(:scorecard, :level => 1, :company => @company, :agency => @agency, :reviewed => true)
        request.env["HTTP_REFERER"] = "/scorecard"
      end

      context "as a admin" do
        before(:each) do
          controller.stub(:current_user).and_return @admin
        end

        it "allows you to edit a reviewed scorecard" do
          get 'edit', :id => @scorecard.id
          response.status.should be(200)
        end
      end

      context "as a va_user" do
        before(:each) do
        controller.stub(:current_user).and_return @va
      end

      it "does not allow you to edit a reviewed scorecard" do
        get 'edit', :id => @scorecard.id
        response.should redirect_to :back
      end
    end
  end
end

donc un va lorsque vous essayez de modifier une revue score sera redirigé, où un administrateur ne sera pas.

mais lors de l'exécution du présent par le biais de rspec-je obtenir

ScorecardsController
  GET edit
    as a admin
      allows you to edit a reviewed scorecard
    as a va_user
      does not allow you to edit a reviewed scorecard (FAILED - 1)

Failures:

  1) ScorecardsController GET edit as a va_user does not allow you to edit a reviewed scorecard
     Failure/Error: response.should redirect_to :back
   Expected response to be a redirect to </scorecard> but was a redirect to <http://test.host/>
     # ./spec/controllers/scorecards_controller_spec.rb:33:in `block (4 levels) in <top (required)>'

Finished in 0.48517 seconds
2 examples, 1 failure

donc je ne sais pas si sa fonctionne ou pas depuis que j'ai mis le request.env["HTTP_REFERER"] = "/scorecard" que la place qui devrait être la :back comme ça où. ou alors j'ai loupé l'idée tous ensemble en regardant httpstatus il y a les 300 réponses que je pouvais l'utiliser mais je ne sais pas par où commencer?

toute aide serait génial

MODIFIER

J'ai pu le tester en faisant comme ceci

...
response.status.should be(302)

mais j'ai eu l'idée de cette question et il semble que cela pourrait être puissant car il permet de spécifier l'url redirigée.

Que quelqu'un a une épreuve de travail comme ça?

InformationsquelleAutor TheLegend | 2013-05-08