Rspec and Devise: Could not find a valid mapping for #<User

972 views
Skip to first unread message

99miles

unread,
Aug 24, 2011, 7:34:12 PM8/24/11
to Devise
using RSpec and Devise, I'm getting a mapping error.

1) BusinessesController GET index sets @new_vacation
Failure/Error: sign_in @user
RuntimeError:
Could not find a valid mapping for #<User id: 8009, email:
"pers...@cycle7.com", encrypted_password: "$2a
$10$joN9Vy6spNAe4uh7W9fcOOdoeSJ5dr/nBwpmlqcv6EYe...",
reset_password_token: nil, remember_token: nil, remember_created_at:
nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil,
current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2011-04-01
17:05:03", updated_at: "2011-04-01 17:05:03", business_id: 7214,
confirmation_token: nil, confirmed_at: "2011-08-24 21:23:51",
confirmation_sent_at: nil, failed_attempts: 0, unlock_token: nil,
locked_at: nil, admin: true, password_salt: nil>
# ./spec/controllers/businesses_controller_spec.rb:10:in
`block (2 levels) in <top (required)>'


It looks like the answer might be in here
http://stackoverflow.com/questions/5966971/rspec-tests-with-devise-could-not-find-valid-mapping
but I can't get it.

Any ideas, I'm really stumped! Thanks.


---

routes.rb

constraints(SubdomainRoute) do

# SIGN IN
devise_for :accounts, :controllers => {
:sessions =>
"users/accounts/sessions",
:confirmations
=> "users/accounts/confirmations" },
:class_name
=> 'Admin' do
get "accounts/sign_in", :to => "users/accounts/sessions#new"

get "accounts/sign_up", :to => "users/devise/
registrations#new"
get "accounts/signedup", :to => "users/devise/
confirmations#signedup", :as => "signedup_registration"
end
end

---
admin.rb

class Admin < User
validates_associated :business
end

---

user.rb

class User < ActiveRecord::Base
belongs_to :business
accepts_nested_attributes_for :business

# TODO get lockable working -- failed_attempts is incrementing
in db

devise :database_authenticatable, :registerable, :confirmable, :lockable,
:recoverable, :rememberable, :trackable, :validatable
end

---

factories.rb

FactoryGirl.define do

Factory.define :business do |b|
end

Factory.define :business_main, :parent => :business do |b|
b.business_name "Ann's Salon"
b.address_line1 "123 Main Street"
b.address_line2 ""
b.city "Portland"
b.state "Oregon"
b.zip "97211"
end

factory :admin do
confirmed_at Time.now

factory :admin_one do
association :business, :factory => :business_one
email
password 'please'
admin true
end
end
end

---

business_controller_spec.rb

require 'spec_helper'

describe BusinessesController do

before (:each) do
@business = Factory(:business_one)
@user = User.find_by_business_id(@business.id)
sign_in @user
end

describe "GET index" do

let(:describe_action) { get :index }

it "sets @new_vacation" do
BusinessVacation.should_receive(:new)
get :index
end
end

end

Reply all
Reply to author
Forward
0 new messages