package hn_test import ( "testing" "time" "git.eeqj.de/sneak/orangesite/hn" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/sqlite" ) func TestNewFetcher(t *testing.T) { t.Parallel() f := hn.NewFetcher(nil) if f == nil { t.Fatal("NewFetcher returned nil") } } func TestNewRequestHandlerSet(t *testing.T) { t.Parallel() rhs := hn.NewRequestHandlerSet("v1.2.3", nil) if rhs == nil { t.Fatal("NewRequestHandlerSet returned nil") } } // TestHNFrontPageRoundTrip exercises the gorm schema against an in-memory // sqlite database: migrate, insert, and read back a front-page row. func TestHNFrontPageRoundTrip(t *testing.T) { t.Parallel() db, err := gorm.Open("sqlite3", ":memory:") if err != nil { t.Fatalf("open in-memory db: %v", err) } defer func() { _ = db.Close() }() err = db.AutoMigrate(&hn.HNFrontPage{}).Error if err != nil { t.Fatalf("automigrate: %v", err) } want := hn.HNFrontPage{ HNID: 42, Appeared: time.Now(), Disappeared: time.Time{}, HighestRank: 1, Rank: 3, Title: "hello world", Score: 100, URL: "https://example.com", } err = db.Create(&want).Error if err != nil { t.Fatalf("create: %v", err) } var got hn.HNFrontPage err = db.Model(&hn.HNFrontPage{}).Where("hn_id = ?", 42).First(&got).Error if err != nil { t.Fatalf("query: %v", err) } if got.Title != want.Title || got.Score != want.Score || got.URL != want.URL { t.Errorf("round-trip mismatch: got %+v, want title=%q score=%d url=%q", got, want.Title, want.Score, want.URL) } }