package topdata import ( "os" "path/filepath" "testing" "git.westgate.pw/ShadowsOverWestgate/sow-tools/internal/project" ) func partsDatasetWithIDs(name string, ids []int) nativeCollectedDataset { rows := make([]map[string]any, 0, len(ids)) for _, id := range ids { rows = append(rows, map[string]any{"id": id, "COSTMODIFIER": "0", "ACBONUS": "0.00"}) } return nativeCollectedDataset{ Dataset: nativeDataset{Name: name, Kind: nativeDatasetBase}, Columns: []string{"COSTMODIFIER", "ACBONUS"}, Rows: rows, } } func TestApplyPartOverridesRejectsOrphan(t *testing.T) { dir := t.TempDir() if err := os.MkdirAll(filepath.Join(dir, "data", "parts", "overrides"), 0o755); err != nil { t.Fatal(err) } writeFile(t, filepath.Join(dir, "data", "parts", "overrides", "belt.json"), `{"overrides": [{"id": 999, "COSTMODIFIER": "5"}]}`) collected := []nativeCollectedDataset{partsDatasetWithIDs("parts/belt", []int{17})} if _, err := applyPartOverridesWithConfig(dir, collected, project.PartsRowsConfig{}); err == nil { t.Fatal("expected orphan override to fail, not synthesize a row") } } func TestApplyPartOverridesUpdatesDiscoveredRow(t *testing.T) { dir := t.TempDir() if err := os.MkdirAll(filepath.Join(dir, "data", "parts", "overrides"), 0o755); err != nil { t.Fatal(err) } writeFile(t, filepath.Join(dir, "data", "parts", "overrides", "belt.json"), `{"overrides": [{"id": 17, "COSTMODIFIER": "5"}]}`) collected := []nativeCollectedDataset{partsDatasetWithIDs("parts/belt", []int{17})} out, err := applyPartOverridesWithConfig(dir, collected, project.PartsRowsConfig{}) if err != nil { t.Fatalf("override: %v", err) } if got := out[0].Rows[0]["COSTMODIFIER"]; got != "5" { t.Fatalf("row 17 COSTMODIFIER want 5, got %v", got) } }