vivaplusdl/episodes_test.go
Sebastiaan de Schaetzen a99ff09e7d
All checks were successful
Build / build (push) Successful in 2m59s
Use month-day-count numbering system
2025-02-11 13:42:58 +01:00

63 lines
1.4 KiB
Go

package main
import "testing"
func TestCalculateEpisodeNumbers(t *testing.T) {
db := openDatabaseSource(":memory:")
// Ensure the DB is empty
_, err := db.Exec("delete from videos")
if err != nil {
t.Error(err)
}
_, err = db.Exec(`insert into videos (title, url, upload_date, year, episode, run) values
('Video A', 'a', '2025-01-04', 2025, 10401, 1),
('Video D', 'd', '2025-01-05', 2025, null, 2),
('Video C', 'c', '2025-01-04', 2025, null, 2),
('Video B', 'b', '2025-01-04', 2025, null, 2),
('Video E', 'e', '2025-10-01', 2025, null, 3),
('Old Video', 'z', '2020-12-31', 2020, 100, 1)`)
if err != nil {
t.Error(err)
}
err = CalculateEpisodeNumbers(db)
if err != nil {
t.Error(err)
}
rows, err := db.Query("select title, episode from videos where year = 2025")
if err != nil {
t.Error(err)
}
expectedList := []struct {
Title string
Episode int
}{
{"Video A", 10401},
{"Video D", 10501},
{"Video C", 10403},
{"Video B", 10402},
{"Video E", 100101},
}
for _, expected := range expectedList {
var title string
var episode int
rows.Next()
err = rows.Scan(&title, &episode)
if err != nil {
t.Error(err)
}
if title != expected.Title {
t.Errorf("Title is %s, expected %s", title, expected.Title)
}
if episode != expected.Episode {
t.Errorf("Episode is %d, expected %d for video %s", episode, expected.Episode, title)
}
}
}