test: cover skip segment overrides
This commit is contained in:
@@ -23,3 +23,104 @@ func TestHasSkipSegmentOverrideTableReturnsFalseWhenMissing(t *testing.T) {
|
|||||||
t.Fatalf("HasSkipSegmentOverrideTable returned true for missing table")
|
t.Fatalf("HasSkipSegmentOverrideTable returned true for missing table")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestHasSkipSegmentOverrideTableReturnsTrueWhenPresent(t *testing.T) {
|
||||||
|
sqlDB, err := openSkipSegmentOverrideTestDB(t)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("open test db: %v", err)
|
||||||
|
}
|
||||||
|
defer func() { _ = sqlDB.Close() }()
|
||||||
|
|
||||||
|
queries := New(sqlDB)
|
||||||
|
|
||||||
|
ok, err := queries.HasSkipSegmentOverrideTable(context.Background())
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("HasSkipSegmentOverrideTable: %v", err)
|
||||||
|
}
|
||||||
|
if !ok {
|
||||||
|
t.Fatal("HasSkipSegmentOverrideTable returned false for existing table")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSkipSegmentOverrideUpsertAndList(t *testing.T) {
|
||||||
|
sqlDB, err := openSkipSegmentOverrideTestDB(t)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("open test db: %v", err)
|
||||||
|
}
|
||||||
|
defer func() { _ = sqlDB.Close() }()
|
||||||
|
|
||||||
|
queries := New(sqlDB)
|
||||||
|
|
||||||
|
row := SkipSegmentOverrideRow{
|
||||||
|
ID: "override-1",
|
||||||
|
UserID: "user-a",
|
||||||
|
AnimeID: 123,
|
||||||
|
Episode: 4,
|
||||||
|
SkipType: "op",
|
||||||
|
StartTime: 12.5,
|
||||||
|
EndTime: 28.25,
|
||||||
|
}
|
||||||
|
if err := queries.UpsertSkipSegmentOverride(context.Background(), row); err != nil {
|
||||||
|
t.Fatalf("UpsertSkipSegmentOverride insert: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
got, err := queries.ListSkipSegmentOverrides(context.Background(), row.UserID, row.AnimeID, row.Episode)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("ListSkipSegmentOverrides insert: %v", err)
|
||||||
|
}
|
||||||
|
assertSingleSkipSegmentOverrideRow(t, got, row)
|
||||||
|
|
||||||
|
updated := row
|
||||||
|
updated.StartTime = 13.75
|
||||||
|
updated.EndTime = 29.5
|
||||||
|
if err := queries.UpsertSkipSegmentOverride(context.Background(), updated); err != nil {
|
||||||
|
t.Fatalf("UpsertSkipSegmentOverride update: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
got, err = queries.ListSkipSegmentOverrides(context.Background(), row.UserID, row.AnimeID, row.Episode)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("ListSkipSegmentOverrides update: %v", err)
|
||||||
|
}
|
||||||
|
assertSingleSkipSegmentOverrideRow(t, got, updated)
|
||||||
|
}
|
||||||
|
|
||||||
|
func assertSingleSkipSegmentOverrideRow(t *testing.T, got []SkipSegmentOverrideRow, want SkipSegmentOverrideRow) {
|
||||||
|
t.Helper()
|
||||||
|
|
||||||
|
if len(got) != 1 {
|
||||||
|
t.Fatalf("len(got) = %d, want 1", len(got))
|
||||||
|
}
|
||||||
|
if got[0] != want {
|
||||||
|
t.Fatalf("row = %+v, want %+v", got[0], want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func openSkipSegmentOverrideTestDB(t *testing.T) (*sql.DB, error) {
|
||||||
|
t.Helper()
|
||||||
|
|
||||||
|
sqlDB, err := sql.Open("sqlite3", ":memory:")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = sqlDB.ExecContext(context.Background(), `
|
||||||
|
CREATE TABLE skip_segment_override (
|
||||||
|
id TEXT PRIMARY KEY,
|
||||||
|
user_id TEXT NOT NULL,
|
||||||
|
anime_id INTEGER NOT NULL,
|
||||||
|
episode INTEGER NOT NULL,
|
||||||
|
skip_type TEXT NOT NULL,
|
||||||
|
start_time REAL NOT NULL,
|
||||||
|
end_time REAL NOT NULL,
|
||||||
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
UNIQUE(user_id, anime_id, episode, skip_type)
|
||||||
|
);
|
||||||
|
`)
|
||||||
|
if err != nil {
|
||||||
|
_ = sqlDB.Close()
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return sqlDB, nil
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user