package repository_test import ( "testing" "time" "git.jamestombleson.com/jtom38/newsbot-api/internal/repository" ) const ( articleFakeDotCom = "www.fake.com" ) func TestCreateArticle(t *testing.T) { db, err := setupInMemoryDb() if err != nil { t.Log(err) t.FailNow() } defer db.Close() r := repository.NewArticleRepository(db) created, err := r.Create(1, "", "unit test", articleFakeDotCom, "", "testing", "", "", time.Now(), false) if err != nil { t.Log(err) t.FailNow() } if created != 1 { t.Log("failed to create the record") t.FailNow() } } func TestArticleByUrl(t *testing.T) { db, err := setupInMemoryDb() if err != nil { t.Log(err) t.FailNow() } defer db.Close() r := repository.NewArticleRepository(db) err = insertFakeArticles(r, "u1") if err != nil { t.Log(err) t.FailNow() } article, err := r.GetByUrl(articleFakeDotCom) if err != nil { t.Log(err) t.FailNow() } if article.Url != "www.fake.com" { t.Log("failed to find the requested record") t.FailNow() } } func TestPullingMultipleArticlesWithLimit(t *testing.T) { db, err := setupInMemoryDb() if err != nil { t.Log(err) t.FailNow() } defer db.Close() r := repository.NewArticleRepository(db) insertFakeArticles(r, "u1") insertFakeArticles(r, "u2") insertFakeArticles(r, "u3") insertFakeArticles(r, "u4") items, err := r.List(3) if err != nil { t.Log(err) t.FailNow() } if len(items) != 3 { t.Log("expected 3 rows back") t.FailNow() } } func TestPullingMultipleArticlesWithPaging(t *testing.T) { db, err := setupInMemoryDb() if err != nil { t.Log(err) t.FailNow() } defer db.Close() r := repository.NewArticleRepository(db) insertFakeArticles(r, "u1") insertFakeArticles(r, "u2") insertFakeArticles(r, "u3") insertFakeArticles(r, "u4") items, err := r.ListByPage(2, 1) if err != nil { t.Log(err) t.FailNow() } if items[0].Title != "u2" { t.Log("pulled the wrong record with paging") t.FailNow() } } func insertFakeArticles(r repository.ArticleRepository, title string) error { _, err := r.Create(1, "", title, articleFakeDotCom, "", "testing", "", "", time.Now(), false) if err != nil { return err } return nil }