user login logout page - Actualize-Apprenticeship-Team-troy/personal-dashboard GitHub Wiki

replace the code in sessions_controller_spec.rb with this:

# sessions_controller_spec.rb
require 'rails_helper'

RSpec.describe SessionsController, type: :controller do

  describe "GET #new" do
    it "returns http success" do
      get :new
      expect(response).to have_http_status(:success)
    end
  end

  describe "GET #create" do
    it "positive result" do
      user = User.new(username: 'username', email: '[email protected]', password: 'password')
      user.save
      params = { session: {
                   email: '[email protected]',
                   password: 'password'
                 } }

      get :create, params: params

      expect(session[:user_id]).to eq(user.id)
      expect(subject.request.flash[:success]).to eq('Welcome back!')
      expect(response).to redirect_to( home_path )
    end

    it "negative result" do
      user = User.new(username: 'username', email: '[email protected]', password: 'password')
      user.save
      params = { session: {
                   email: '[email protected]',
                   password: 'wrongPassword'
                 } }

      get :create, params: params

      expect(session[:user_id]).to be(nil)
      expect(subject.request.flash[:error]).to eq('Invalid email/password combination')
      expect(response).to redirect_to( login_path )
    end
  end

  describe "GET #destroy" do
    it "returns http success" do
      user = User.new(username: 'username', email: '[email protected]', password: 'password')
      user.save
      params = { session: {
                   email: '[email protected]',
                   password: 'password'
                 } }

      get :create, params: params

      expect(session[:user_id]).to eq(user.id)

      get :destroy

      expect(session[:user_id]).to be(nil)
      expect(subject.request.flash[:success]).to eq('You have logged out')
      expect(response).to redirect_to( login_path )
    end
  end

end

if application_controller_spec.rb does not exist create the file then copy this code into the file

require 'rails_helper'

RSpec.describe ApplicationController, type: :controller do

  describe "#current_user" do
    it "expect positive result" do
      user = User.new(username: 'username',
                      email: '[email protected]',
                      password: 'password')
      user.save
      session[:user_id] = user.id
      expect(subject.current_user).to eq(user)
    end
  end

end