treasurer/internal/service/mock/mock.go
2025-06-12 11:59:43 +03:00

57 lines
1.4 KiB
Go

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