mirror of
https://github.com/nkanaev/yarr.git
synced 2026-06-24 09:05:16 +00:00
wrap tests in dbtest
This commit is contained in:
@@ -4,11 +4,12 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/nkanaev/yarr/src/storage"
|
||||||
"github.com/nkanaev/yarr/src/storage/model"
|
"github.com/nkanaev/yarr/src/storage/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCreateFeed(t *testing.T) {
|
func TestCreateFeed(t *testing.T) {
|
||||||
db := testDB()
|
dbtest(t, func(t *testing.T, db storage.Storage) {
|
||||||
feed1 := db.CreateFeed(model.CreateFeedParams{Title: "title", Link: "http://example.com", FeedLink: "http://example.com/feed.xml"})
|
feed1 := db.CreateFeed(model.CreateFeedParams{Title: "title", Link: "http://example.com", FeedLink: "http://example.com/feed.xml"})
|
||||||
if feed1 == nil || feed1.Id == 0 {
|
if feed1 == nil || feed1.Id == 0 {
|
||||||
t.Fatal("expected feed")
|
t.Fatal("expected feed")
|
||||||
@@ -17,10 +18,11 @@ func TestCreateFeed(t *testing.T) {
|
|||||||
if feed2 == nil || !reflect.DeepEqual(feed1, feed2) {
|
if feed2 == nil || !reflect.DeepEqual(feed1, feed2) {
|
||||||
t.Fatal("invalid feed")
|
t.Fatal("invalid feed")
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCreateFeedSameLink(t *testing.T) {
|
func TestCreateFeedSameLink(t *testing.T) {
|
||||||
db := testDB()
|
dbtest(t, func(t *testing.T, db storage.Storage) {
|
||||||
feed1 := db.CreateFeed(model.CreateFeedParams{Title: "title", FeedLink: "http://example1.com/feed.xml"})
|
feed1 := db.CreateFeed(model.CreateFeedParams{Title: "title", FeedLink: "http://example1.com/feed.xml"})
|
||||||
if feed1 == nil || feed1.Id == 0 {
|
if feed1 == nil || feed1.Id == 0 {
|
||||||
t.Fatal("expected feed")
|
t.Fatal("expected feed")
|
||||||
@@ -34,10 +36,11 @@ func TestCreateFeedSameLink(t *testing.T) {
|
|||||||
if feed1.Id != feed2.Id {
|
if feed1.Id != feed2.Id {
|
||||||
t.Fatalf("expected the same feed.\nwant: %#v\nhave: %#v", feed1, feed2)
|
t.Fatalf("expected the same feed.\nwant: %#v\nhave: %#v", feed1, feed2)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestReadFeed(t *testing.T) {
|
func TestReadFeed(t *testing.T) {
|
||||||
db := testDB()
|
dbtest(t, func(t *testing.T, db storage.Storage) {
|
||||||
if db.GetFeed(100500) != nil {
|
if db.GetFeed(100500) != nil {
|
||||||
t.Fatal("cannot get nonexistent feed")
|
t.Fatal("cannot get nonexistent feed")
|
||||||
}
|
}
|
||||||
@@ -48,10 +51,11 @@ func TestReadFeed(t *testing.T) {
|
|||||||
if !reflect.DeepEqual(feeds, []model.Feed{*feed1, *feed2}) {
|
if !reflect.DeepEqual(feeds, []model.Feed{*feed1, *feed2}) {
|
||||||
t.Fatalf("invalid feed list: %#v", feeds)
|
t.Fatalf("invalid feed list: %#v", feeds)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUpdateFeed(t *testing.T) {
|
func TestUpdateFeed(t *testing.T) {
|
||||||
db := testDB()
|
dbtest(t, func(t *testing.T, db storage.Storage) {
|
||||||
feed1 := db.CreateFeed(model.CreateFeedParams{Title: "feed 1", Link: "http://example1.com", FeedLink: "http://example1.com/feed.xml"})
|
feed1 := db.CreateFeed(model.CreateFeedParams{Title: "feed 1", Link: "http://example1.com", FeedLink: "http://example1.com/feed.xml"})
|
||||||
folder := db.CreateFolder("test")
|
folder := db.CreateFolder("test")
|
||||||
icon := []byte("icon")
|
icon := []byte("icon")
|
||||||
@@ -73,10 +77,11 @@ func TestUpdateFeed(t *testing.T) {
|
|||||||
if !feed2.HasIcon || string(*feed2.Icon) != "icon" {
|
if !feed2.HasIcon || string(*feed2.Icon) != "icon" {
|
||||||
t.Error("invalid icon")
|
t.Error("invalid icon")
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDeleteFeed(t *testing.T) {
|
func TestDeleteFeed(t *testing.T) {
|
||||||
db := testDB()
|
dbtest(t, func(t *testing.T, db storage.Storage) {
|
||||||
feed1 := db.CreateFeed(model.CreateFeedParams{Title: "title", Link: "http://example.com", FeedLink: "http://example.com/feed.xml"})
|
feed1 := db.CreateFeed(model.CreateFeedParams{Title: "title", Link: "http://example.com", FeedLink: "http://example.com/feed.xml"})
|
||||||
|
|
||||||
if db.DeleteFeed(100500) {
|
if db.DeleteFeed(100500) {
|
||||||
@@ -89,4 +94,5 @@ func TestDeleteFeed(t *testing.T) {
|
|||||||
if db.GetFeed(feed1.Id) != nil {
|
if db.GetFeed(feed1.Id) != nil {
|
||||||
t.Fatal("feed still exists")
|
t.Fatal("feed still exists")
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,13 +4,12 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/nkanaev/yarr/src/storage"
|
||||||
"github.com/nkanaev/yarr/src/storage/model"
|
"github.com/nkanaev/yarr/src/storage/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestUpdateFeedState_Full(t *testing.T) {
|
func TestUpdateFeedState_Full(t *testing.T) {
|
||||||
s := testDB()
|
dbtest(t, func(t *testing.T, s storage.Storage) {
|
||||||
defer s.Close()
|
|
||||||
|
|
||||||
f := s.CreateFeed(model.CreateFeedParams{Title: "Test", FeedLink: "http://example.com"})
|
f := s.CreateFeed(model.CreateFeedParams{Title: "Test", FeedLink: "http://example.com"})
|
||||||
|
|
||||||
now := time.Now().UTC().Truncate(time.Second)
|
now := time.Now().UTC().Truncate(time.Second)
|
||||||
@@ -50,12 +49,11 @@ func TestUpdateFeedState_Full(t *testing.T) {
|
|||||||
if state.HTTPEtag != etag {
|
if state.HTTPEtag != etag {
|
||||||
t.Errorf("expected %s, got %s", etag, state.HTTPEtag)
|
t.Errorf("expected %s, got %s", etag, state.HTTPEtag)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUpdateFeedState_Partial(t *testing.T) {
|
func TestUpdateFeedState_Partial(t *testing.T) {
|
||||||
s := testDB()
|
dbtest(t, func(t *testing.T, s storage.Storage) {
|
||||||
defer s.Close()
|
|
||||||
|
|
||||||
f := s.CreateFeed(model.CreateFeedParams{Title: "Test", FeedLink: "http://example.com"})
|
f := s.CreateFeed(model.CreateFeedParams{Title: "Test", FeedLink: "http://example.com"})
|
||||||
etag := "v1"
|
etag := "v1"
|
||||||
s.UpdateFeedState(f.Id, model.UpdateFeedStateParams{HTTPEtag: &etag})
|
s.UpdateFeedState(f.Id, model.UpdateFeedStateParams{HTTPEtag: &etag})
|
||||||
@@ -78,12 +76,11 @@ func TestUpdateFeedState_Partial(t *testing.T) {
|
|||||||
if state.HTTPEtag != etag {
|
if state.HTTPEtag != etag {
|
||||||
t.Errorf("etag should be unchanged, got %s", state.HTTPEtag)
|
t.Errorf("etag should be unchanged, got %s", state.HTTPEtag)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUpdateFeedState_ClearError(t *testing.T) {
|
func TestUpdateFeedState_ClearError(t *testing.T) {
|
||||||
s := testDB()
|
dbtest(t, func(t *testing.T, s storage.Storage) {
|
||||||
defer s.Close()
|
|
||||||
|
|
||||||
f := s.CreateFeed(model.CreateFeedParams{Title: "Test", FeedLink: "http://example.com"})
|
f := s.CreateFeed(model.CreateFeedParams{Title: "Test", FeedLink: "http://example.com"})
|
||||||
errMsg := "error"
|
errMsg := "error"
|
||||||
s.UpdateFeedState(f.Id, model.UpdateFeedStateParams{LastError: &errMsg})
|
s.UpdateFeedState(f.Id, model.UpdateFeedStateParams{LastError: &errMsg})
|
||||||
@@ -103,12 +100,11 @@ func TestUpdateFeedState_ClearError(t *testing.T) {
|
|||||||
if state.LastError != "" {
|
if state.LastError != "" {
|
||||||
t.Errorf("expected empty error string, got %v", state.LastError)
|
t.Errorf("expected empty error string, got %v", state.LastError)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestListFeedStates(t *testing.T) {
|
func TestListFeedStates(t *testing.T) {
|
||||||
s := testDB()
|
dbtest(t, func(t *testing.T, s storage.Storage) {
|
||||||
defer s.Close()
|
|
||||||
|
|
||||||
f1 := s.CreateFeed(model.CreateFeedParams{Title: "F1", FeedLink: "L1"})
|
f1 := s.CreateFeed(model.CreateFeedParams{Title: "F1", FeedLink: "L1"})
|
||||||
f2 := s.CreateFeed(model.CreateFeedParams{Title: "F2", FeedLink: "L2"})
|
f2 := s.CreateFeed(model.CreateFeedParams{Title: "F2", FeedLink: "L2"})
|
||||||
|
|
||||||
@@ -124,6 +120,7 @@ func TestListFeedStates(t *testing.T) {
|
|||||||
if len(states) != 2 {
|
if len(states) != 2 {
|
||||||
t.Errorf("expected 2 states, got %d", len(states))
|
t.Errorf("expected 2 states, got %d", len(states))
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func ptr[T any](v T) *T {
|
func ptr[T any](v T) *T {
|
||||||
|
|||||||
@@ -3,11 +3,12 @@ package tests
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/nkanaev/yarr/src/storage"
|
||||||
"github.com/nkanaev/yarr/src/storage/model"
|
"github.com/nkanaev/yarr/src/storage/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestUpdateFolder(t *testing.T) {
|
func TestUpdateFolder(t *testing.T) {
|
||||||
db := testDB()
|
dbtest(t, func(t *testing.T, db storage.Storage) {
|
||||||
folder := db.CreateFolder("old title")
|
folder := db.CreateFolder("old title")
|
||||||
if folder.IsExpanded != true {
|
if folder.IsExpanded != true {
|
||||||
t.Fatal("expected folder to be expanded by default")
|
t.Fatal("expected folder to be expanded by default")
|
||||||
@@ -77,4 +78,5 @@ func TestUpdateFolder(t *testing.T) {
|
|||||||
t.Errorf("expected no changes, got title=%s expanded=%v", folders[0].Title, folders[0].IsExpanded)
|
t.Errorf("expected no changes, got title=%s expanded=%v", folders[0].Title, folders[0].IsExpanded)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import (
|
|||||||
"testing/synctest"
|
"testing/synctest"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/nkanaev/yarr/src/storage"
|
||||||
"github.com/nkanaev/yarr/src/storage/model"
|
"github.com/nkanaev/yarr/src/storage/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -144,7 +145,7 @@ func getItemGuids(items []model.Item) []string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestListItems(t *testing.T) {
|
func TestListItems(t *testing.T) {
|
||||||
db := testDB()
|
dbtest(t, func(t *testing.T, db storage.Storage) {
|
||||||
scope := testItemsSetup(db)
|
scope := testItemsSetup(db)
|
||||||
|
|
||||||
// filter by folder_id
|
// filter by folder_id
|
||||||
@@ -231,10 +232,11 @@ func TestListItems(t *testing.T) {
|
|||||||
t.Logf("have: %#v", have)
|
t.Logf("have: %#v", have)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestListItemsPaginated(t *testing.T) {
|
func TestListItemsPaginated(t *testing.T) {
|
||||||
db := testDB()
|
dbtest(t, func(t *testing.T, db storage.Storage) {
|
||||||
testItemsSetup(db)
|
testItemsSetup(db)
|
||||||
|
|
||||||
item012 := getItem(db, "item012")
|
item012 := getItem(db, "item012")
|
||||||
@@ -272,13 +274,14 @@ func TestListItemsPaginated(t *testing.T) {
|
|||||||
t.Logf("have: %#v", have)
|
t.Logf("have: %#v", have)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMarkItemsRead(t *testing.T) {
|
func TestMarkItemsRead(t *testing.T) {
|
||||||
// NOTE: starred items must not be marked as read
|
// NOTE: starred items must not be marked as read
|
||||||
var read model.ItemStatus = model.READ
|
var read model.ItemStatus = model.READ
|
||||||
|
|
||||||
db1 := testDB()
|
dbtest(t, func(t *testing.T, db1 storage.Storage) {
|
||||||
testItemsSetup(db1)
|
testItemsSetup(db1)
|
||||||
db1.MarkItemsRead(model.MarkFilter{})
|
db1.MarkItemsRead(model.MarkFilter{})
|
||||||
have := getItemGuids(db1.ListItems(model.ItemFilter{Status: &read}, 10, false, false))
|
have := getItemGuids(db1.ListItems(model.ItemFilter{Status: &read}, 10, false, false))
|
||||||
@@ -291,8 +294,9 @@ func TestMarkItemsRead(t *testing.T) {
|
|||||||
t.Logf("have: %#v", have)
|
t.Logf("have: %#v", have)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
|
||||||
db2 := testDB()
|
dbtest(t, func(t *testing.T, db2 storage.Storage) {
|
||||||
scope2 := testItemsSetup(db2)
|
scope2 := testItemsSetup(db2)
|
||||||
db2.MarkItemsRead(model.MarkFilter{FolderID: &scope2.folder1.Id})
|
db2.MarkItemsRead(model.MarkFilter{FolderID: &scope2.folder1.Id})
|
||||||
have = getItemGuids(db2.ListItems(model.ItemFilter{Status: &read}, 10, false, false))
|
have = getItemGuids(db2.ListItems(model.ItemFilter{Status: &read}, 10, false, false))
|
||||||
@@ -305,8 +309,9 @@ func TestMarkItemsRead(t *testing.T) {
|
|||||||
t.Logf("have: %#v", have)
|
t.Logf("have: %#v", have)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
|
||||||
db3 := testDB()
|
dbtest(t, func(t *testing.T, db3 storage.Storage) {
|
||||||
scope3 := testItemsSetup(db3)
|
scope3 := testItemsSetup(db3)
|
||||||
db3.MarkItemsRead(model.MarkFilter{FeedID: &scope3.feed11.Id})
|
db3.MarkItemsRead(model.MarkFilter{FeedID: &scope3.feed11.Id})
|
||||||
have = getItemGuids(db3.ListItems(model.ItemFilter{Status: &read}, 10, false, false))
|
have = getItemGuids(db3.ListItems(model.ItemFilter{Status: &read}, 10, false, false))
|
||||||
@@ -319,14 +324,15 @@ func TestMarkItemsRead(t *testing.T) {
|
|||||||
t.Logf("have: %#v", have)
|
t.Logf("have: %#v", have)
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDeleteOldItems(t *testing.T) {
|
func TestDeleteOldItems(t *testing.T) {
|
||||||
now := time.Now().UTC()
|
now := time.Now().UTC()
|
||||||
starred := model.STARRED
|
starred := model.STARRED
|
||||||
|
dbtest(t, func(t *testing.T, db storage.Storage) {
|
||||||
|
|
||||||
t.Run("keeps at least 50 items", func(t *testing.T) {
|
t.Run("keeps at least 50 items", func(t *testing.T) {
|
||||||
db := testDB()
|
|
||||||
feed := db.CreateFeed(model.CreateFeedParams{Title: "f", FeedLink: "http://f.xml"})
|
feed := db.CreateFeed(model.CreateFeedParams{Title: "f", FeedLink: "http://f.xml"})
|
||||||
items := make([]model.Item, 100)
|
items := make([]model.Item, 100)
|
||||||
for i := range 100 {
|
for i := range 100 {
|
||||||
@@ -347,7 +353,6 @@ func TestDeleteOldItems(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("keeps all less than 90 days old", func(t *testing.T) {
|
t.Run("keeps all less than 90 days old", func(t *testing.T) {
|
||||||
db := testDB()
|
|
||||||
feed := db.CreateFeed(model.CreateFeedParams{Title: "f", FeedLink: "http://f.xml"})
|
feed := db.CreateFeed(model.CreateFeedParams{Title: "f", FeedLink: "http://f.xml"})
|
||||||
items := make([]model.Item, 100)
|
items := make([]model.Item, 100)
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
@@ -369,7 +374,6 @@ func TestDeleteOldItems(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("keeps starred", func(t *testing.T) {
|
t.Run("keeps starred", func(t *testing.T) {
|
||||||
db := testDB()
|
|
||||||
feed := db.CreateFeed(model.CreateFeedParams{Title: "f", FeedLink: "http://f.xml"})
|
feed := db.CreateFeed(model.CreateFeedParams{Title: "f", FeedLink: "http://f.xml"})
|
||||||
items := make([]model.Item, 100)
|
items := make([]model.Item, 100)
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
@@ -391,11 +395,11 @@ func TestDeleteOldItems(t *testing.T) {
|
|||||||
t.Errorf("expected 60 items, have %d", have)
|
t.Errorf("expected 60 items, have %d", have)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func TestCreateItemsLastArrived(t *testing.T) {
|
func TestCreateItemsLastArrived(t *testing.T) {
|
||||||
|
dbtest(t, func(t *testing.T, db storage.Storage) {
|
||||||
synctest.Test(t, func(t *testing.T) {
|
synctest.Test(t, func(t *testing.T) {
|
||||||
db := testDB()
|
db := testDB()
|
||||||
defer db.db.Close()
|
defer db.db.Close()
|
||||||
@@ -432,11 +436,11 @@ func TestCreateItemsLastArrived(t *testing.T) {
|
|||||||
t.Errorf("expected last_arrived to be updated. old: %v, new: %v", lastArrived1, lastArrived2)
|
t.Errorf("expected last_arrived to be updated. old: %v, new: %v", lastArrived1, lastArrived2)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSearch(t *testing.T) {
|
func TestSearch(t *testing.T) {
|
||||||
db := testDB()
|
dbtest(t, func(t *testing.T, db storage.Storage) {
|
||||||
defer db.Close()
|
|
||||||
feed := db.CreateFeed(model.CreateFeedParams{Title: "f", FeedLink: "http://f.xml"})
|
feed := db.CreateFeed(model.CreateFeedParams{Title: "f", FeedLink: "http://f.xml"})
|
||||||
|
|
||||||
db.CreateItems([]model.Item{
|
db.CreateItems([]model.Item{
|
||||||
@@ -514,4 +518,5 @@ func TestSearch(t *testing.T) {
|
|||||||
if len(have) > 0 {
|
if len(have) > 0 {
|
||||||
t.Errorf("delete trigger failed: found deleted item: %v", have)
|
t.Errorf("delete trigger failed: found deleted item: %v", have)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,24 +5,23 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/nkanaev/yarr/src/storage"
|
||||||
"github.com/nkanaev/yarr/src/storage/model"
|
"github.com/nkanaev/yarr/src/storage/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSettingsDefaults(t *testing.T) {
|
func TestSettingsDefaults(t *testing.T) {
|
||||||
s := testDB()
|
dbtest(t, func(t *testing.T, s storage.Storage) {
|
||||||
defer s.Close()
|
|
||||||
|
|
||||||
settings := s.GetSettings()
|
settings := s.GetSettings()
|
||||||
defaults := settingsDefaults()
|
defaults := settingsDefaults()
|
||||||
|
|
||||||
if !reflect.DeepEqual(settings, defaults) {
|
if !reflect.DeepEqual(settings, defaults) {
|
||||||
t.Errorf("expected defaults %+v, got %+v", defaults, settings)
|
t.Errorf("expected defaults %+v, got %+v", defaults, settings)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUpdateSettings(t *testing.T) {
|
func TestUpdateSettings(t *testing.T) {
|
||||||
s := testDB()
|
dbtest(t, func(t *testing.T, s storage.Storage) {
|
||||||
defer s.Close()
|
|
||||||
|
|
||||||
params := model.UpdateSettingsParams{
|
params := model.UpdateSettingsParams{
|
||||||
ThemeName: ptr("night"),
|
ThemeName: ptr("night"),
|
||||||
@@ -45,11 +44,11 @@ func TestUpdateSettings(t *testing.T) {
|
|||||||
if settings.RefreshRate != 15 {
|
if settings.RefreshRate != 15 {
|
||||||
t.Errorf("expected refresh_rate 15, got %d", settings.RefreshRate)
|
t.Errorf("expected refresh_rate 15, got %d", settings.RefreshRate)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetSettings(t *testing.T) {
|
func TestGetSettings(t *testing.T) {
|
||||||
s := testDB()
|
dbtest(t, func(t *testing.T, s storage.Storage) {
|
||||||
defer s.Close()
|
|
||||||
|
|
||||||
s.UpdateSettings(model.UpdateSettingsParams{Language: ptr("fr")})
|
s.UpdateSettings(model.UpdateSettingsParams{Language: ptr("fr")})
|
||||||
|
|
||||||
@@ -60,11 +59,11 @@ func TestGetSettings(t *testing.T) {
|
|||||||
if settings.ThemeName != "light" {
|
if settings.ThemeName != "light" {
|
||||||
t.Errorf("expected light, got %v", settings.ThemeName)
|
t.Errorf("expected light, got %v", settings.ThemeName)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSettingsExhaustive(t *testing.T) {
|
func TestSettingsExhaustive(t *testing.T) {
|
||||||
s := testDB()
|
dbtest(t, func(t *testing.T, s storage.Storage) {
|
||||||
defer s.Close()
|
|
||||||
|
|
||||||
settingsType := reflect.TypeOf(model.Settings{})
|
settingsType := reflect.TypeOf(model.Settings{})
|
||||||
paramsType := reflect.TypeOf(model.UpdateSettingsParams{})
|
paramsType := reflect.TypeOf(model.UpdateSettingsParams{})
|
||||||
@@ -149,4 +148,5 @@ func TestSettingsExhaustive(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func dbtest(t *testing.T, testcase func(t *testing.T, db storage.Storage)) {
|
func dbtest(t *testing.T, testcase func(t *testing.T, db storage.Storage)) {
|
||||||
testurls := map[string]string {
|
testurls := map[string]string{
|
||||||
"sqlite": ":memory:",
|
"sqlite": ":memory:",
|
||||||
"postgres": "postgres://postgres:postgres@localhost:5432/yarr_test",
|
"postgres": "postgres://postgres:postgres@localhost:5432/yarr_test",
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user