b75d2ae6d8
Addresses an issue where User#familiar_name assumed `name` was always present, potentially raising an exception during view rendering. Now User validates name presence, and User#familiar_name handles blank strings without error, in case any existing invalid records exist.
105 lines
2.6 KiB
Ruby
105 lines
2.6 KiB
Ruby
require "test_helper"
|
|
|
|
class UserTest < ActiveSupport::TestCase
|
|
test "create" do
|
|
user = User.create!(
|
|
account: accounts("37s"),
|
|
role: "member",
|
|
name: "Victor Cooper"
|
|
)
|
|
|
|
assert_equal [ boards(:writebook) ], user.boards
|
|
assert user.settings.present?
|
|
end
|
|
|
|
test "creation gives access to all_access boards" do
|
|
user = User.create!(
|
|
account: accounts("37s"),
|
|
role: "member",
|
|
name: "Victor Cooper"
|
|
)
|
|
|
|
assert_equal [ boards(:writebook) ], user.boards
|
|
end
|
|
|
|
test "deactivate" do
|
|
assert_changes -> { users(:jz).active? }, from: true, to: false do
|
|
assert_changes -> { users(:jz).accesses.count }, from: 1, to: 0 do
|
|
users(:jz).tap do |user|
|
|
user.stubs(:close_remote_connections).once
|
|
user.deactivate
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
test "initials" do
|
|
assert_equal "JF", User.new(name: "jason fried").initials
|
|
assert_equal "DHH", User.new(name: "David Heinemeier Hansson").initials
|
|
assert_equal "ÉLH", User.new(name: "Éva-Louise Hernández").initials
|
|
end
|
|
|
|
test "name methods handle blank names gracefully" do
|
|
user = User.new(name: "")
|
|
assert_equal "", user.familiar_name
|
|
assert_nil user.first_name
|
|
assert_nil user.last_name
|
|
assert_equal "", user.initials
|
|
end
|
|
|
|
test "validates name presence" do
|
|
user = User.new(account: accounts("37s"), role: "member", name: "")
|
|
assert_not user.valid?
|
|
assert_includes user.errors[:name], "can't be blank"
|
|
|
|
user.name = " "
|
|
assert_not user.valid?
|
|
assert_includes user.errors[:name], "can't be blank"
|
|
|
|
user.name = "Victor Cooper"
|
|
assert user.valid?
|
|
end
|
|
|
|
test "setup?" do
|
|
user = users(:kevin)
|
|
|
|
user.update!(name: user.identity.email_address)
|
|
assert_not user.setup?
|
|
|
|
user.update!(name: "Kevin")
|
|
assert user.setup?
|
|
end
|
|
|
|
test "verified? returns true when verified_at is present" do
|
|
user = users(:david)
|
|
user.update_column(:verified_at, Time.current)
|
|
|
|
assert user.verified?
|
|
end
|
|
|
|
test "verified? returns false when verified_at is nil" do
|
|
user = users(:david)
|
|
user.update_column(:verified_at, nil)
|
|
|
|
assert_not user.verified?
|
|
end
|
|
|
|
test "verify sets verified_at when not already verified" do
|
|
user = users(:david)
|
|
user.update_column(:verified_at, nil)
|
|
|
|
assert_nil user.verified_at
|
|
user.verify
|
|
assert_not_nil user.reload.verified_at
|
|
end
|
|
|
|
test "verify does not update verified_at when already verified" do
|
|
user = users(:david)
|
|
original_time = 1.day.ago
|
|
user.update_column(:verified_at, original_time)
|
|
|
|
user.verify
|
|
assert_equal original_time.to_i, user.reload.verified_at.to_i
|
|
end
|
|
end
|