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
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())
|
|
}
|