internal/domain/collectible_phone_test.go
Rama main · réplica de lectura del repositorio original.
package domain
import "testing"
func TestCollectiblePhoneNormalizationAndClasses(t *testing.T) {
for input, want := range map[string]string{
"+888 11-11": "8881111",
"(888) 123 4567": "8881234567",
} {
if got := NormalizeCollectiblePhone(input); got != want || !ValidCollectiblePhone(got) {
t.Fatalf("NormalizeCollectiblePhone(%q) = %q, want valid %q", input, got, want)
}
}
for _, invalid := range []string{"+7771111", "+888abc1", "+8881", "+8881234567890123"} {
if got := NormalizeCollectiblePhone(invalid); got != "" && ValidCollectiblePhone(got) {
t.Fatalf("%q normalized to valid collectible %q", invalid, got)
}
}
standard := CollectiblePhone{Phone: "8881111", Tier: CollectiblePhoneTierStandard, Status: CollectibleUsernameStatusOwned, OwnerUserID: 1}
exclusive := standard
exclusive.Tier = CollectiblePhoneTierExclusive
if standard.AlwaysVisible() || !exclusive.AlwaysVisible() {
t.Fatalf("tier visibility mismatch: standard=%v exclusive=%v", standard.AlwaysVisible(), exclusive.AlwaysVisible())
}
}
func TestCollectiblePhonePriceMatchesDesktopCollectibleInfo(t *testing.T) {
if err := ValidateCollectiblePhonePrice("USD", 559300, "TON", 3753000000000); err != nil {
t.Fatalf("valid Fragment price rejected: %v", err)
}
for _, invalid := range []struct {
currency string
amount int64
cryptoCurrency string
cryptoAmount int64
}{
{currency: "TON", amount: 50},
{currency: "USD", amount: 559300},
{currency: "USD", amount: 559300, cryptoCurrency: "TON"},
{currency: "USD", amount: 0, cryptoCurrency: "TON", cryptoAmount: 1},
} {
if err := ValidateCollectiblePhonePrice(invalid.currency, invalid.amount, invalid.cryptoCurrency, invalid.cryptoAmount); err == nil {
t.Fatalf("invalid Fragment price accepted: %+v", invalid)
}
}
}