Files
openfoodnetwork/spec/controllers/user_confirmations_controller_spec.rb
2018-02-07 10:41:53 +11:00

57 lines
2.0 KiB
Ruby

require 'spec_helper'
describe UserConfirmationsController, type: :controller do
include AuthenticationWorkflow
let!(:user) { create_enterprise_user }
let!(:confirmed_user) { create_enterprise_user(confirmed_at: nil) }
let!(:unconfirmed_user) { create_enterprise_user(confirmed_at: nil) }
let!(:confirmed_token) { confirmed_user.confirmation_token }
before do
@request.env["devise.mapping"] = Devise.mappings[:spree_user]
confirmed_user.confirm!
end
context "confirming a user" do
context "that has already been confirmed" do
before do
spree_get :show, confirmation_token: confirmed_token
end
it "redirects the user to login" do
expect(response).to redirect_to login_path
expect(flash[:error]).to eq I18n.t('devise.user_confirmations.spree_user.not_confirmed')
end
end
context "that has not been confirmed" do
it "redirects the user to login" do
spree_get :show, confirmation_token: unconfirmed_user.confirmation_token
expect(response).to redirect_to login_path
expect(flash[:success]).to eq I18n.t('devise.user_confirmations.spree_user.confirmed')
end
it "confirms the user" do
spree_get :show, confirmation_token: unconfirmed_user.confirmation_token
expect(unconfirmed_user.reload.confirmed_at).not_to eq(nil)
end
end
end
context "requesting confirmation instructions to be resent" do
it "redirects the user to login" do
spree_post :create, { spree_user: { email: unconfirmed_user.email } }
expect(response).to redirect_to login_path
expect(flash[:success]).to eq I18n.t('devise.user_confirmations.spree_user.confirmation_sent')
end
it "sends the confirmation email" do
expect do
spree_post :create, { spree_user: { email: unconfirmed_user.email } }
end.to enqueue_job Delayed::PerformableMethod
expect(Delayed::Job.last.payload_object.method_name).to eq(:send_confirmation_instructions_without_delay)
end
end
end