Here is my rspec file. When I execute this test it prints out 'spec completed..'.
require 'spec_helper'
RSpec.describe SessionsController do
before(:each) do
setup_controller_for_warden
@request.env["devise.mapping"] = Devise.mappings[:user]
@company = FactoryGirl.create(:company)
@user = FactoryGirl.create(:user, company: @company, role: "employer", old_layout: false)
sign_in (@user)
end
describe '#create' do
it 'calls TotangoService#submit_activity_via_api' do
post :create
puts "spec completed.."
end
end
end
However, it actually never hits the controller code at all!!
class SessionsController < Devise::SessionsController
def create
puts "LJDFLKDJFKLJDLFJDKLJFKLDJFLKDJLKFJDLKFJDLKFLKDFLK"
super
if current_user
current_user.last_login_at = Time.zone.now.to_datetime
current_user.save
end
end
It never prints out LJDFLKDJFKLJDLFJDKLJFKLDJFLKDJLKFJDLKFJDLKFLKDFLK to the console. Controller code never gets hit. What's going on here? Please help!
Here is my spec_helper FYI
RSpec.configure do |config|
config.include Devise::TestHelpers, type: :controller
config.include Requests::JsonHelpers, type: :request
config.include FeatureHelpers, type: :feature
config.include RequestHelpers, type: :request
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = false
config.infer_base_class_for_anonymous_controllers = false
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
We are using gem 'devise', '~> 3.4.0', and rails 4.2.7
In routes.rb we have this..
devise_for :users, controllers: { sessions: "sessions", passwords: "passwords", password_expired: "password_expired" }
devise_scope :user do
delete "/users/sign_out" => 'sessions#destroy'
get "/users/sign_out" => 'sessions#destroy', as: :signout
get '/users/destroy_inactive_session', to: 'sessions#destroy_inactive_session'
end
Aucun commentaire:
Enregistrer un commentaire