Files
old-holivud2/spec/controllers/accounts_controller_spec.rb
2020-07-01 06:39:02 +02:00

121 lines
3.3 KiB
Ruby

require "rails_helper"
RSpec.describe AccountsController, type: :controller do
render_views
describe "#new" do
it "returns a successful response" do
get :new
expect(response).to be_successful
end
end
describe "#create" do
let(:params) do
{
user: {
first_name: "John",
last_name: "Doe",
email: "test_user+1@test.com",
password: "password",
account_name: "Test Dev account",
interested_product_name: "DirectME"
}
}
end
context "when valid account and user parameters are passed" do
it "creates account successfully" do
expect {
post :create, params: params
}.to change(Account, :count).by(1)
end
it "creates user successfully" do
expect {
post :create, params: params
}.to change(User, :count).by(1)
expect(User.last.first_name).to eq("John")
expect(User.last.last_name).to eq("Doe")
end
it "signs in user successfully" do
post :create, params: params
expect(response).to redirect_to(signed_in_root_path)
end
it "creates guest_sign_up event" do
expect {
post :create, params: params
}.to have_enqueued_job(TrackAnalyticsJob).with(be_kind_of(User), be_kind_of(Account), :track_guest_sign_up, user_agent: "Rails Testing", user_ip: "0.0.0.0")
end
it "enqueues hubspot form submission job" do
expect {
post :create, params: params
}.to have_enqueued_job(SubmitHubspotFormJob).with(
"John",
"Doe",
"test_user+1@test.com",
"Test Dev account",
i_m_interested_in: "DirectME"
)
end
end
context "when user is not able to sign in immediately after signup" do
before do
allow(@controller).to receive(:sign_in).and_return(nil)
end
it "redirects to the sign in page" do
post :create, params: params
expect(response).to redirect_to(new_session_path)
end
end
context "when account creation fails" do
it "redirects to the new account page" do
post :create, params: { user: { email: "test_user+1@test.com", password: "password", account_name: "" }}
expect(response).to redirect_to(new_account_path)
end
end
context "when user is invalid" do
it "redirects to the new account page" do
post :create, params: { user: { email: "", password: "password", account_name: "Test Dev account" }}
expect(response).to redirect_to(new_account_path)
end
end
end
describe "#update" do
let(:current_user) { create(:user, :account_manager) }
before do
sign_in(current_user)
end
context "when account successfully updated" do
it "returns updated account" do
patch :update, params: { id: current_user.primary_account, account: account_params }, format: :js
expect(current_user.primary_account.reload.logo.attached?).to be(true)
expect(current_user.primary_account.logo.filename).to eq "person_photo.png"
end
end
end
def account_params
logo = Rack::Test::UploadedFile.new(file_fixture("person_photo.png"), "image/png")
{ logo: logo }
end
end