package buildsvc import "testing" func TestBuildGlobalData_OptionalFieldsAreOmittedWhenEmpty(t *testing.T) { got := BuildGlobalData(GlobalDataInput{ CompanyName: "Acme AG", Email: "hello@acme.test", Username: "acme-admin", AddressLine1: " ", }) if got["companyName"] != "Acme AG" { t.Fatalf("companyName mismatch: got=%v", got["companyName"]) } if got["email"] != "hello@acme.test" { t.Fatalf("email mismatch: got=%v", got["email"]) } if got["username"] != "acme-admin" { t.Fatalf("username mismatch: got=%v", got["username"]) } if _, ok := got["phone"]; ok { t.Fatalf("phone should be omitted when empty") } if _, ok := got["address"]; ok { t.Fatalf("address should be omitted when empty") } } func TestBuildGlobalData_AddressAndOptionalFields(t *testing.T) { got := BuildGlobalData(GlobalDataInput{ CompanyName: "Acme AG", BusinessType: "Healthcare", Username: "acme-admin", Email: "hello@acme.test", Phone: "+41 79 000 00 00", OrgNumber: "CHE-123.456.789", StartDate: "2019-08-01", Mission: "Make dental care simple.", DescriptionShort: "Modern clinic.", DescriptionLong: "Full-service clinic in central Zurich.", SiteLanguage: "de", AddressLine1: "Main Street 1", AddressLine2: "2nd Floor", AddressCity: "Zurich", AddressRegion: "ZH", AddressZIP: "8000", AddressCountry: "Switzerland", }) addressRaw, ok := got["address"] if !ok { t.Fatalf("address should be present") } address, ok := addressRaw.(map[string]any) if !ok { t.Fatalf("address type mismatch: %T", addressRaw) } if address["line1"] != "Main Street 1" { t.Fatalf("line1 mismatch: got=%v", address["line1"]) } if address["line2"] != "2nd Floor" { t.Fatalf("line2 mismatch: got=%v", address["line2"]) } if address["region"] != "ZH" { t.Fatalf("region mismatch: got=%v", address["region"]) } if got["businessType"] != "Healthcare" { t.Fatalf("businessType mismatch: got=%v", got["businessType"]) } if got["phone"] != "+41 79 000 00 00" { t.Fatalf("phone mismatch: got=%v", got["phone"]) } if got["siteLanguage"] != "de" { t.Fatalf("siteLanguage mismatch: got=%v", got["siteLanguage"]) } if _, ok := got["business_category"]; ok { t.Fatalf("business_category must not be present") } } func TestFilterGlobalData_RemovesUnsupportedKeys(t *testing.T) { got := FilterGlobalData(map[string]any{ "companyName": " Acme AG ", "username": " admin ", "email": " hi@example.test ", "mobile": "+41 79 000 00 00", "business_category": "Healthcare", "siteLanguage": " de ", "address": map[string]any{ "line1": " Main Street 1 ", "line2": "", "city": " Zurich ", "region": " ZH ", "zip": " 8000 ", "country": " Switzerland ", "country_code": "CH", "street": "Unsupported Street Key", }, }) if got["companyName"] != "Acme AG" { t.Fatalf("companyName mismatch: got=%v", got["companyName"]) } if got["siteLanguage"] != "de" { t.Fatalf("siteLanguage mismatch: got=%v", got["siteLanguage"]) } if _, ok := got["mobile"]; ok { t.Fatalf("mobile must not be present") } if _, ok := got["business_category"]; ok { t.Fatalf("business_category must not be present") } addressRaw, ok := got["address"] if !ok { t.Fatalf("address should be present") } address, ok := addressRaw.(map[string]any) if !ok { t.Fatalf("address type mismatch: %T", addressRaw) } if address["line1"] != "Main Street 1" { t.Fatalf("line1 mismatch: got=%v", address["line1"]) } if _, ok := address["country_code"]; ok { t.Fatalf("address.country_code must not be present") } if _, ok := address["street"]; ok { t.Fatalf("address.street must not be present") } }