Files
RenewCMS/test/site_find_persistence_test.go
T

54 lines
1.9 KiB
Go

package test
import (
"RenewCMS/internal/domain/site"
"RenewCMS/internal/infrastructure/persistence/database"
persistence "RenewCMS/internal/infrastructure/persistence/repositories"
"fmt"
"testing"
)
func TestSiteRepositoryFind(t *testing.T) {
db := openUnmigratedSQLite(t)
if err := database.Migrate(db, "https://renew.example.com"); err != nil {
t.Fatalf("migrate: %v", err)
}
repo := persistence.NewSiteRepository(db)
for i := 0; i < 12; i++ {
_, err := repo.Create(site.Site{Name: fmt.Sprintf("Shop %02d", i), Key: fmt.Sprintf("shop%02d", i), BaseURL: "https://shop.example.net", DefaultRobots: site.RobotsIndex})
if err != nil {
t.Fatalf("create: %v", err)
}
}
if _, err := repo.Create(site.Site{Name: "100% Café", Key: "cafe", BaseURL: "https://cafe.example.net", DefaultRobots: site.RobotsIndex}); err != nil {
t.Fatalf("create: %v", err)
}
t.Run("Unpaged returns everything with the default first", func(t *testing.T) {
page, err := repo.Find(site.ListQuery{})
if err != nil || page.Total != 14 || len(page.Items) != 14 || !page.Items[0].IsDefault {
t.Fatalf("page %+v err %v", page.Total, err)
}
})
t.Run("Paging slices after the search", func(t *testing.T) {
page, err := repo.Find(site.ListQuery{Q: "SHOP", Page: 2, Size: 5})
if err != nil || page.Total != 12 || len(page.Items) != 5 || page.Items[0].Name != "Shop 05" {
t.Fatalf("page %+v err %v", page, err)
}
past, err := repo.Find(site.ListQuery{Q: "shop", Page: 9, Size: 5})
if err != nil || past.Total != 12 || past.Items == nil || len(past.Items) != 0 {
t.Fatalf("past %+v err %v", past, err)
}
})
t.Run("Wildcards are literal and accents are ignored", func(t *testing.T) {
for _, q := range []string{"%", "cafe", "CAFÉ"} {
page, err := repo.Find(site.ListQuery{Q: q})
if err != nil || page.Total != 1 || page.Items[0].Key != "cafe" {
t.Fatalf("%q: %+v err %v", q, page, err)
}
}
})
}