You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.7 KiB
Go

package valueobjects
// Tests for player name validation rules: length bounds, normalization, and character restrictions.
import (
"strings"
"testing"
"github.com/stretchr/testify/require"
errs "knowfoolery/backend/shared/domain/errors"
)
// TestNewPlayerName_NormalizesAndTrims ensures new player name normalizes and trims behavior is handled correctly.
func TestNewPlayerName_NormalizesAndTrims(t *testing.T) {
name, err := NewPlayerName(" Alice Bob ")
require.NoError(t, err)
require.Equal(t, "Alice Bob", name.String())
}
// TestNewPlayerName_LengthValidation ensures new player name length validation behavior is handled correctly.
func TestNewPlayerName_LengthValidation(t *testing.T) {
_, err := NewPlayerName("A")
require.Error(t, err)
longName := strings.Repeat("a", MaxPlayerNameLength+1)
_, err = NewPlayerName(longName)
require.Error(t, err)
}
// TestNewPlayerName_InvalidCharacters ensures new player name invalid characters behavior is handled correctly.
func TestNewPlayerName_InvalidCharacters(t *testing.T) {
_, err := NewPlayerName("Alice!")
require.Error(t, err)
var domainErr *errs.DomainError
require.ErrorAs(t, err, &domainErr)
require.Equal(t, errs.CodeInvalidPlayerName, domainErr.Code)
}
// TestPlayerName_EqualsCaseInsensitive ensures player name equals case insensitive behavior is handled correctly.
func TestPlayerName_EqualsCaseInsensitive(t *testing.T) {
name1, err := NewPlayerName("Alice")
require.NoError(t, err)
name2, err := NewPlayerName("alice")
require.NoError(t, err)
require.True(t, name1.Equals(name2))
}
// TestPlayerName_IsEmpty ensures player name is empty behavior is handled correctly.
func TestPlayerName_IsEmpty(t *testing.T) {
var name PlayerName
require.True(t, name.IsEmpty())
}