package store import ( "path/filepath" "testing" ) // Die Reihenfolge der Apps ist die Anzeige-Reihenfolge — für den Schreibtisch // wie für die HoneyBar in fremden Apps. Deshalb legt der Server sie fest und // nicht jeder Leser für sich: Als die HoneyBar ihre Überschriften noch selbst // beim Durchlaufen setzte, landete eine App ohne Kategorie am Ende unter der // letzten Überschrift, während der Schreibtisch sie oben zeigte. func TestKategorienWerdenEingesammelt(t *testing.T) { s, err := Open(filepath.Join(t.TempDir(), "honeyos.json")) if err != nil { t.Fatal(err) } // Absichtlich durcheinander: zwei Gruppen verschränkt, die App ohne // Kategorie zuletzt. err = s.SetApps([]App{ {ID: "a", URL: "https://e.test/a", Kategorie: "Apps"}, {ID: "g", URL: "https://e.test/g", Kategorie: "Dienste"}, {ID: "i", URL: "https://e.test/i", Kategorie: "Apps"}, {ID: "p", URL: "https://e.test/p", Kategorie: "Dienste"}, {ID: "l", URL: "https://e.test/l"}, }) if err != nil { t.Fatal(err) } will := []string{"l", "a", "i", "g", "p"} hat := []string{} for _, a := range s.Apps() { hat = append(hat, a.ID) } for i := range will { if i >= len(hat) || hat[i] != will[i] { t.Fatalf("Reihenfolge %v, erwartet %v — ohne Kategorie zuerst, dann die Gruppen in der Reihenfolge ihres ersten Auftretens", hat, will) } } // Und nach dem Neuladen dasselbe: Wer honeyos.json von Hand bearbeitet, // bekommt seine Kategorien ebenfalls eingesammelt. s2, err := Open(s.path) if err != nil { t.Fatal(err) } for i, a := range s2.Apps() { if a.ID != will[i] { t.Fatalf("nach dem Neuladen %q an Stelle %d, erwartet %q", a.ID, i, will[i]) } } }