treasurer/internal/service/mock/mock.go
2024-12-16 16:47:40 +03:00

61 lines
1.5 KiB
Go

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 <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 (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
}