diff --git a/app/models/user.rb b/app/models/user.rb index 6503881a3..e16d70670 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -6,6 +6,8 @@ class User < ApplicationRecord belongs_to :account belongs_to :identity, optional: true + validates :name, presence: true + has_many :comments, inverse_of: :creator, dependent: :destroy has_many :filters, foreign_key: :creator_id, inverse_of: :creator, dependent: :destroy diff --git a/app/models/user/named.rb b/app/models/user/named.rb index aa4f9b585..d052a79ad 100644 --- a/app/models/user/named.rb +++ b/app/models/user/named.rb @@ -19,7 +19,7 @@ module User::Named def familiar_name names = name.split - return name if names.length == 1 + return name if names.length <= 1 "#{names.first} #{names[1..].map { |n| "#{n[0]}." }.join}" end end diff --git a/test/controllers/signup/completions_controller_test.rb b/test/controllers/signup/completions_controller_test.rb index 1b788ce31..a1319d868 100644 --- a/test/controllers/signup/completions_controller_test.rb +++ b/test/controllers/signup/completions_controller_test.rb @@ -29,7 +29,7 @@ class Signup::CompletionsControllerTest < ActionDispatch::IntegrationTest assert_response :redirect, "Valid params should redirect" end - test "create with invalid params" do + test "create with blank name" do untenanted do post signup_completion_path, params: { signup: { @@ -38,6 +38,9 @@ class Signup::CompletionsControllerTest < ActionDispatch::IntegrationTest } end - assert_response :unprocessable_entity, "Invalid params should return unprocessable entity" + assert_response :unprocessable_entity + assert_select ".txt-negative" do + assert_select "li", text: "Full name can't be blank" + end end end diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 645e3a386..9e5d2bde9 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -39,6 +39,27 @@ class UserTest < ActiveSupport::TestCase 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)