package app import "testing" func TestSiteDomainMappingCSVColumnsAcceptChineseHeaders(t *testing.T) { columns, err := detectSiteDomainMappingImportColumns([]string{"匹配域名", "站点 Key", "中文名", "状态"}) if err != nil { t.Fatalf("detectSiteDomainMappingImportColumns() error = %v", err) } if columns.Domain != 0 || columns.Key != 1 || columns.Name != 2 || columns.Active != 3 { t.Fatalf("columns = %+v, want domain/key/name/active indexes 0/1/2/3", columns) } } func TestSiteDomainMappingCSVColumnsRequireDomainAndName(t *testing.T) { if _, err := detectSiteDomainMappingImportColumns([]string{"site_key", "is_active"}); err == nil { t.Fatal("detectSiteDomainMappingImportColumns() error = nil, want error") } } func TestSiteDomainMappingInputFromCSVRecordDefaultsAndParsesActive(t *testing.T) { columns := siteDomainMappingImportColumns{ Domain: 0, Key: 1, Name: 2, Active: 3, } input, err := siteDomainMappingInputFromCSVRecord([]string{"https://www.example.com/path", "", "示例", "停用"}, columns) if err != nil { t.Fatalf("siteDomainMappingInputFromCSVRecord() error = %v", err) } normalized, err := normalizeSiteDomainMappingInput(input) if err != nil { t.Fatalf("normalizeSiteDomainMappingInput() error = %v", err) } if normalized.RegistrableDomain != "www.example.com" { t.Fatalf("RegistrableDomain = %q, want www.example.com", normalized.RegistrableDomain) } if normalized.SiteKey != "www.example.com" { t.Fatalf("SiteKey = %q, want default domain", normalized.SiteKey) } if normalized.SiteName != "示例" { t.Fatalf("SiteName = %q, want 示例", normalized.SiteName) } if normalized.IsActive { t.Fatal("IsActive = true, want false") } } func TestParseSiteDomainMappingActiveRejectsUnknownStatus(t *testing.T) { if _, err := parseSiteDomainMappingActive("待定"); err == nil { t.Fatal("parseSiteDomainMappingActive() error = nil, want error") } }