54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
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")
|
|
}
|
|
}
|