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) } }