[Ok ... mi primera pregunta, así que se gentil.]Problema con "post crear" en mi controlador legado rspec
estoy usando para mi idear autenticación, pero tengo mi propio controlador para extender lo que sucede cuando el usuario es creado Estoy creando tanto un "usuario" como una "agencia" en el momento del registro (registro).
En las rutas ...
devise_for :users, :controllers => {:registrations => "registrations"}
Mi controlador completo ...
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
Mi problema es que quiero establecer un rspec para comprobar este código. El código parece estar funcionando, pero estoy filmando para una cobertura de código del 100% en mis especificaciones. Aquí está mi especificación completa ...
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
Pero me aparece un error en la "publicación posterior". Aquí está el mensaje de error
Could not find devise mapping for path "/users?user[name]=pat"
Y esto es (creo) la línea relevante de rutas "rastrillo"
user_registration POST /users(.:format) {:action=>"create",:controller=>"registrations"}
Cualquier pensamiento?
pat
he descubierto (por ensayo y error) que la adición de la línea request.env [ "devise.mapping"] = Devise.mappings [: user] a la prueba spec hace que prueba ahora a ejecutar. Pero realmente no entiendo lo que hace esa línea, por lo que los comentarios serían apreciados. – Pat