61 lines
1.6 KiB
Go
61 lines
1.6 KiB
Go
![]() |
package mock
|
||
|
|
||
|
import (
|
||
|
"go.uber.org/zap"
|
||
|
"penahub.gitlab.yandexcloud.net/external/treasurer/internal/errors"
|
||
|
"penahub.gitlab.yandexcloud.net/external/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
|
||
|
}
|