Initial commit
This commit is contained in:
118
spec/controllers/accounts_controller_spec.rb
Normal file
118
spec/controllers/accounts_controller_spec.rb
Normal file
@@ -0,0 +1,118 @@
|
||||
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(
|
||||
"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
|
||||
Reference in New Issue
Block a user