mercredi 17 août 2016

Rspec Devise testing not working

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