package customer import ( "encoding/json" "testing" ) func TestCreateCustomerForm_UnmarshalJSON_CompanyIDs(t *testing.T) { payload := `{ "type": "individual", "role": "analyst", "username": "testuser", "email": "test@example.com", "password": "Test!1234", "company_ids": ["507f1f77bcf86cd799439011", "507f1f77bcf86cd799439012"] }` var form CreateCustomerForm if err := json.Unmarshal([]byte(payload), &form); err != nil { t.Fatalf("unexpected error: %v", err) } want := []string{"507f1f77bcf86cd799439011", "507f1f77bcf86cd799439012"} if len(form.Companies) != len(want) { t.Fatalf("Companies len = %d, want %d", len(form.Companies), len(want)) } for i, id := range want { if form.Companies[i] != id { t.Fatalf("Companies[%d] = %q, want %q", i, form.Companies[i], id) } } } func TestUpdateCustomerForm_UnmarshalJSON_CompanySummaries(t *testing.T) { payload := `{ "type": "individual", "role": "analyst", "username": "testuser", "email": "test@example.com", "companies": [ {"id": "507f1f77bcf86cd799439011", "name": "Acme"}, {"id": "507f1f77bcf86cd799439012", "name": "Globex"} ] }` var form UpdateCustomerForm if err := json.Unmarshal([]byte(payload), &form); err != nil { t.Fatalf("unexpected error: %v", err) } if form.Companies == nil { t.Fatal("Companies should be set") } want := []string{"507f1f77bcf86cd799439011", "507f1f77bcf86cd799439012"} if len(*form.Companies) != len(want) { t.Fatalf("Companies len = %d, want %d", len(*form.Companies), len(want)) } for i, id := range want { if (*form.Companies)[i] != id { t.Fatalf("Companies[%d] = %q, want %q", i, (*form.Companies)[i], id) } } } func TestUpdateCustomerForm_UnmarshalJSON_OmittedCompanies(t *testing.T) { payload := `{ "type": "individual", "role": "analyst", "username": "testuser", "email": "test@example.com" }` var form UpdateCustomerForm if err := json.Unmarshal([]byte(payload), &form); err != nil { t.Fatalf("unexpected error: %v", err) } if form.Companies != nil { t.Fatalf("Companies = %v, want nil when omitted", form.Companies) } } func TestAssignCompaniesForm_UnmarshalJSON_LegacyField(t *testing.T) { payload := `{"company_ids": ["507f1f77bcf86cd799439011"]}` var form AssignCompaniesForm if err := json.Unmarshal([]byte(payload), &form); err != nil { t.Fatalf("unexpected error: %v", err) } if len(form.Companies) != 1 || form.Companies[0] != "507f1f77bcf86cd799439011" { t.Fatalf("Companies = %v", form.Companies) } }