package mock import ( "go.uber.org/zap" "gitea.pena/PenaSide/treasurer/internal/errors" "gitea.pena/PenaSide/treasurer/pkg/validate" ) type MockStrategyService interface { Register(host string) errors.Error } type Deps struct { Logger *zap.Logger MockServiceHost string Enabled bool YoomoneyMockService MockStrategyService } type Service struct { logger *zap.Logger mockServiceHost string enabled bool yoomoneyMockService MockStrategyService } func New(deps Deps) (*Service, errors.Error) { if deps.Logger == nil { return nil, errors.NewWithMessage("logger is nil on ", errors.ErrInvalidArgs) } if deps.YoomoneyMockService == nil { return nil, errors.NewWithMessage("YoomoneyMockService is nil on ", errors.ErrInvalidArgs) } if validate.IsStringEmpty(deps.MockServiceHost) { return nil, errors.NewWithMessage("mock service host is empty on ", errors.ErrInvalidArgs) } return &Service{ logger: deps.Logger, mockServiceHost: deps.MockServiceHost, yoomoneyMockService: deps.YoomoneyMockService, enabled: deps.Enabled, }, nil } func (receiver *Service) Register() bool { if !receiver.enabled { receiver.logger.Info("register mocks is disabled") return false } if err := receiver.yoomoneyMockService.Register(receiver.mockServiceHost); err != nil { receiver.logger.Error("failed to register yoomoney mocks", zap.Error(err), zap.String("host", receiver.mockServiceHost)) return false } return true }