package main import ( "os" "path/filepath" "testing" "time" ) func TestModelStoreSQLiteCreatesSchemaAndPersists(t *testing.T) { dbPath := filepath.Join(t.TempDir(), "models.sqlite") store := NewModelStore(ModelStoreConfig{ Type: databaseTypeSQLite, DSN: dbPath, SQLitePath: dbPath, }) defer store.Close() if err := store.Load(); err != nil { t.Fatalf("load sqlite store: %v", err) } if _, err := os.Stat(dbPath); err != nil { t.Fatalf("sqlite file not created: %v", err) } model, err := store.EnsureByHostModelKey("chaturbate.com", "alice") if err != nil { t.Fatalf("ensure model: %v", err) } if model.ID != "chaturbate.com:alice" { t.Fatalf("unexpected model id: %q", model.ID) } if err := store.SetLastSeenOnline("chaturbate.com", "alice", true, time.Now().UTC().Format(time.RFC3339Nano)); err != nil { t.Fatalf("set last seen online: %v", err) } models := store.List() if len(models) != 1 { t.Fatalf("expected 1 model, got %d", len(models)) } if models[0].LastSeenOnline == nil || !*models[0].LastSeenOnline { t.Fatalf("lastSeenOnline not persisted: %#v", models[0].LastSeenOnline) } meta := store.Meta() if meta.Count != 1 { t.Fatalf("expected meta count 1, got %d", meta.Count) } if meta.UpdatedAt == "" { t.Fatal("expected meta updatedAt") } }