Files
template-vitrine/backend/test/site/service_test.go
T
2026-09-14 20:50:19 +02:00

63 lines
1.6 KiB
Go

package site_test
import (
"context"
"testing"
"backend/internal/modules/site"
)
// fakeRepository is an in-memory site.Repository backing the single
// site_settings row, used to unit-test site.Service without a real database.
type fakeRepository struct {
settings site.Settings
}
func newFakeRepository() *fakeRepository {
return &fakeRepository{settings: site.Settings{ID: 1}}
}
func (r *fakeRepository) Get(_ context.Context) (*site.Settings, error) {
cp := r.settings
return &cp, nil
}
func (r *fakeRepository) Update(_ context.Context, s *site.Settings) error {
r.settings.Name = s.Name
r.settings.Description = s.Description
r.settings.Slug = s.Slug
return nil
}
func TestService_Update_PersistsFields(t *testing.T) {
svc := site.NewService(newFakeRepository())
ctx := context.Background()
updated, err := svc.Update(ctx, "My Shop", "A small shop", "my-shop")
if err != nil {
t.Fatalf("Update() error = %v", err)
}
if updated.Name != "My Shop" || updated.Description != "A small shop" || updated.Slug != "my-shop" {
t.Fatalf("Update() = %+v, fields not persisted as expected", updated)
}
fetched, err := svc.Get(ctx)
if err != nil {
t.Fatalf("Get() error = %v", err)
}
if fetched.Name != "My Shop" {
t.Fatalf("Get() after Update() = %+v, want name %q", fetched, "My Shop")
}
}
func TestService_Get_DefaultsBeforeAnyUpdate(t *testing.T) {
svc := site.NewService(newFakeRepository())
settings, err := svc.Get(context.Background())
if err != nil {
t.Fatalf("Get() error = %v", err)
}
if settings.Name != "" || settings.Slug != "" {
t.Fatalf("Get() before any update = %+v, want empty defaults", settings)
}
}