54 lines
1.9 KiB
Go
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)
|
|
}
|
|
}
|
|
})
|
|
}
|