package mock import ( "context" "time" "go.uber.org/zap" "gitea.pena/PenaSide/treasurer/internal/errors" ) type mockService interface { Register() bool } type WorkerDeps struct { Logger *zap.Logger MockService mockService } type Worker struct { logger *zap.Logger mockService mockService } func New(deps WorkerDeps) (*Worker, errors.Error) { if deps.Logger == nil { return nil, errors.NewWithMessage("logger is nil on ", errors.ErrInvalidArgs) } if deps.MockService == nil { return nil, errors.NewWithMessage("MockService urls is nil on ", errors.ErrInvalidArgs) } return &Worker{ logger: deps.Logger, mockService: deps.MockService, }, nil } func (receiver *Worker) Run(ctx context.Context) { after := time.After(10 * time.Second) select { case <-ctx.Done(): receiver.logger.Info("register mocks operations canceled ") return case <-after: receiver.logger.Info("register yoomoney mocks ") isSuccess := receiver.mockService.Register() if isSuccess { receiver.logger.Info("register yoomoney mocks complete ") } if !isSuccess { receiver.logger.Info("register yoomoney mocks failure ") } } }