concevoir [... Ok ma première question, alors soyez gentil.]problème « post créer » dans mon contrôleur rspec
J'utilise l'authentification pour mon concevoir, mais j'ai mon propre contrôleur d'étendre ce qui se passe lorsque l'utilisateur est créé. Je crée à la fois un "utilisateur" et une "agence" au moment de l'inscription (inscription).
Itinéraires ...
devise_for :users, :controllers => {:registrations => "registrations"}
Mon contrôleur complet ...
class RegistrationsController < Devise::RegistrationsController
def create
super # creates the @user
@agency = Agency.create! params[:agency]
@agency.users << @user
@agency.owner = @user
@user.agency = @agency
@agency.save
@user.account_admin = true
@user.save
end
end
Mon problème est que je veux mettre en place un rspec pour vérifier ce code. Le code semble fonctionner, mais je tire pour 100% de couverture de code dans mes spécifications. Voici mes spécifications entières ...
require 'spec_helper'
describe RegistrationsController do
render_views
describe "POST create" do
it "creates an associated user" do
@agency = Factory.create(:agency)
@user = Factory.create(:user, :agency => @agency)
User.stub(:new).with({'name' => 'pat'}) { @user }
Agency.stub(:new).with({'name' => 'pat'}) { @agency }
post :create, :user => {'name' => 'pat'}
assigns(:user).should be(@user)
end
end
end
Mais, je reçois une erreur sur le "post-créer". Voici le message d'erreur
Could not find devise mapping for path "/users?user[name]=pat"
Et cela (je pense) la ligne correspondante de "routes râteau"
user_registration POST /users(.:format) {:action=>"create",:controller=>"registrations"}
Toutes les pensées?
pat
J'ai découvert (par essai et erreur) que l'ajout de la ligne request.env [ "devise.mapping"] = Devise.mappings [: user] à l'épreuve de spécification fait ce test à exécuter maintenant. Mais je ne comprends pas vraiment ce que cette ligne fait - donc les commentaires seraient appréciés. – Pat