121 lines
3.3 KiB
Ruby
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
|