package deploy import ( "context" "log/slog" "git.eeqj.de/sneak/upaas/internal/config" "git.eeqj.de/sneak/upaas/internal/docker" "git.eeqj.de/sneak/upaas/internal/models" ) // NewTestService creates a Service with minimal dependencies for testing. func NewTestService(log *slog.Logger) *Service { return &Service{ log: log, } } // CancelActiveDeploy exposes cancelActiveDeploy for testing. func (svc *Service) CancelActiveDeploy(appID string) { svc.cancelActiveDeploy(appID) } // RegisterActiveDeploy registers an active deploy for testing. func (svc *Service) RegisterActiveDeploy(appID string, cancel context.CancelFunc, done chan struct{}) { svc.activeDeploys.Store(appID, &activeDeploy{cancel: cancel, done: done}) } // TryLockApp exposes tryLockApp for testing. func (svc *Service) TryLockApp(appID string) bool { return svc.tryLockApp(appID) } // UnlockApp exposes unlockApp for testing. func (svc *Service) UnlockApp(appID string) { svc.unlockApp(appID) } // NewTestServiceWithConfig creates a Service with config and docker client for testing. func NewTestServiceWithConfig(log *slog.Logger, cfg *config.Config, dockerClient *docker.Client) *Service { return &Service{ log: log, config: cfg, docker: dockerClient, } } // CleanupCancelledDeploy exposes cleanupCancelledDeploy for testing. func (svc *Service) CleanupCancelledDeploy( ctx context.Context, appName string, deploymentID int64, imageID string, ) { app := models.NewApp(nil) app.Name = appName deployment := models.NewDeployment(nil) deployment.ID = deploymentID svc.cleanupCancelledDeploy(ctx, app, deployment, imageID) } // GetBuildDirExported exposes GetBuildDir for testing. func (svc *Service) GetBuildDirExported(appName string) string { return svc.GetBuildDir(appName) }