first
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user