优化结构
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
package system
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"kra/internal/config"
|
||||
)
|
||||
|
||||
type initializationRepoStub struct {
|
||||
initializeErr error
|
||||
reloadErr error
|
||||
}
|
||||
|
||||
func (*initializationRepoStub) IsInitialized(context.Context) (bool, error) { return false, nil }
|
||||
func (r *initializationRepoStub) Initialize(context.Context, *DatabaseConfig) error {
|
||||
return r.initializeErr
|
||||
}
|
||||
func (*initializationRepoStub) PersistConfig(context.Context) error { return nil }
|
||||
func (*initializationRepoStub) PersistRuntimeConfig(context.Context, *config.Config) error {
|
||||
return nil
|
||||
}
|
||||
func (r *initializationRepoStub) ReloadConfig(context.Context) error { return r.reloadErr }
|
||||
func (*initializationRepoStub) ConfigurationJSON() (json.RawMessage, error) {
|
||||
return json.RawMessage(`{}`), nil
|
||||
}
|
||||
func (*initializationRepoStub) SaveConfigurationJSON(context.Context, json.RawMessage) error {
|
||||
return nil
|
||||
}
|
||||
func (*initializationRepoStub) DiskMountPoints() []string { return nil }
|
||||
|
||||
type taskReloaderStub struct{ err error }
|
||||
|
||||
func (r taskReloaderStub) Reload(context.Context) error { return r.err }
|
||||
|
||||
func TestInitializeClassifiesPostCommitTaskReloadFailure(t *testing.T) {
|
||||
reloadErr := errors.New("scheduler unavailable")
|
||||
uc := NewSystemConfigUsecase(&initializationRepoStub{}, taskReloaderStub{err: reloadErr})
|
||||
err := uc.Initialize(context.Background(), &DatabaseConfig{})
|
||||
if !errors.Is(err, ErrTaskRuntimeReload) || !errors.Is(err, reloadErr) {
|
||||
t.Fatalf("Initialize() error = %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestReloadConfigClassifiesMissingTaskRuntime(t *testing.T) {
|
||||
uc := NewSystemConfigUsecase(&initializationRepoStub{}, nil)
|
||||
err := uc.ReloadConfig(context.Background())
|
||||
if !errors.Is(err, ErrTaskRuntimeReload) {
|
||||
t.Fatalf("ReloadConfig() error = %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSystemConfigUsecaseRejectsMissingRepository(t *testing.T) {
|
||||
uc := NewSystemConfigUsecase(nil, nil)
|
||||
if _, err := uc.IsInitialized(context.Background()); err == nil {
|
||||
t.Fatal("IsInitialized accepted a missing repository")
|
||||
}
|
||||
if _, err := uc.ConfigurationJSON(); err == nil {
|
||||
t.Fatal("ConfigurationJSON accepted a missing repository")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user