Ctrl K
ComunidadGuías…

internal/domain/collectible_phone_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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)
		}
	}
}