Files
old-holivud2/spec/controllers/sessions_controller_spec.rb
2020-05-31 22:38:19 +02:00

93 lines
2.6 KiB
Ruby

require "rails_helper"
RSpec.describe SessionsController, type: :controller do
render_views
let(:user) { create(:user) }
let(:account) { user.primary_account }
describe "#new" do
it "responds successfully" do
get :new
expect(response).to be_successful
end
it "renders the content" do
get :new
expect(response.body).to have_content("Sign In")
expect(response.body).to have_field("Email")
expect(response.body).to have_field("Password")
end
end
describe "#create" do
context "when sign in successful" do
it "creates user_sign_in event" do
expect {
post :create, params: { session: { email: user.email, password: user.password_digest } }
}.to have_enqueued_job(TrackAnalyticsJob).with(user, account, :track_user_sign_in, user_agent: "Rails Testing", user_ip: "0.0.0.0")
end
it "redirects to root" do
post :create, params: { session: { email: user.email, password: user.password_digest } }
expect(response).to redirect_to(signed_in_root_path)
end
context "when remember me true" do
it "updates remember_created_at" do
post :create, params: { session: { email: user.email, password: user.password_digest }, remember_me: 1 }
expect(user.reload.remember_created_at).not_to be_nil
end
end
context "when remember me not given" do
it "does not save remember_me_created" do
post :create, params: { session: { email: user.email, password: user.password_digest } }
expect(user.reload.remember_created_at).to be_nil
end
end
end
context "when sign in not successful" do
it "redirects to 'new_session_path'" do
post :create, params: { session: { email: "bad_email@example.com", password: user.password_digest } }
expect(response).to redirect_to(new_session_path)
end
it "displays a flash message" do
post :create, params: { session: { email: "bad_email@example.com", password: user.password_digest } }
expect(flash.alert).to eq t("sessions.create.alert")
end
end
end
describe "#destroy" do
context "when user is signed in" do
before :each do
sign_in(user)
end
it "redirects to new_session_path" do
delete :destroy, params: {}
expect(response).to redirect_to(new_session_path)
end
end
context "when user is not signed in" do
it "renders session new" do
delete :destroy, params: {}
expect(response).to redirect_to(new_session_path)
end
end
end
end