129 lines
4.0 KiB
Ruby
129 lines
4.0 KiB
Ruby
require "test_helper"
|
|
|
|
class SignupTest < ActiveSupport::TestCase
|
|
setup do
|
|
@signup = Signup.new(
|
|
email_address: "brian@example.com",
|
|
full_name: "Brian Wilson",
|
|
company_name: "Beach Boys",
|
|
password: SecureRandom.hex(16)
|
|
)
|
|
end
|
|
|
|
test "#process creates all the necessary objects for a new identity" do
|
|
Account.any_instance.expects(:setup_basic_template).once
|
|
|
|
assert @signup.process, @signup.errors.full_messages.to_sentence(words_connector: ". ")
|
|
assert_empty @signup.errors
|
|
|
|
assert @signup.signal_identity
|
|
assert @signup.signal_identity.persisted?
|
|
|
|
assert @signup.queenbee_account
|
|
assert @signup.queenbee_account.id
|
|
|
|
assert @signup.signal_account
|
|
assert @signup.signal_account.persisted?
|
|
assert_equal @signup.signal_identity, @signup.signal_account.owner.identity
|
|
|
|
assert @signup.account
|
|
assert @signup.account.persisted?
|
|
|
|
assert @signup.user
|
|
assert @signup.user.persisted?
|
|
assert_equal @signup.user.signal_user, @signup.signal_account.owner
|
|
|
|
assert_includes ApplicationRecord.tenants, @signup.signal_account.subdomain
|
|
end
|
|
|
|
test "#process creates all the necessary objects for an existing identity" do
|
|
signal_identity = SignalId::Identity.find_by_email_address("david@37signals.com")
|
|
|
|
@signup = Signup.new(
|
|
signal_identity: signal_identity,
|
|
company_name: "Team LeMans",
|
|
)
|
|
|
|
Account.any_instance.expects(:setup_basic_template).once
|
|
|
|
assert @signup.process, @signup.errors.full_messages.to_sentence(words_connector: ". ")
|
|
assert_empty @signup.errors
|
|
|
|
assert @signup.signal_identity
|
|
assert_equal signal_identity, @signup.signal_identity
|
|
|
|
assert @signup.queenbee_account
|
|
assert @signup.queenbee_account.id
|
|
|
|
assert @signup.signal_account
|
|
assert @signup.signal_account.persisted?
|
|
assert_equal @signup.signal_identity, @signup.signal_account.owner.identity
|
|
|
|
assert @signup.account
|
|
assert @signup.account.persisted?
|
|
|
|
assert @signup.user
|
|
assert @signup.user.persisted?
|
|
assert_equal @signup.user.signal_user, @signup.signal_account.owner
|
|
|
|
assert_includes ApplicationRecord.tenants, @signup.signal_account.subdomain
|
|
end
|
|
|
|
test "#process does nothing if a validation error occurs creating identity" do
|
|
@signup.password = ""
|
|
|
|
assert_not @signup.process
|
|
assert_not_empty @signup.errors[:password]
|
|
|
|
assert_nil @signup.signal_identity
|
|
assert_nil @signup.queenbee_account
|
|
assert_nil @signup.account
|
|
assert_nil @signup.user
|
|
end
|
|
|
|
test "#process does nothing if a validation error occurs creating the queenbee account" do
|
|
Queenbee::Remote::Account.stubs(:create!).raises(RuntimeError, "Invalid account data")
|
|
|
|
SignalId::Identity.any_instance.expects(:destroy).once
|
|
|
|
assert_not @signup.process
|
|
assert_not_empty @signup.errors[:base]
|
|
|
|
assert_nil @signup.signal_identity
|
|
assert_nil @signup.queenbee_account
|
|
assert_nil @signup.account
|
|
assert_nil @signup.user
|
|
end
|
|
|
|
test "#process does nothing if a validation error occurs creating the tenant" do
|
|
ApplicationRecord.stubs(:create_tenant).raises(RuntimeError, "Tenant already exists")
|
|
|
|
Queenbee::Remote::Account.any_instance.expects(:cancel).once
|
|
SignalId::Identity.any_instance.expects(:destroy).once
|
|
|
|
assert_not @signup.process
|
|
assert_not_empty @signup.errors[:base]
|
|
|
|
assert_nil @signup.signal_identity
|
|
assert_nil @signup.queenbee_account
|
|
assert_nil @signup.account
|
|
assert_nil @signup.user
|
|
end
|
|
|
|
test "#process does nothing if a validation error occurs creating the account" do
|
|
Account.stubs(:create_with_admin_user).raises(RuntimeError, "Account creation failed")
|
|
|
|
ApplicationRecord.expects(:destroy_tenant).once
|
|
Queenbee::Remote::Account.any_instance.expects(:cancel).once
|
|
SignalId::Identity.any_instance.expects(:destroy).once
|
|
|
|
assert_not @signup.process
|
|
assert_not_empty @signup.errors[:base]
|
|
|
|
assert_nil @signup.signal_identity
|
|
assert_nil @signup.queenbee_account
|
|
assert_nil @signup.account
|
|
assert_nil @signup.user
|
|
end
|
|
end
|