wip
This commit is contained in:
94
internal/persist/persist_test.go
Normal file
94
internal/persist/persist_test.go
Normal file
@@ -0,0 +1,94 @@
|
||||
package persist
|
||||
|
||||
import (
|
||||
"os"
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSaveAndReloadEntry(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
t.Setenv("XDG_DATA_HOME", dir)
|
||||
|
||||
s1, err := Open("projkey")
|
||||
if err != nil {
|
||||
t.Fatalf("open: %v", err)
|
||||
}
|
||||
if got := s1.List(); len(got) != 0 {
|
||||
t.Fatalf("fresh store should be empty, got %v", got)
|
||||
}
|
||||
want := Entry{
|
||||
ID: "p_abc123",
|
||||
Name: "bun-dev",
|
||||
Argv: []string{"sh", "-lc", "bun run dev"},
|
||||
WorkDir: "/tmp/proj",
|
||||
PresetRef: "shell",
|
||||
AutoRestart: true,
|
||||
}
|
||||
if err := s1.Save(want); err != nil {
|
||||
t.Fatalf("save: %v", err)
|
||||
}
|
||||
|
||||
s2, err := Open("projkey")
|
||||
if err != nil {
|
||||
t.Fatalf("reopen: %v", err)
|
||||
}
|
||||
got := s2.List()
|
||||
if len(got) != 1 || !reflect.DeepEqual(got[0], want) {
|
||||
t.Fatalf("reload mismatch: got %v want [%v]", got, want)
|
||||
}
|
||||
if _, err := os.Stat(s2.Path()); err != nil {
|
||||
t.Fatalf("stat processes.json: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRemoveEntry(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
t.Setenv("XDG_DATA_HOME", dir)
|
||||
s, err := Open("projkey")
|
||||
if err != nil {
|
||||
t.Fatalf("open: %v", err)
|
||||
}
|
||||
if err := s.Save(Entry{ID: "a", Name: "a", Argv: []string{"a"}}); err != nil {
|
||||
t.Fatalf("save a: %v", err)
|
||||
}
|
||||
if err := s.Save(Entry{ID: "b", Name: "b", Argv: []string{"b"}}); err != nil {
|
||||
t.Fatalf("save b: %v", err)
|
||||
}
|
||||
if err := s.Remove("a"); err != nil {
|
||||
t.Fatalf("remove a: %v", err)
|
||||
}
|
||||
got := s.List()
|
||||
if len(got) != 1 || got[0].ID != "b" {
|
||||
t.Fatalf("after remove a, got %v", got)
|
||||
}
|
||||
// Removing a non-existent entry is a no-op.
|
||||
if err := s.Remove("missing"); err != nil {
|
||||
t.Fatalf("remove missing: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSaveUpdatesExistingEntry(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
t.Setenv("XDG_DATA_HOME", dir)
|
||||
s, err := Open("projkey")
|
||||
if err != nil {
|
||||
t.Fatalf("open: %v", err)
|
||||
}
|
||||
if err := s.Save(Entry{ID: "a", Name: "old"}); err != nil {
|
||||
t.Fatalf("save: %v", err)
|
||||
}
|
||||
if err := s.Save(Entry{ID: "a", Name: "new", AutoRestart: true}); err != nil {
|
||||
t.Fatalf("update: %v", err)
|
||||
}
|
||||
got := s.List()
|
||||
if len(got) != 1 || got[0].Name != "new" || !got[0].AutoRestart {
|
||||
t.Fatalf("update mismatch: %v", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestOpenRequiresProjectKey(t *testing.T) {
|
||||
if _, err := Open(""); err == nil {
|
||||
t.Fatalf("open with empty project key should fail")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user