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