forked from ebhomengo/niki
refactor(niki): remove unnecessary id validation(#131)
This commit is contained in:
parent
0e92213d2e
commit
d4a768974a
|
|
@ -1,8 +1,8 @@
|
||||||
package benefactorkindboxreqparam
|
package benefactorkindboxreqparam
|
||||||
|
|
||||||
type KindBoxReqGetRequest struct {
|
type KindBoxReqGetRequest struct {
|
||||||
BenefactorID uint
|
BenefactorID uint `json:"-"`
|
||||||
KindBoxReqID uint
|
KindBoxReqID uint `param:"id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type KindBoxReqGetResponse struct {
|
type KindBoxReqGetResponse struct {
|
||||||
|
|
|
||||||
|
|
@ -104,11 +104,11 @@ func New(cfg config.Config, db *mysql.DB, rds *redis.Adapter, smsAdapter smscont
|
||||||
|
|
||||||
BenefactorVld = benefactorvalidator.New(benefactorRepo)
|
BenefactorVld = benefactorvalidator.New(benefactorRepo)
|
||||||
BenefactorSvc = benefactorservice.New(cfg.BenefactorSvc, redisOtp, smsAdapter, BenefactorAuthSvc, benefactorRepo, BenefactorVld)
|
BenefactorSvc = benefactorservice.New(cfg.BenefactorSvc, redisOtp, smsAdapter, BenefactorAuthSvc, benefactorRepo, BenefactorVld)
|
||||||
BenefactorAddressVld = benefactoraddressvalidator.New(BenefactorSvc, addressRepo)
|
BenefactorAddressVld = benefactoraddressvalidator.New(addressRepo)
|
||||||
BenefactorAddressSvc = benefactoraddressservice.New(addressRepo, BenefactorAddressVld)
|
BenefactorAddressSvc = benefactoraddressservice.New(addressRepo, BenefactorAddressVld)
|
||||||
BenefactorKindBoxReqVld = benefactorkindboxreqvalidator.New(BenefactorSvc, BenefactorAddressSvc, BenefactorReferTimeSvc, kindBoxReqRepo)
|
BenefactorKindBoxReqVld = benefactorkindboxreqvalidator.New(BenefactorAddressSvc, BenefactorReferTimeSvc, kindBoxReqRepo)
|
||||||
BenefactorKindBoxReqSvc = benefactorkindboxreqservice.New(kindBoxReqRepo, BenefactorKindBoxReqVld)
|
BenefactorKindBoxReqSvc = benefactorkindboxreqservice.New(kindBoxReqRepo, BenefactorKindBoxReqVld)
|
||||||
BenefactorKindBoxVld = benefactorkindboxvalidator.New(kindBoxRepo, BenefactorSvc, BenefactorAddressSvc, BenefactorReferTimeSvc)
|
BenefactorKindBoxVld = benefactorkindboxvalidator.New(kindBoxRepo, BenefactorAddressSvc, BenefactorReferTimeSvc)
|
||||||
BenefactorKindBoxSvc = benefactorkindboxservice.New(kindBoxRepo, BenefactorKindBoxVld)
|
BenefactorKindBoxSvc = benefactorkindboxservice.New(kindBoxRepo, BenefactorKindBoxVld)
|
||||||
)
|
)
|
||||||
NotificationSvc := notification.New(cfg.NotificationSvc, smsAdapter, AdminKindBoxReqSvc, AdminBenefactorSvc, AdminSvc, AdminKindBoxSvc)
|
NotificationSvc := notification.New(cfg.NotificationSvc, smsAdapter, AdminKindBoxReqSvc, AdminBenefactorSvc, AdminSvc, AdminKindBoxSvc)
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,6 @@ func (v Validator) ValidateAddAddress(ctx context.Context, req param.BenefactorA
|
||||||
const op = "benefactorvalidator.ValidateAddRequest"
|
const op = "benefactorvalidator.ValidateAddRequest"
|
||||||
if err := validation.ValidateStruct(&req,
|
if err := validation.ValidateStruct(&req,
|
||||||
|
|
||||||
validation.Field(&req.BenefactorID, validation.Required,
|
|
||||||
validation.By(v.doesBenefactorExist(ctx))),
|
|
||||||
|
|
||||||
validation.Field(&req.CityID, validation.Required,
|
validation.Field(&req.CityID, validation.Required,
|
||||||
validation.By(v.doesCityExist(ctx))),
|
validation.By(v.doesCityExist(ctx))),
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,15 +6,13 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
||||||
benefactorparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactor"
|
|
||||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestValidator_ValidateAddAddress(t *testing.T) {
|
func TestValidator_ValidateAddAddress(t *testing.T) {
|
||||||
mockBenefactorSvc := NewMockBenefactorSvc(t)
|
|
||||||
mockRepository := NewMockRepository(t)
|
mockRepository := NewMockRepository(t)
|
||||||
validator := New(mockBenefactorSvc, mockRepository)
|
validator := New(mockRepository)
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
t.Run("Successful validation", func(t *testing.T) {
|
t.Run("Successful validation", func(t *testing.T) {
|
||||||
|
|
@ -28,8 +26,6 @@ func TestValidator_ValidateAddAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
|
|
||||||
|
|
@ -39,73 +35,6 @@ func TestValidator_ValidateAddAddress(t *testing.T) {
|
||||||
assert.Nil(t, fieldErrors)
|
assert.Nil(t, fieldErrors)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Empty benefactor id", func(t *testing.T) {
|
|
||||||
req := addressparam.BenefactorAddAddressRequest{
|
|
||||||
Address: "tehran",
|
|
||||||
BenefactorID: 0,
|
|
||||||
Lon: 45.0,
|
|
||||||
Lat: 90.0,
|
|
||||||
Name: "Test Name",
|
|
||||||
PostalCode: "1234567890",
|
|
||||||
CityID: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
|
||||||
Return(true, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateAddAddress(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Contains(t, fieldErrors, "BenefactorID")
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Benefactor does not exist", func(t *testing.T) {
|
|
||||||
req := addressparam.BenefactorAddAddressRequest{
|
|
||||||
Address: "tehran",
|
|
||||||
BenefactorID: 1,
|
|
||||||
Lon: 45.0,
|
|
||||||
Lat: 90.0,
|
|
||||||
Name: "Test Name",
|
|
||||||
PostalCode: "1234567890",
|
|
||||||
CityID: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
|
||||||
Return(true, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateAddAddress(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Equal(t, errmsg.ErrorMsgBenefactorNotFound, fieldErrors["BenefactorID"])
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Benefactor exist error", func(t *testing.T) {
|
|
||||||
req := addressparam.BenefactorAddAddressRequest{
|
|
||||||
Address: "tehran",
|
|
||||||
BenefactorID: 1,
|
|
||||||
Lon: 45.0,
|
|
||||||
Lat: 90.0,
|
|
||||||
Name: "Test Name",
|
|
||||||
PostalCode: "1234567890",
|
|
||||||
CityID: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, errors.New("service error")).Once()
|
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
|
||||||
Return(true, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateAddAddress(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Equal(t, errmsg.ErrorMsgSomethingWentWrong, fieldErrors["BenefactorID"])
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Empty city id", func(t *testing.T) {
|
t.Run("Empty city id", func(t *testing.T) {
|
||||||
req := addressparam.BenefactorAddAddressRequest{
|
req := addressparam.BenefactorAddAddressRequest{
|
||||||
Address: "tehran",
|
Address: "tehran",
|
||||||
|
|
@ -117,9 +46,6 @@ func TestValidator_ValidateAddAddress(t *testing.T) {
|
||||||
CityID: 0,
|
CityID: 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateAddAddress(ctx, req)
|
fieldErrors, err := validator.ValidateAddAddress(ctx, req)
|
||||||
|
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
|
|
@ -138,8 +64,6 @@ func TestValidator_ValidateAddAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
Return(false, nil).Once()
|
Return(false, nil).Once()
|
||||||
fieldErrors, err := validator.ValidateAddAddress(ctx, req)
|
fieldErrors, err := validator.ValidateAddAddress(ctx, req)
|
||||||
|
|
@ -160,8 +84,6 @@ func TestValidator_ValidateAddAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
Return(false, errors.New("repository error")).Once()
|
Return(false, errors.New("repository error")).Once()
|
||||||
fieldErrors, err := validator.ValidateAddAddress(ctx, req)
|
fieldErrors, err := validator.ValidateAddAddress(ctx, req)
|
||||||
|
|
@ -182,8 +104,6 @@ func TestValidator_ValidateAddAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
|
|
||||||
|
|
@ -205,8 +125,6 @@ func TestValidator_ValidateAddAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
|
|
||||||
|
|
@ -228,8 +146,6 @@ func TestValidator_ValidateAddAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
|
|
||||||
|
|
@ -250,9 +166,6 @@ func TestValidator_ValidateAddAddress(t *testing.T) {
|
||||||
PostalCode: "1234567890",
|
PostalCode: "1234567890",
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
|
|
||||||
|
|
@ -274,8 +187,6 @@ func TestValidator_ValidateAddAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,6 @@ func (v Validator) ValidateDeleteRequest(ctx context.Context, req param.DeleteAd
|
||||||
const op = "benefactoraddressvalidator.ValidateDeleteRequest"
|
const op = "benefactoraddressvalidator.ValidateDeleteRequest"
|
||||||
|
|
||||||
if err := validation.ValidateStruct(&req,
|
if err := validation.ValidateStruct(&req,
|
||||||
validation.Field(&req.BenefactorID,
|
|
||||||
validation.Required,
|
|
||||||
validation.By(v.doesBenefactorExist(ctx))),
|
|
||||||
validation.Field(&req.AddressID,
|
validation.Field(&req.AddressID,
|
||||||
validation.Required,
|
validation.Required,
|
||||||
validation.By(v.doesAddressExist(ctx, req.BenefactorID))),
|
validation.By(v.doesAddressExist(ctx, req.BenefactorID))),
|
||||||
|
|
|
||||||
|
|
@ -6,15 +6,13 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
||||||
benefactorparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactor"
|
|
||||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestValidator_ValidateDeleteRequest(t *testing.T) {
|
func TestValidator_ValidateDeleteRequest(t *testing.T) {
|
||||||
mockBenefactorSvc := NewMockBenefactorSvc(t)
|
|
||||||
mockRepository := NewMockRepository(t)
|
mockRepository := NewMockRepository(t)
|
||||||
validator := New(mockBenefactorSvc, mockRepository)
|
validator := New(mockRepository)
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
t.Run("Successful validation", func(t *testing.T) {
|
t.Run("Successful validation", func(t *testing.T) {
|
||||||
|
|
@ -23,8 +21,6 @@ func TestValidator_ValidateDeleteRequest(t *testing.T) {
|
||||||
BenefactorID: 1,
|
BenefactorID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
|
|
||||||
|
|
@ -34,67 +30,12 @@ func TestValidator_ValidateDeleteRequest(t *testing.T) {
|
||||||
assert.Nil(t, fieldErrors)
|
assert.Nil(t, fieldErrors)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Empty benefactor id", func(t *testing.T) {
|
|
||||||
req := addressparam.DeleteAddressRequest{
|
|
||||||
AddressID: 1,
|
|
||||||
BenefactorID: 0,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(0)).
|
|
||||||
Return(true, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateDeleteRequest(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Contains(t, fieldErrors, "BenefactorID")
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Benefactor does not exist", func(t *testing.T) {
|
|
||||||
req := addressparam.DeleteAddressRequest{
|
|
||||||
AddressID: 1,
|
|
||||||
BenefactorID: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
|
||||||
Return(true, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateDeleteRequest(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Equal(t, errmsg.ErrorMsgBenefactorNotFound, fieldErrors["BenefactorID"])
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Benefactor exist error", func(t *testing.T) {
|
|
||||||
req := addressparam.DeleteAddressRequest{
|
|
||||||
AddressID: 1,
|
|
||||||
BenefactorID: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, errors.New("service error")).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
|
||||||
Return(true, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateDeleteRequest(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Equal(t, errmsg.ErrorMsgSomethingWentWrong, fieldErrors["BenefactorID"])
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Empty address id", func(t *testing.T) {
|
t.Run("Empty address id", func(t *testing.T) {
|
||||||
req := addressparam.DeleteAddressRequest{
|
req := addressparam.DeleteAddressRequest{
|
||||||
AddressID: 0,
|
AddressID: 0,
|
||||||
BenefactorID: 1,
|
BenefactorID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateDeleteRequest(ctx, req)
|
fieldErrors, err := validator.ValidateDeleteRequest(ctx, req)
|
||||||
|
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
|
|
@ -108,8 +49,6 @@ func TestValidator_ValidateDeleteRequest(t *testing.T) {
|
||||||
BenefactorID: 1,
|
BenefactorID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
||||||
Return(false, nil).Once()
|
Return(false, nil).Once()
|
||||||
|
|
||||||
|
|
@ -126,8 +65,6 @@ func TestValidator_ValidateDeleteRequest(t *testing.T) {
|
||||||
BenefactorID: 1,
|
BenefactorID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
||||||
Return(false, errors.New("repository error")).Once()
|
Return(false, errors.New("repository error")).Once()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,6 @@ func (v Validator) ValidateGetAddress(ctx context.Context, req param.GetAddressR
|
||||||
const op = "benefactorvalidator.ValidateGetRequest"
|
const op = "benefactorvalidator.ValidateGetRequest"
|
||||||
if err := validation.ValidateStruct(&req,
|
if err := validation.ValidateStruct(&req,
|
||||||
|
|
||||||
validation.Field(&req.BenefactorID, validation.Required,
|
|
||||||
validation.By(v.doesBenefactorExist(ctx))),
|
|
||||||
|
|
||||||
validation.Field(&req.AddressID, validation.Required,
|
validation.Field(&req.AddressID, validation.Required,
|
||||||
validation.Min(uint(1))),
|
validation.Min(uint(1))),
|
||||||
); err != nil {
|
); err != nil {
|
||||||
|
|
|
||||||
|
|
@ -2,19 +2,15 @@ package benefactoraddressvalidator
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
||||||
benefactorparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactor"
|
|
||||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestValidator_ValidateGetAddress(t *testing.T) {
|
func TestValidator_ValidateGetAddress(t *testing.T) {
|
||||||
mockBenefactorSvc := NewMockBenefactorSvc(t)
|
|
||||||
mockRepository := NewMockRepository(t)
|
mockRepository := NewMockRepository(t)
|
||||||
validator := New(mockBenefactorSvc, mockRepository)
|
validator := New(mockRepository)
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
t.Run("Successful validation", func(t *testing.T) {
|
t.Run("Successful validation", func(t *testing.T) {
|
||||||
|
|
@ -23,69 +19,18 @@ func TestValidator_ValidateGetAddress(t *testing.T) {
|
||||||
BenefactorID: 1,
|
BenefactorID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateGetAddress(ctx, req)
|
fieldErrors, err := validator.ValidateGetAddress(ctx, req)
|
||||||
|
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Nil(t, fieldErrors)
|
assert.Nil(t, fieldErrors)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Empty benefactor id", func(t *testing.T) {
|
|
||||||
req := addressparam.GetAddressRequest{
|
|
||||||
AddressID: 1,
|
|
||||||
BenefactorID: 0,
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateGetAddress(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Contains(t, fieldErrors, "BenefactorID")
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Benefactor does not exist", func(t *testing.T) {
|
|
||||||
req := addressparam.GetAddressRequest{
|
|
||||||
AddressID: 1,
|
|
||||||
BenefactorID: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateGetAddress(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Equal(t, errmsg.ErrorMsgBenefactorNotFound, fieldErrors["BenefactorID"])
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Benefactor exist error", func(t *testing.T) {
|
|
||||||
req := addressparam.GetAddressRequest{
|
|
||||||
AddressID: 1,
|
|
||||||
BenefactorID: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, errors.New("service error")).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateGetAddress(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Equal(t, errmsg.ErrorMsgSomethingWentWrong, fieldErrors["BenefactorID"])
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Empty address id", func(t *testing.T) {
|
t.Run("Empty address id", func(t *testing.T) {
|
||||||
req := addressparam.GetAddressRequest{
|
req := addressparam.GetAddressRequest{
|
||||||
AddressID: 0,
|
AddressID: 0,
|
||||||
BenefactorID: 1,
|
BenefactorID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateGetAddress(ctx, req)
|
fieldErrors, err := validator.ValidateGetAddress(ctx, req)
|
||||||
|
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
|
|
|
||||||
|
|
@ -1,95 +0,0 @@
|
||||||
// Code generated by mockery v2.45.1. DO NOT EDIT.
|
|
||||||
|
|
||||||
package benefactoraddressvalidator
|
|
||||||
|
|
||||||
import (
|
|
||||||
context "context"
|
|
||||||
|
|
||||||
benefactoreparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactor"
|
|
||||||
|
|
||||||
mock "github.com/stretchr/testify/mock"
|
|
||||||
)
|
|
||||||
|
|
||||||
// MockBenefactorSvc is an autogenerated mock type for the BenefactorSvc type
|
|
||||||
type MockBenefactorSvc struct {
|
|
||||||
mock.Mock
|
|
||||||
}
|
|
||||||
|
|
||||||
type MockBenefactorSvc_Expecter struct {
|
|
||||||
mock *mock.Mock
|
|
||||||
}
|
|
||||||
|
|
||||||
func (_m *MockBenefactorSvc) EXPECT() *MockBenefactorSvc_Expecter {
|
|
||||||
return &MockBenefactorSvc_Expecter{mock: &_m.Mock}
|
|
||||||
}
|
|
||||||
|
|
||||||
// BenefactorExistByID provides a mock function with given fields: ctx, request
|
|
||||||
func (_m *MockBenefactorSvc) BenefactorExistByID(ctx context.Context, request benefactoreparam.BenefactorExistByIDRequest) (benefactoreparam.BenefactorExistByIDResponse, error) {
|
|
||||||
ret := _m.Called(ctx, request)
|
|
||||||
|
|
||||||
if len(ret) == 0 {
|
|
||||||
panic("no return value specified for BenefactorExistByID")
|
|
||||||
}
|
|
||||||
|
|
||||||
var r0 benefactoreparam.BenefactorExistByIDResponse
|
|
||||||
var r1 error
|
|
||||||
if rf, ok := ret.Get(0).(func(context.Context, benefactoreparam.BenefactorExistByIDRequest) (benefactoreparam.BenefactorExistByIDResponse, error)); ok {
|
|
||||||
return rf(ctx, request)
|
|
||||||
}
|
|
||||||
if rf, ok := ret.Get(0).(func(context.Context, benefactoreparam.BenefactorExistByIDRequest) benefactoreparam.BenefactorExistByIDResponse); ok {
|
|
||||||
r0 = rf(ctx, request)
|
|
||||||
} else {
|
|
||||||
r0 = ret.Get(0).(benefactoreparam.BenefactorExistByIDResponse)
|
|
||||||
}
|
|
||||||
|
|
||||||
if rf, ok := ret.Get(1).(func(context.Context, benefactoreparam.BenefactorExistByIDRequest) error); ok {
|
|
||||||
r1 = rf(ctx, request)
|
|
||||||
} else {
|
|
||||||
r1 = ret.Error(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
return r0, r1
|
|
||||||
}
|
|
||||||
|
|
||||||
// MockBenefactorSvc_BenefactorExistByID_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BenefactorExistByID'
|
|
||||||
type MockBenefactorSvc_BenefactorExistByID_Call struct {
|
|
||||||
*mock.Call
|
|
||||||
}
|
|
||||||
|
|
||||||
// BenefactorExistByID is a helper method to define mock.On call
|
|
||||||
// - ctx context.Context
|
|
||||||
// - request benefactoreparam.BenefactorExistByIDRequest
|
|
||||||
func (_e *MockBenefactorSvc_Expecter) BenefactorExistByID(ctx interface{}, request interface{}) *MockBenefactorSvc_BenefactorExistByID_Call {
|
|
||||||
return &MockBenefactorSvc_BenefactorExistByID_Call{Call: _e.mock.On("BenefactorExistByID", ctx, request)}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (_c *MockBenefactorSvc_BenefactorExistByID_Call) Run(run func(ctx context.Context, request benefactoreparam.BenefactorExistByIDRequest)) *MockBenefactorSvc_BenefactorExistByID_Call {
|
|
||||||
_c.Call.Run(func(args mock.Arguments) {
|
|
||||||
run(args[0].(context.Context), args[1].(benefactoreparam.BenefactorExistByIDRequest))
|
|
||||||
})
|
|
||||||
return _c
|
|
||||||
}
|
|
||||||
|
|
||||||
func (_c *MockBenefactorSvc_BenefactorExistByID_Call) Return(_a0 benefactoreparam.BenefactorExistByIDResponse, _a1 error) *MockBenefactorSvc_BenefactorExistByID_Call {
|
|
||||||
_c.Call.Return(_a0, _a1)
|
|
||||||
return _c
|
|
||||||
}
|
|
||||||
|
|
||||||
func (_c *MockBenefactorSvc_BenefactorExistByID_Call) RunAndReturn(run func(context.Context, benefactoreparam.BenefactorExistByIDRequest) (benefactoreparam.BenefactorExistByIDResponse, error)) *MockBenefactorSvc_BenefactorExistByID_Call {
|
|
||||||
_c.Call.Return(run)
|
|
||||||
return _c
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewMockBenefactorSvc creates a new instance of MockBenefactorSvc. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
|
|
||||||
// The first argument is typically a *testing.T value.
|
|
||||||
func NewMockBenefactorSvc(t interface {
|
|
||||||
mock.TestingT
|
|
||||||
Cleanup(func())
|
|
||||||
}) *MockBenefactorSvc {
|
|
||||||
mock := &MockBenefactorSvc{}
|
|
||||||
mock.Mock.Test(t)
|
|
||||||
|
|
||||||
t.Cleanup(func() { mock.AssertExpectations(t) })
|
|
||||||
|
|
||||||
return mock
|
|
||||||
}
|
|
||||||
|
|
@ -14,9 +14,6 @@ func (v Validator) ValidateUpdateAddress(ctx context.Context, req param.UpdateAd
|
||||||
const op = "benefactoraddressvalidator.ValidateUpdateAddress"
|
const op = "benefactoraddressvalidator.ValidateUpdateAddress"
|
||||||
|
|
||||||
if err := validation.ValidateStruct(&req,
|
if err := validation.ValidateStruct(&req,
|
||||||
validation.Field(&req.BenefactorID, validation.Required,
|
|
||||||
validation.By(v.doesBenefactorExist(ctx))),
|
|
||||||
|
|
||||||
validation.Field(&req.ID, validation.Required,
|
validation.Field(&req.ID, validation.Required,
|
||||||
validation.By(v.doesAddressExist(ctx, req.BenefactorID))),
|
validation.By(v.doesAddressExist(ctx, req.BenefactorID))),
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,15 +6,13 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
||||||
benefactorparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactor"
|
|
||||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestValidator_ValidateUpdateAddress(t *testing.T) {
|
func TestValidator_ValidateUpdateAddress(t *testing.T) {
|
||||||
mockBenefactorSvc := NewMockBenefactorSvc(t)
|
|
||||||
mockRepository := NewMockRepository(t)
|
mockRepository := NewMockRepository(t)
|
||||||
validator := New(mockBenefactorSvc, mockRepository)
|
validator := New(mockRepository)
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
t.Run("Successful validation", func(t *testing.T) {
|
t.Run("Successful validation", func(t *testing.T) {
|
||||||
|
|
@ -29,8 +27,6 @@ func TestValidator_ValidateUpdateAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
|
|
@ -54,8 +50,6 @@ func TestValidator_ValidateUpdateAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
|
|
||||||
|
|
@ -78,8 +72,6 @@ func TestValidator_ValidateUpdateAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
||||||
Return(false, nil).Once()
|
Return(false, nil).Once()
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
|
|
@ -104,8 +96,6 @@ func TestValidator_ValidateUpdateAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
||||||
Return(false, errors.New("repository error")).Once()
|
Return(false, errors.New("repository error")).Once()
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
|
|
@ -118,82 +108,6 @@ func TestValidator_ValidateUpdateAddress(t *testing.T) {
|
||||||
assert.Equal(t, errmsg.ErrorMsgSomethingWentWrong, fieldErrors["ID"])
|
assert.Equal(t, errmsg.ErrorMsgSomethingWentWrong, fieldErrors["ID"])
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Empty benefactor id", func(t *testing.T) {
|
|
||||||
req := addressparam.UpdateAddressRequest{
|
|
||||||
ID: uint(1),
|
|
||||||
Address: "tehran",
|
|
||||||
BenefactorID: 0,
|
|
||||||
Lon: 45.0,
|
|
||||||
Lat: 90.0,
|
|
||||||
Name: "Test Name",
|
|
||||||
PostalCode: "1234567890",
|
|
||||||
CityID: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(0)).
|
|
||||||
Return(true, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
|
||||||
Return(true, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateUpdateAddress(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Contains(t, fieldErrors, "BenefactorID")
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Benefactor does not exist", func(t *testing.T) {
|
|
||||||
req := addressparam.UpdateAddressRequest{
|
|
||||||
ID: uint(1),
|
|
||||||
Address: "tehran",
|
|
||||||
BenefactorID: 1,
|
|
||||||
Lon: 45.0,
|
|
||||||
Lat: 90.0,
|
|
||||||
Name: "Test Name",
|
|
||||||
PostalCode: "1234567890",
|
|
||||||
CityID: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
|
||||||
Return(true, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
|
||||||
Return(true, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateUpdateAddress(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Equal(t, errmsg.ErrorMsgBenefactorNotFound, fieldErrors["BenefactorID"])
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Benefactor exist error", func(t *testing.T) {
|
|
||||||
req := addressparam.UpdateAddressRequest{
|
|
||||||
ID: uint(1),
|
|
||||||
Address: "tehran",
|
|
||||||
BenefactorID: 1,
|
|
||||||
Lon: 45.0,
|
|
||||||
Lat: 90.0,
|
|
||||||
Name: "Test Name",
|
|
||||||
PostalCode: "1234567890",
|
|
||||||
CityID: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, errors.New("service error")).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
|
||||||
Return(true, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
|
||||||
Return(true, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateUpdateAddress(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Equal(t, errmsg.ErrorMsgSomethingWentWrong, fieldErrors["BenefactorID"])
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Empty city id", func(t *testing.T) {
|
t.Run("Empty city id", func(t *testing.T) {
|
||||||
req := addressparam.UpdateAddressRequest{
|
req := addressparam.UpdateAddressRequest{
|
||||||
ID: uint(1),
|
ID: uint(1),
|
||||||
|
|
@ -206,8 +120,6 @@ func TestValidator_ValidateUpdateAddress(t *testing.T) {
|
||||||
CityID: 0,
|
CityID: 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
|
|
||||||
|
|
@ -230,8 +142,6 @@ func TestValidator_ValidateUpdateAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
|
|
@ -256,8 +166,6 @@ func TestValidator_ValidateUpdateAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
|
|
@ -282,8 +190,6 @@ func TestValidator_ValidateUpdateAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
|
|
@ -308,8 +214,6 @@ func TestValidator_ValidateUpdateAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
|
|
@ -334,8 +238,6 @@ func TestValidator_ValidateUpdateAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
|
|
@ -360,8 +262,6 @@ func TestValidator_ValidateUpdateAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
|
|
@ -386,8 +286,6 @@ func TestValidator_ValidateUpdateAddress(t *testing.T) {
|
||||||
CityID: 1,
|
CityID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
mockRepository.EXPECT().IsExistAddressByID(ctx, uint(1), uint(1)).
|
||||||
Return(true, nil).Once()
|
Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
mockRepository.EXPECT().IsExistCityByID(ctx, uint(1)).
|
||||||
|
|
|
||||||
|
|
@ -4,47 +4,21 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactor"
|
|
||||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||||
validation "github.com/go-ozzo/ozzo-validation/v4"
|
validation "github.com/go-ozzo/ozzo-validation/v4"
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:generate mockery --name BenefactorSvc
|
|
||||||
type BenefactorSvc interface {
|
|
||||||
BenefactorExistByID(ctx context.Context, request param.BenefactorExistByIDRequest) (param.BenefactorExistByIDResponse, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
//go:generate mockery --name Repository
|
//go:generate mockery --name Repository
|
||||||
type Repository interface {
|
type Repository interface {
|
||||||
IsExistCityByID(ctx context.Context, id uint) (bool, error)
|
IsExistCityByID(ctx context.Context, id uint) (bool, error)
|
||||||
IsExistAddressByID(ctx context.Context, addressID uint, benefactorID uint) (bool, error)
|
IsExistAddressByID(ctx context.Context, addressID uint, benefactorID uint) (bool, error)
|
||||||
}
|
}
|
||||||
type Validator struct {
|
type Validator struct {
|
||||||
benefactorSvc BenefactorSvc
|
repository Repository
|
||||||
repository Repository
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(benefactorSvc BenefactorSvc, repository Repository) Validator {
|
func New(repository Repository) Validator {
|
||||||
return Validator{benefactorSvc: benefactorSvc, repository: repository}
|
return Validator{repository: repository}
|
||||||
}
|
|
||||||
|
|
||||||
func (v Validator) doesBenefactorExist(ctx context.Context) validation.RuleFunc {
|
|
||||||
return func(value interface{}) error {
|
|
||||||
benefactorID, ok := value.(uint)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
|
|
||||||
}
|
|
||||||
res, err := v.benefactorSvc.BenefactorExistByID(ctx, param.BenefactorExistByIDRequest{ID: benefactorID})
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !res.Existed {
|
|
||||||
return fmt.Errorf(errmsg.ErrorMsgBenefactorNotFound)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v Validator) doesCityExist(ctx context.Context) validation.RuleFunc {
|
func (v Validator) doesCityExist(ctx context.Context) validation.RuleFunc {
|
||||||
|
|
|
||||||
|
|
@ -14,10 +14,6 @@ func (v Validator) ValidateGetRequest(ctx context.Context, req param.KindBoxGetR
|
||||||
const op = "userkindboxvalidator.ValidateGetRequest"
|
const op = "userkindboxvalidator.ValidateGetRequest"
|
||||||
|
|
||||||
if err := validation.ValidateStruct(&req,
|
if err := validation.ValidateStruct(&req,
|
||||||
validation.Field(&req.BenefactorID,
|
|
||||||
validation.Required,
|
|
||||||
validation.By(v.doesBenefactorExist(ctx))),
|
|
||||||
|
|
||||||
validation.Field(&req.KindBoxID, validation.Required,
|
validation.Field(&req.KindBoxID, validation.Required,
|
||||||
validation.By(v.doesBenefactorKindBoxExist(ctx, req.BenefactorID))),
|
validation.By(v.doesBenefactorKindBoxExist(ctx, req.BenefactorID))),
|
||||||
); err != nil {
|
); err != nil {
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,9 @@ import (
|
||||||
|
|
||||||
func TestValidator_ValidateGetAll(t *testing.T) {
|
func TestValidator_ValidateGetAll(t *testing.T) {
|
||||||
mockRepository := NewMockRepository(t)
|
mockRepository := NewMockRepository(t)
|
||||||
mockBenefactorSvc := NewMockBenefactorSvc(t)
|
|
||||||
mockAddressSvc := NewMockAddressSvc(t)
|
mockAddressSvc := NewMockAddressSvc(t)
|
||||||
mockReferTimeSvc := NewMockReferTimeSvc(t)
|
mockReferTimeSvc := NewMockReferTimeSvc(t)
|
||||||
validator := New(mockRepository, mockBenefactorSvc, mockAddressSvc, mockReferTimeSvc)
|
validator := New(mockRepository, mockAddressSvc, mockReferTimeSvc)
|
||||||
|
|
||||||
t.Run("Successful validation", func(t *testing.T) {
|
t.Run("Successful validation", func(t *testing.T) {
|
||||||
req := param.KindBoxGetAllRequest{
|
req := param.KindBoxGetAllRequest{
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
benefactorparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactor"
|
|
||||||
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/kind_box"
|
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/kind_box"
|
||||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
@ -13,10 +12,9 @@ import (
|
||||||
|
|
||||||
func TestValidator_ValidateGetRequest(t *testing.T) {
|
func TestValidator_ValidateGetRequest(t *testing.T) {
|
||||||
mockRepository := NewMockRepository(t)
|
mockRepository := NewMockRepository(t)
|
||||||
mockBenefactorSvc := NewMockBenefactorSvc(t)
|
|
||||||
mockAddressSvc := NewMockAddressSvc(t)
|
mockAddressSvc := NewMockAddressSvc(t)
|
||||||
mockReferTimeSvc := NewMockReferTimeSvc(t)
|
mockReferTimeSvc := NewMockReferTimeSvc(t)
|
||||||
validator := New(mockRepository, mockBenefactorSvc, mockAddressSvc, mockReferTimeSvc)
|
validator := New(mockRepository, mockAddressSvc, mockReferTimeSvc)
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
t.Run("Successful validation", func(t *testing.T) {
|
t.Run("Successful validation", func(t *testing.T) {
|
||||||
|
|
@ -25,8 +23,6 @@ func TestValidator_ValidateGetRequest(t *testing.T) {
|
||||||
KindBoxID: 1,
|
KindBoxID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateGetRequest(ctx, req)
|
fieldErrors, err := validator.ValidateGetRequest(ctx, req)
|
||||||
|
|
@ -35,64 +31,12 @@ func TestValidator_ValidateGetRequest(t *testing.T) {
|
||||||
assert.Nil(t, fieldErrors)
|
assert.Nil(t, fieldErrors)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Empty benefactor id", func(t *testing.T) {
|
|
||||||
req := param.KindBoxGetRequest{
|
|
||||||
BenefactorID: 0,
|
|
||||||
KindBoxID: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(0), uint(1)).Return(true, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateGetRequest(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Contains(t, fieldErrors, "BenefactorID")
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Benefactor does not exist", func(t *testing.T) {
|
|
||||||
req := param.KindBoxGetRequest{
|
|
||||||
BenefactorID: 1,
|
|
||||||
KindBoxID: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateGetRequest(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Equal(t, errmsg.ErrorMsgBenefactorNotFound, fieldErrors["BenefactorID"])
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Benefactor exist error", func(t *testing.T) {
|
|
||||||
req := param.KindBoxGetRequest{
|
|
||||||
BenefactorID: 1,
|
|
||||||
KindBoxID: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, errors.New("service error")).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateGetRequest(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Equal(t, errmsg.ErrorMsgSomethingWentWrong, fieldErrors["BenefactorID"])
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Empty KindBox id", func(t *testing.T) {
|
t.Run("Empty KindBox id", func(t *testing.T) {
|
||||||
req := param.KindBoxGetRequest{
|
req := param.KindBoxGetRequest{
|
||||||
BenefactorID: 1,
|
BenefactorID: 1,
|
||||||
KindBoxID: 0,
|
KindBoxID: 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateGetRequest(ctx, req)
|
fieldErrors, err := validator.ValidateGetRequest(ctx, req)
|
||||||
|
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
|
|
@ -106,8 +50,6 @@ func TestValidator_ValidateGetRequest(t *testing.T) {
|
||||||
KindBoxID: 1,
|
KindBoxID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(false, nil).Once()
|
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(false, nil).Once()
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateGetRequest(ctx, req)
|
fieldErrors, err := validator.ValidateGetRequest(ctx, req)
|
||||||
|
|
@ -123,8 +65,6 @@ func TestValidator_ValidateGetRequest(t *testing.T) {
|
||||||
KindBoxID: 1,
|
KindBoxID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(false, errors.New("repo error")).Once()
|
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(false, errors.New("repo error")).Once()
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateGetRequest(ctx, req)
|
fieldErrors, err := validator.ValidateGetRequest(ctx, req)
|
||||||
|
|
|
||||||
|
|
@ -1,95 +0,0 @@
|
||||||
// Code generated by mockery v2.45.1. DO NOT EDIT.
|
|
||||||
|
|
||||||
package benefactorkindboxvalidator
|
|
||||||
|
|
||||||
import (
|
|
||||||
context "context"
|
|
||||||
|
|
||||||
benefactoreparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactor"
|
|
||||||
|
|
||||||
mock "github.com/stretchr/testify/mock"
|
|
||||||
)
|
|
||||||
|
|
||||||
// MockBenefactorSvc is an autogenerated mock type for the BenefactorSvc type
|
|
||||||
type MockBenefactorSvc struct {
|
|
||||||
mock.Mock
|
|
||||||
}
|
|
||||||
|
|
||||||
type MockBenefactorSvc_Expecter struct {
|
|
||||||
mock *mock.Mock
|
|
||||||
}
|
|
||||||
|
|
||||||
func (_m *MockBenefactorSvc) EXPECT() *MockBenefactorSvc_Expecter {
|
|
||||||
return &MockBenefactorSvc_Expecter{mock: &_m.Mock}
|
|
||||||
}
|
|
||||||
|
|
||||||
// BenefactorExistByID provides a mock function with given fields: ctx, request
|
|
||||||
func (_m *MockBenefactorSvc) BenefactorExistByID(ctx context.Context, request benefactoreparam.BenefactorExistByIDRequest) (benefactoreparam.BenefactorExistByIDResponse, error) {
|
|
||||||
ret := _m.Called(ctx, request)
|
|
||||||
|
|
||||||
if len(ret) == 0 {
|
|
||||||
panic("no return value specified for BenefactorExistByID")
|
|
||||||
}
|
|
||||||
|
|
||||||
var r0 benefactoreparam.BenefactorExistByIDResponse
|
|
||||||
var r1 error
|
|
||||||
if rf, ok := ret.Get(0).(func(context.Context, benefactoreparam.BenefactorExistByIDRequest) (benefactoreparam.BenefactorExistByIDResponse, error)); ok {
|
|
||||||
return rf(ctx, request)
|
|
||||||
}
|
|
||||||
if rf, ok := ret.Get(0).(func(context.Context, benefactoreparam.BenefactorExistByIDRequest) benefactoreparam.BenefactorExistByIDResponse); ok {
|
|
||||||
r0 = rf(ctx, request)
|
|
||||||
} else {
|
|
||||||
r0 = ret.Get(0).(benefactoreparam.BenefactorExistByIDResponse)
|
|
||||||
}
|
|
||||||
|
|
||||||
if rf, ok := ret.Get(1).(func(context.Context, benefactoreparam.BenefactorExistByIDRequest) error); ok {
|
|
||||||
r1 = rf(ctx, request)
|
|
||||||
} else {
|
|
||||||
r1 = ret.Error(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
return r0, r1
|
|
||||||
}
|
|
||||||
|
|
||||||
// MockBenefactorSvc_BenefactorExistByID_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BenefactorExistByID'
|
|
||||||
type MockBenefactorSvc_BenefactorExistByID_Call struct {
|
|
||||||
*mock.Call
|
|
||||||
}
|
|
||||||
|
|
||||||
// BenefactorExistByID is a helper method to define mock.On call
|
|
||||||
// - ctx context.Context
|
|
||||||
// - request benefactoreparam.BenefactorExistByIDRequest
|
|
||||||
func (_e *MockBenefactorSvc_Expecter) BenefactorExistByID(ctx interface{}, request interface{}) *MockBenefactorSvc_BenefactorExistByID_Call {
|
|
||||||
return &MockBenefactorSvc_BenefactorExistByID_Call{Call: _e.mock.On("BenefactorExistByID", ctx, request)}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (_c *MockBenefactorSvc_BenefactorExistByID_Call) Run(run func(ctx context.Context, request benefactoreparam.BenefactorExistByIDRequest)) *MockBenefactorSvc_BenefactorExistByID_Call {
|
|
||||||
_c.Call.Run(func(args mock.Arguments) {
|
|
||||||
run(args[0].(context.Context), args[1].(benefactoreparam.BenefactorExistByIDRequest))
|
|
||||||
})
|
|
||||||
return _c
|
|
||||||
}
|
|
||||||
|
|
||||||
func (_c *MockBenefactorSvc_BenefactorExistByID_Call) Return(_a0 benefactoreparam.BenefactorExistByIDResponse, _a1 error) *MockBenefactorSvc_BenefactorExistByID_Call {
|
|
||||||
_c.Call.Return(_a0, _a1)
|
|
||||||
return _c
|
|
||||||
}
|
|
||||||
|
|
||||||
func (_c *MockBenefactorSvc_BenefactorExistByID_Call) RunAndReturn(run func(context.Context, benefactoreparam.BenefactorExistByIDRequest) (benefactoreparam.BenefactorExistByIDResponse, error)) *MockBenefactorSvc_BenefactorExistByID_Call {
|
|
||||||
_c.Call.Return(run)
|
|
||||||
return _c
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewMockBenefactorSvc creates a new instance of MockBenefactorSvc. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
|
|
||||||
// The first argument is typically a *testing.T value.
|
|
||||||
func NewMockBenefactorSvc(t interface {
|
|
||||||
mock.TestingT
|
|
||||||
Cleanup(func())
|
|
||||||
}) *MockBenefactorSvc {
|
|
||||||
mock := &MockBenefactorSvc{}
|
|
||||||
mock.Mock.Test(t)
|
|
||||||
|
|
||||||
t.Cleanup(func() { mock.AssertExpectations(t) })
|
|
||||||
|
|
||||||
return mock
|
|
||||||
}
|
|
||||||
|
|
@ -14,9 +14,6 @@ func (v Validator) ValidateRegisterEmptyingRequest(ctx context.Context, req para
|
||||||
const op = "benefactorkindboxvalidator.ValidateRegisterEmptyingRequest"
|
const op = "benefactorkindboxvalidator.ValidateRegisterEmptyingRequest"
|
||||||
|
|
||||||
if err := validation.ValidateStruct(&req,
|
if err := validation.ValidateStruct(&req,
|
||||||
validation.Field(&req.BenefactorID, validation.Required,
|
|
||||||
validation.By(v.doesBenefactorExist(ctx))),
|
|
||||||
|
|
||||||
validation.Field(&req.KindBoxID, validation.Required,
|
validation.Field(&req.KindBoxID, validation.Required,
|
||||||
validation.By(v.doesBenefactorKindBoxExist(ctx, req.BenefactorID)),
|
validation.By(v.doesBenefactorKindBoxExist(ctx, req.BenefactorID)),
|
||||||
validation.By(v.doesKindBoxHaveDeliveredStatus(ctx))),
|
validation.By(v.doesKindBoxHaveDeliveredStatus(ctx))),
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import (
|
||||||
|
|
||||||
"git.gocasts.ir/ebhomengo/niki/entity"
|
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||||
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
||||||
benefactorparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactor"
|
|
||||||
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/kind_box"
|
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/kind_box"
|
||||||
refertimeparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/refer_time"
|
refertimeparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/refer_time"
|
||||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||||
|
|
@ -17,10 +16,9 @@ import (
|
||||||
|
|
||||||
func TestValidator_ValidateRegisterEmptyingRequest(t *testing.T) {
|
func TestValidator_ValidateRegisterEmptyingRequest(t *testing.T) {
|
||||||
mockRepository := NewMockRepository(t)
|
mockRepository := NewMockRepository(t)
|
||||||
mockBenefactorSvc := NewMockBenefactorSvc(t)
|
|
||||||
mockAddressSvc := NewMockAddressSvc(t)
|
mockAddressSvc := NewMockAddressSvc(t)
|
||||||
mockReferTimeSvc := NewMockReferTimeSvc(t)
|
mockReferTimeSvc := NewMockReferTimeSvc(t)
|
||||||
validator := New(mockRepository, mockBenefactorSvc, mockAddressSvc, mockReferTimeSvc)
|
validator := New(mockRepository, mockAddressSvc, mockReferTimeSvc)
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
t.Run("Successful validation", func(t *testing.T) {
|
t.Run("Successful validation", func(t *testing.T) {
|
||||||
|
|
@ -32,8 +30,6 @@ func TestValidator_ValidateRegisterEmptyingRequest(t *testing.T) {
|
||||||
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
|
|
@ -60,8 +56,6 @@ func TestValidator_ValidateRegisterEmptyingRequest(t *testing.T) {
|
||||||
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
||||||
nil,
|
nil,
|
||||||
|
|
@ -87,8 +81,6 @@ func TestValidator_ValidateRegisterEmptyingRequest(t *testing.T) {
|
||||||
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(2)).Return(false, nil).Once()
|
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(2)).Return(false, nil).Once()
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
||||||
|
|
@ -115,8 +107,6 @@ func TestValidator_ValidateRegisterEmptyingRequest(t *testing.T) {
|
||||||
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(3)).Return(true, nil).Once()
|
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(3)).Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().GetKindBox(ctx, uint(3)).Return(entity.KindBox{Status: entity.KindBoxAssignedReceiverAgentStatus}, nil).Once()
|
mockRepository.EXPECT().GetKindBox(ctx, uint(3)).Return(entity.KindBox{Status: entity.KindBoxAssignedReceiverAgentStatus}, nil).Once()
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
|
|
@ -144,8 +134,6 @@ func TestValidator_ValidateRegisterEmptyingRequest(t *testing.T) {
|
||||||
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(false, errors.New("repo error")).Once()
|
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(false, errors.New("repo error")).Once()
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
||||||
|
|
@ -163,89 +151,6 @@ func TestValidator_ValidateRegisterEmptyingRequest(t *testing.T) {
|
||||||
assert.Equal(t, errmsg.ErrorMsgSomethingWentWrong, fieldErrors["KindBoxID"])
|
assert.Equal(t, errmsg.ErrorMsgSomethingWentWrong, fieldErrors["KindBoxID"])
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Empty benefactor id", func(t *testing.T) {
|
|
||||||
req := param.KindBoxRegisterEmptyingRequest{
|
|
||||||
KindBoxID: 1,
|
|
||||||
BenefactorID: 0,
|
|
||||||
ReturnAddressID: 1,
|
|
||||||
ReturnReferTimeID: 1,
|
|
||||||
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
|
||||||
}
|
|
||||||
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(0), uint(1)).Return(false, nil).Once()
|
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
|
||||||
nil,
|
|
||||||
).Once()
|
|
||||||
mockReferTimeSvc.EXPECT().GetReferTimeByID(ctx, refertimeparam.GetReferTimeRequest{ReferTimeID: 1}).Return(
|
|
||||||
refertimeparam.GetReferTimeResponse{ReferTime: entity.ReferTime{Status: entity.ReferTimeActiveStatus}},
|
|
||||||
nil,
|
|
||||||
).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateRegisterEmptyingRequest(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Contains(t, fieldErrors, "BenefactorID")
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Benefactor does not exist", func(t *testing.T) {
|
|
||||||
req := param.KindBoxRegisterEmptyingRequest{
|
|
||||||
KindBoxID: 1,
|
|
||||||
BenefactorID: 2,
|
|
||||||
ReturnAddressID: 1,
|
|
||||||
ReturnReferTimeID: 1,
|
|
||||||
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
|
||||||
}
|
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 2}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(2), uint(1)).Return(false, nil).Once()
|
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
|
||||||
nil,
|
|
||||||
).Once()
|
|
||||||
mockReferTimeSvc.EXPECT().GetReferTimeByID(ctx, refertimeparam.GetReferTimeRequest{ReferTimeID: 1}).Return(
|
|
||||||
refertimeparam.GetReferTimeResponse{ReferTime: entity.ReferTime{Status: entity.ReferTimeActiveStatus}},
|
|
||||||
nil,
|
|
||||||
).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateRegisterEmptyingRequest(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Equal(t, errmsg.ErrorMsgBenefactorNotFound, fieldErrors["BenefactorID"])
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Benefactor exist error", func(t *testing.T) {
|
|
||||||
req := param.KindBoxRegisterEmptyingRequest{
|
|
||||||
KindBoxID: 1,
|
|
||||||
BenefactorID: 1,
|
|
||||||
ReturnAddressID: 1,
|
|
||||||
ReturnReferTimeID: 1,
|
|
||||||
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
|
||||||
}
|
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, errors.New("service error")).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
|
||||||
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
|
||||||
nil,
|
|
||||||
).Once()
|
|
||||||
mockReferTimeSvc.EXPECT().GetReferTimeByID(ctx, refertimeparam.GetReferTimeRequest{ReferTimeID: 1}).Return(
|
|
||||||
refertimeparam.GetReferTimeResponse{ReferTime: entity.ReferTime{Status: entity.ReferTimeActiveStatus}},
|
|
||||||
nil,
|
|
||||||
).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateRegisterEmptyingRequest(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Equal(t, errmsg.ErrorMsgSomethingWentWrong, fieldErrors["BenefactorID"])
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Empty ReturnAddress id", func(t *testing.T) {
|
t.Run("Empty ReturnAddress id", func(t *testing.T) {
|
||||||
req := param.KindBoxRegisterEmptyingRequest{
|
req := param.KindBoxRegisterEmptyingRequest{
|
||||||
KindBoxID: 1,
|
KindBoxID: 1,
|
||||||
|
|
@ -255,8 +160,6 @@ func TestValidator_ValidateRegisterEmptyingRequest(t *testing.T) {
|
||||||
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
||||||
mockReferTimeSvc.EXPECT().GetReferTimeByID(ctx, refertimeparam.GetReferTimeRequest{ReferTimeID: 1}).Return(
|
mockReferTimeSvc.EXPECT().GetReferTimeByID(ctx, refertimeparam.GetReferTimeRequest{ReferTimeID: 1}).Return(
|
||||||
|
|
@ -280,8 +183,6 @@ func TestValidator_ValidateRegisterEmptyingRequest(t *testing.T) {
|
||||||
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 2}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 2}).Return(
|
||||||
|
|
@ -309,8 +210,6 @@ func TestValidator_ValidateRegisterEmptyingRequest(t *testing.T) {
|
||||||
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
|
|
@ -337,8 +236,6 @@ func TestValidator_ValidateRegisterEmptyingRequest(t *testing.T) {
|
||||||
ReturnReferTimeID: 1,
|
ReturnReferTimeID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
|
|
@ -366,8 +263,6 @@ func TestValidator_ValidateRegisterEmptyingRequest(t *testing.T) {
|
||||||
ReturnReferDate: time.Now().Add(time.Hour * -24),
|
ReturnReferDate: time.Now().Add(time.Hour * -24),
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
|
|
@ -395,8 +290,6 @@ func TestValidator_ValidateRegisterEmptyingRequest(t *testing.T) {
|
||||||
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
|
|
@ -420,8 +313,6 @@ func TestValidator_ValidateRegisterEmptyingRequest(t *testing.T) {
|
||||||
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
|
|
@ -449,8 +340,6 @@ func TestValidator_ValidateRegisterEmptyingRequest(t *testing.T) {
|
||||||
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
ReturnReferDate: time.Now().Add(time.Hour * 24),
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
mockRepository.EXPECT().BenefactorKindBoxExist(ctx, uint(1), uint(1)).Return(true, nil).Once()
|
||||||
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
mockRepository.EXPECT().GetKindBox(ctx, uint(1)).Return(entity.KindBox{Status: entity.KindBoxDeliveredStatus}, nil).Once()
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,6 @@ import (
|
||||||
"git.gocasts.ir/ebhomengo/niki/entity"
|
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||||
params "git.gocasts.ir/ebhomengo/niki/param"
|
params "git.gocasts.ir/ebhomengo/niki/param"
|
||||||
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
||||||
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactor"
|
|
||||||
refertimeparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/refer_time"
|
refertimeparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/refer_time"
|
||||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||||
validation "github.com/go-ozzo/ozzo-validation/v4"
|
validation "github.com/go-ozzo/ozzo-validation/v4"
|
||||||
|
|
@ -21,11 +20,6 @@ type Repository interface {
|
||||||
GetKindBox(ctx context.Context, kindBoxID uint) (entity.KindBox, error)
|
GetKindBox(ctx context.Context, kindBoxID uint) (entity.KindBox, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
//go:generate mockery --name BenefactorSvc
|
|
||||||
type BenefactorSvc interface {
|
|
||||||
BenefactorExistByID(ctx context.Context, request param.BenefactorExistByIDRequest) (param.BenefactorExistByIDResponse, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
//go:generate mockery --name AddressSvc
|
//go:generate mockery --name AddressSvc
|
||||||
type AddressSvc interface {
|
type AddressSvc interface {
|
||||||
AddressExistByID(ctx context.Context, request addressparam.GetAddressByIDRequest) (addressparam.GetAddressByIDResponse, error)
|
AddressExistByID(ctx context.Context, request addressparam.GetAddressByIDRequest) (addressparam.GetAddressByIDResponse, error)
|
||||||
|
|
@ -37,32 +31,13 @@ type ReferTimeSvc interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
type Validator struct {
|
type Validator struct {
|
||||||
repo Repository
|
repo Repository
|
||||||
benefactorSvc BenefactorSvc
|
addressSvc AddressSvc
|
||||||
addressSvc AddressSvc
|
referTimeSvc ReferTimeSvc
|
||||||
referTimeSvc ReferTimeSvc
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(repo Repository, benefactorSvc BenefactorSvc, addressSvc AddressSvc, referTimeSvc ReferTimeSvc) Validator {
|
func New(repo Repository, addressSvc AddressSvc, referTimeSvc ReferTimeSvc) Validator {
|
||||||
return Validator{repo: repo, benefactorSvc: benefactorSvc, addressSvc: addressSvc, referTimeSvc: referTimeSvc}
|
return Validator{repo: repo, addressSvc: addressSvc, referTimeSvc: referTimeSvc}
|
||||||
}
|
|
||||||
|
|
||||||
func (v Validator) doesBenefactorExist(ctx context.Context) validation.RuleFunc {
|
|
||||||
return func(value interface{}) error {
|
|
||||||
benefactorID, ok := value.(uint)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
|
|
||||||
}
|
|
||||||
res, err := v.benefactorSvc.BenefactorExistByID(ctx, param.BenefactorExistByIDRequest{ID: benefactorID})
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
|
|
||||||
}
|
|
||||||
if !res.Existed {
|
|
||||||
return fmt.Errorf(errmsg.ErrorMsgBenefactorNotFound)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v Validator) doesBenefactorKindBoxExist(ctx context.Context, benefactorID uint) validation.RuleFunc {
|
func (v Validator) doesBenefactorKindBoxExist(ctx context.Context, benefactorID uint) validation.RuleFunc {
|
||||||
|
|
|
||||||
|
|
@ -14,12 +14,9 @@ func (v Validator) ValidateAddRequest(ctx context.Context, req param.KindBoxReqA
|
||||||
const op = "userkindboxreqvalidator.ValidateAddRequest"
|
const op = "userkindboxreqvalidator.ValidateAddRequest"
|
||||||
|
|
||||||
if err := validation.ValidateStruct(&req,
|
if err := validation.ValidateStruct(&req,
|
||||||
|
validation.Field(&req.CountRequested,
|
||||||
validation.Field(&req.CountRequested, validation.Required, validation.Min(MinKindBoxReq), validation.Max(MaxKindBoxReq)),
|
|
||||||
|
|
||||||
validation.Field(&req.BenefactorID,
|
|
||||||
validation.Required,
|
validation.Required,
|
||||||
validation.By(v.doesBenefactorExist(ctx))),
|
validation.Min(MinKindBoxReq), validation.Max(MaxKindBoxReq)),
|
||||||
|
|
||||||
validation.Field(&req.KindBoxType,
|
validation.Field(&req.KindBoxType,
|
||||||
validation.Required,
|
validation.Required,
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import (
|
||||||
|
|
||||||
"git.gocasts.ir/ebhomengo/niki/entity"
|
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||||
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
||||||
benefactorparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactor"
|
|
||||||
kindboxreqparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/kind_box_req"
|
kindboxreqparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/kind_box_req"
|
||||||
refertimeparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/refer_time"
|
refertimeparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/refer_time"
|
||||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||||
|
|
@ -17,10 +16,9 @@ import (
|
||||||
|
|
||||||
func TestValidator_ValidateAddRequest(t *testing.T) {
|
func TestValidator_ValidateAddRequest(t *testing.T) {
|
||||||
mockRepository := NewMockRepository(t)
|
mockRepository := NewMockRepository(t)
|
||||||
mockBenefactorSvc := NewMockBenefactorSvc(t)
|
|
||||||
mockAddressSvc := NewMockAddressSvc(t)
|
mockAddressSvc := NewMockAddressSvc(t)
|
||||||
mockReferTimeSvc := NewMockReferTimeSvc(t)
|
mockReferTimeSvc := NewMockReferTimeSvc(t)
|
||||||
validator := New(mockBenefactorSvc, mockAddressSvc, mockReferTimeSvc, mockRepository)
|
validator := New(mockAddressSvc, mockReferTimeSvc, mockRepository)
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
t.Run("Successful validation", func(t *testing.T) {
|
t.Run("Successful validation", func(t *testing.T) {
|
||||||
|
|
@ -33,8 +31,6 @@ func TestValidator_ValidateAddRequest(t *testing.T) {
|
||||||
CountRequested: 1,
|
CountRequested: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
||||||
nil,
|
nil,
|
||||||
|
|
@ -60,8 +56,6 @@ func TestValidator_ValidateAddRequest(t *testing.T) {
|
||||||
CountRequested: 101,
|
CountRequested: 101,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
||||||
nil,
|
nil,
|
||||||
|
|
@ -78,88 +72,6 @@ func TestValidator_ValidateAddRequest(t *testing.T) {
|
||||||
assert.Contains(t, fieldErrors, "count_requested")
|
assert.Contains(t, fieldErrors, "count_requested")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Empty benefactor id", func(t *testing.T) {
|
|
||||||
req := kindboxreqparam.KindBoxReqAddRequest{
|
|
||||||
BenefactorID: 0,
|
|
||||||
KindBoxType: entity.KindBoxOnTable,
|
|
||||||
DeliverAddressID: 1,
|
|
||||||
DeliverReferDate: time.Now().Add(time.Hour * 24),
|
|
||||||
DeliverReferTimeID: 1,
|
|
||||||
CountRequested: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
|
||||||
nil,
|
|
||||||
).Once()
|
|
||||||
mockReferTimeSvc.EXPECT().GetReferTimeByID(ctx, refertimeparam.GetReferTimeRequest{ReferTimeID: 1}).Return(
|
|
||||||
refertimeparam.GetReferTimeResponse{ReferTime: entity.ReferTime{Status: entity.ReferTimeActiveStatus}},
|
|
||||||
nil,
|
|
||||||
).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateAddRequest(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Contains(t, fieldErrors, "BenefactorID")
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Benefactor does not exist", func(t *testing.T) {
|
|
||||||
req := kindboxreqparam.KindBoxReqAddRequest{
|
|
||||||
BenefactorID: 2,
|
|
||||||
KindBoxType: entity.KindBoxOnTable,
|
|
||||||
DeliverAddressID: 1,
|
|
||||||
DeliverReferDate: time.Now().Add(time.Hour * 24),
|
|
||||||
DeliverReferTimeID: 1,
|
|
||||||
CountRequested: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 2}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, nil).Once()
|
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
|
||||||
nil,
|
|
||||||
).Once()
|
|
||||||
mockReferTimeSvc.EXPECT().GetReferTimeByID(ctx, refertimeparam.GetReferTimeRequest{ReferTimeID: 1}).Return(
|
|
||||||
refertimeparam.GetReferTimeResponse{ReferTime: entity.ReferTime{Status: entity.ReferTimeActiveStatus}},
|
|
||||||
nil,
|
|
||||||
).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateAddRequest(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Equal(t, errmsg.ErrorMsgBenefactorNotFound, fieldErrors["BenefactorID"])
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Benefactor exist error", func(t *testing.T) {
|
|
||||||
req := kindboxreqparam.KindBoxReqAddRequest{
|
|
||||||
BenefactorID: 1,
|
|
||||||
KindBoxType: entity.KindBoxOnTable,
|
|
||||||
DeliverAddressID: 1,
|
|
||||||
DeliverReferDate: time.Now().Add(time.Hour * 24),
|
|
||||||
DeliverReferTimeID: 1,
|
|
||||||
CountRequested: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, errors.New("service error")).Once()
|
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
|
||||||
nil,
|
|
||||||
).Once()
|
|
||||||
mockReferTimeSvc.EXPECT().GetReferTimeByID(ctx, refertimeparam.GetReferTimeRequest{ReferTimeID: 1}).Return(
|
|
||||||
refertimeparam.GetReferTimeResponse{ReferTime: entity.ReferTime{Status: entity.ReferTimeActiveStatus}},
|
|
||||||
nil,
|
|
||||||
).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateAddRequest(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Equal(t, errmsg.ErrorMsgSomethingWentWrong, fieldErrors["BenefactorID"])
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Invalid KindBox type", func(t *testing.T) {
|
t.Run("Invalid KindBox type", func(t *testing.T) {
|
||||||
req := kindboxreqparam.KindBoxReqAddRequest{
|
req := kindboxreqparam.KindBoxReqAddRequest{
|
||||||
BenefactorID: 1,
|
BenefactorID: 1,
|
||||||
|
|
@ -170,8 +82,6 @@ func TestValidator_ValidateAddRequest(t *testing.T) {
|
||||||
CountRequested: 1,
|
CountRequested: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
||||||
nil,
|
nil,
|
||||||
|
|
@ -198,8 +108,6 @@ func TestValidator_ValidateAddRequest(t *testing.T) {
|
||||||
CountRequested: 1,
|
CountRequested: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockReferTimeSvc.EXPECT().GetReferTimeByID(ctx, refertimeparam.GetReferTimeRequest{ReferTimeID: 1}).Return(
|
mockReferTimeSvc.EXPECT().GetReferTimeByID(ctx, refertimeparam.GetReferTimeRequest{ReferTimeID: 1}).Return(
|
||||||
refertimeparam.GetReferTimeResponse{ReferTime: entity.ReferTime{Status: entity.ReferTimeActiveStatus}},
|
refertimeparam.GetReferTimeResponse{ReferTime: entity.ReferTime{Status: entity.ReferTimeActiveStatus}},
|
||||||
nil,
|
nil,
|
||||||
|
|
@ -222,8 +130,6 @@ func TestValidator_ValidateAddRequest(t *testing.T) {
|
||||||
CountRequested: 1,
|
CountRequested: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 2}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, nil).Once()
|
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 2}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 2}).Return(
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 3}},
|
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 3}},
|
||||||
nil,
|
nil,
|
||||||
|
|
@ -250,8 +156,6 @@ func TestValidator_ValidateAddRequest(t *testing.T) {
|
||||||
CountRequested: 1,
|
CountRequested: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, errors.New("service error")).Once()
|
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
||||||
errors.New("service error"),
|
errors.New("service error"),
|
||||||
|
|
@ -278,8 +182,6 @@ func TestValidator_ValidateAddRequest(t *testing.T) {
|
||||||
CountRequested: 1,
|
CountRequested: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
||||||
nil,
|
nil,
|
||||||
|
|
@ -306,8 +208,6 @@ func TestValidator_ValidateAddRequest(t *testing.T) {
|
||||||
CountRequested: 1,
|
CountRequested: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
||||||
nil,
|
nil,
|
||||||
|
|
@ -330,8 +230,6 @@ func TestValidator_ValidateAddRequest(t *testing.T) {
|
||||||
CountRequested: 1,
|
CountRequested: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
||||||
nil,
|
nil,
|
||||||
|
|
@ -358,8 +256,6 @@ func TestValidator_ValidateAddRequest(t *testing.T) {
|
||||||
CountRequested: 1,
|
CountRequested: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
mockAddressSvc.EXPECT().AddressExistByID(ctx, addressparam.GetAddressByIDRequest{ID: 1}).Return(
|
||||||
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
addressparam.GetAddressByIDResponse{Address: entity.Address{BenefactorID: 1}},
|
||||||
nil,
|
nil,
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,6 @@ func (v Validator) ValidateDeleteRequest(ctx context.Context, req param.KindBoxR
|
||||||
const op = "userkindboxreqvalidator.ValidateDeleteRequest"
|
const op = "userkindboxreqvalidator.ValidateDeleteRequest"
|
||||||
|
|
||||||
if err := validation.ValidateStruct(&req,
|
if err := validation.ValidateStruct(&req,
|
||||||
validation.Field(&req.BenefactorID,
|
|
||||||
validation.Required,
|
|
||||||
validation.By(v.doesBenefactorExist(ctx))),
|
|
||||||
validation.Field(&req.KindBoxReqID,
|
validation.Field(&req.KindBoxReqID,
|
||||||
validation.Required,
|
validation.Required,
|
||||||
validation.By(v.doesKindBoxRequestHavePendingStatus(ctx)),
|
validation.By(v.doesKindBoxRequestHavePendingStatus(ctx)),
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"git.gocasts.ir/ebhomengo/niki/entity"
|
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||||
benefactorparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactor"
|
|
||||||
kindboxreqparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/kind_box_req"
|
kindboxreqparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/kind_box_req"
|
||||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
@ -14,10 +13,9 @@ import (
|
||||||
|
|
||||||
func TestValidator_ValidateDeleteRequest(t *testing.T) {
|
func TestValidator_ValidateDeleteRequest(t *testing.T) {
|
||||||
mockRepository := NewMockRepository(t)
|
mockRepository := NewMockRepository(t)
|
||||||
mockBenefactorSvc := NewMockBenefactorSvc(t)
|
|
||||||
mockAddressSvc := NewMockAddressSvc(t)
|
mockAddressSvc := NewMockAddressSvc(t)
|
||||||
mockReferTimeSvc := NewMockReferTimeSvc(t)
|
mockReferTimeSvc := NewMockReferTimeSvc(t)
|
||||||
validator := New(mockBenefactorSvc, mockAddressSvc, mockReferTimeSvc, mockRepository)
|
validator := New(mockAddressSvc, mockReferTimeSvc, mockRepository)
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
t.Run("Successful validation", func(t *testing.T) {
|
t.Run("Successful validation", func(t *testing.T) {
|
||||||
|
|
@ -26,8 +24,6 @@ func TestValidator_ValidateDeleteRequest(t *testing.T) {
|
||||||
KindBoxReqID: 1,
|
KindBoxReqID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().GetKindBoxReqByID(ctx, uint(1)).Return(
|
mockRepository.EXPECT().GetKindBoxReqByID(ctx, uint(1)).Return(
|
||||||
entity.KindBoxReq{BenefactorID: 1, Status: entity.KindBoxReqPendingStatus},
|
entity.KindBoxReq{BenefactorID: 1, Status: entity.KindBoxReqPendingStatus},
|
||||||
nil,
|
nil,
|
||||||
|
|
@ -39,73 +35,12 @@ func TestValidator_ValidateDeleteRequest(t *testing.T) {
|
||||||
assert.Nil(t, fieldErrors)
|
assert.Nil(t, fieldErrors)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Empty benefactor id", func(t *testing.T) {
|
|
||||||
req := kindboxreqparam.KindBoxReqDeleteRequest{
|
|
||||||
BenefactorID: 0,
|
|
||||||
KindBoxReqID: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockRepository.EXPECT().GetKindBoxReqByID(ctx, uint(1)).Return(
|
|
||||||
entity.KindBoxReq{BenefactorID: 1, Status: entity.KindBoxReqPendingStatus},
|
|
||||||
nil,
|
|
||||||
).Twice()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateDeleteRequest(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Contains(t, fieldErrors, "BenefactorID")
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Benefactor does not exist", func(t *testing.T) {
|
|
||||||
req := kindboxreqparam.KindBoxReqDeleteRequest{
|
|
||||||
BenefactorID: 2,
|
|
||||||
KindBoxReqID: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 2}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, nil).Once()
|
|
||||||
mockRepository.EXPECT().GetKindBoxReqByID(ctx, uint(1)).Return(
|
|
||||||
entity.KindBoxReq{BenefactorID: 1, Status: entity.KindBoxReqPendingStatus},
|
|
||||||
nil,
|
|
||||||
).Twice()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateDeleteRequest(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Contains(t, fieldErrors, "BenefactorID")
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Benefactor exist error", func(t *testing.T) {
|
|
||||||
req := kindboxreqparam.KindBoxReqDeleteRequest{
|
|
||||||
BenefactorID: 2,
|
|
||||||
KindBoxReqID: 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 2}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: false}, errors.New("service error")).Once()
|
|
||||||
mockRepository.EXPECT().GetKindBoxReqByID(ctx, uint(1)).Return(
|
|
||||||
entity.KindBoxReq{BenefactorID: 1, Status: entity.KindBoxReqPendingStatus},
|
|
||||||
nil,
|
|
||||||
).Twice()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateDeleteRequest(ctx, req)
|
|
||||||
|
|
||||||
assert.Error(t, err)
|
|
||||||
assert.NotNil(t, fieldErrors)
|
|
||||||
assert.Equal(t, errmsg.ErrorMsgSomethingWentWrong, fieldErrors["BenefactorID"])
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("Empty KindBoxReq id", func(t *testing.T) {
|
t.Run("Empty KindBoxReq id", func(t *testing.T) {
|
||||||
req := kindboxreqparam.KindBoxReqDeleteRequest{
|
req := kindboxreqparam.KindBoxReqDeleteRequest{
|
||||||
BenefactorID: 1,
|
BenefactorID: 1,
|
||||||
KindBoxReqID: 0,
|
KindBoxReqID: 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
|
|
||||||
fieldErrors, err := validator.ValidateDeleteRequest(ctx, req)
|
fieldErrors, err := validator.ValidateDeleteRequest(ctx, req)
|
||||||
|
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
|
|
@ -119,8 +54,6 @@ func TestValidator_ValidateDeleteRequest(t *testing.T) {
|
||||||
KindBoxReqID: 2,
|
KindBoxReqID: 2,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().GetKindBoxReqByID(ctx, uint(2)).Return(
|
mockRepository.EXPECT().GetKindBoxReqByID(ctx, uint(2)).Return(
|
||||||
entity.KindBoxReq{BenefactorID: 1, Status: entity.KindBoxReqDeliveredStatus},
|
entity.KindBoxReq{BenefactorID: 1, Status: entity.KindBoxReqDeliveredStatus},
|
||||||
nil,
|
nil,
|
||||||
|
|
@ -139,8 +72,6 @@ func TestValidator_ValidateDeleteRequest(t *testing.T) {
|
||||||
KindBoxReqID: 3,
|
KindBoxReqID: 3,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().GetKindBoxReqByID(ctx, uint(3)).Return(
|
mockRepository.EXPECT().GetKindBoxReqByID(ctx, uint(3)).Return(
|
||||||
entity.KindBoxReq{BenefactorID: 4, Status: entity.KindBoxReqPendingStatus},
|
entity.KindBoxReq{BenefactorID: 4, Status: entity.KindBoxReqPendingStatus},
|
||||||
nil,
|
nil,
|
||||||
|
|
@ -159,8 +90,6 @@ func TestValidator_ValidateDeleteRequest(t *testing.T) {
|
||||||
KindBoxReqID: 1,
|
KindBoxReqID: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
mockBenefactorSvc.EXPECT().BenefactorExistByID(ctx, benefactorparam.BenefactorExistByIDRequest{ID: 1}).
|
|
||||||
Return(benefactorparam.BenefactorExistByIDResponse{Existed: true}, nil).Once()
|
|
||||||
mockRepository.EXPECT().GetKindBoxReqByID(ctx, uint(1)).Return(
|
mockRepository.EXPECT().GetKindBoxReqByID(ctx, uint(1)).Return(
|
||||||
entity.KindBoxReq{BenefactorID: 1, Status: entity.KindBoxReqPendingStatus},
|
entity.KindBoxReq{BenefactorID: 1, Status: entity.KindBoxReqPendingStatus},
|
||||||
errors.New("service error"),
|
errors.New("service error"),
|
||||||
|
|
|
||||||
|
|
@ -14,14 +14,8 @@ func (v Validator) ValidateGetRequest(ctx context.Context, req param.KindBoxReqG
|
||||||
const op = "userkindboxreqvalidator.ValidateGetRequest"
|
const op = "userkindboxreqvalidator.ValidateGetRequest"
|
||||||
|
|
||||||
if err := validation.ValidateStruct(&req,
|
if err := validation.ValidateStruct(&req,
|
||||||
validation.Field(&req.BenefactorID,
|
validation.Field(&req.KindBoxReqID, validation.Required,
|
||||||
validation.Required,
|
validation.By(v.doesKindBoxBelongToBenefactor(ctx, req.BenefactorID))),
|
||||||
validation.By(v.doesBenefactorExist(ctx))),
|
|
||||||
|
|
||||||
// validation.Field(&req.KindBoxReqID,
|
|
||||||
// validation.Required,
|
|
||||||
// validation.By(v.doesKindBoxRequestExist),
|
|
||||||
// validation.By(v.doesKindBoxBelongToBenefactor(req.BenefactorID))),
|
|
||||||
); err != nil {
|
); err != nil {
|
||||||
fieldErrors := make(map[string]string)
|
fieldErrors := make(map[string]string)
|
||||||
|
|
||||||
|
|
@ -41,5 +35,5 @@ func (v Validator) ValidateGetRequest(ctx context.Context, req param.KindBoxReqG
|
||||||
WithErr(err)
|
WithErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return map[string]string{}, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,9 @@ import (
|
||||||
|
|
||||||
func TestValidator_ValidateGetAll(t *testing.T) {
|
func TestValidator_ValidateGetAll(t *testing.T) {
|
||||||
mockRepository := NewMockRepository(t)
|
mockRepository := NewMockRepository(t)
|
||||||
mockBenefactorSvc := NewMockBenefactorSvc(t)
|
|
||||||
mockAddressSvc := NewMockAddressSvc(t)
|
mockAddressSvc := NewMockAddressSvc(t)
|
||||||
mockReferTimeSvc := NewMockReferTimeSvc(t)
|
mockReferTimeSvc := NewMockReferTimeSvc(t)
|
||||||
validator := New(mockBenefactorSvc, mockAddressSvc, mockReferTimeSvc, mockRepository)
|
validator := New(mockAddressSvc, mockReferTimeSvc, mockRepository)
|
||||||
|
|
||||||
t.Run("Successful validation", func(t *testing.T) {
|
t.Run("Successful validation", func(t *testing.T) {
|
||||||
req := kindboxreqparam.GetAllRequest{
|
req := kindboxreqparam.GetAllRequest{
|
||||||
|
|
|
||||||
|
|
@ -1 +1,83 @@
|
||||||
package benefactorkindboxreqvalidator
|
package benefactorkindboxreqvalidator
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||||
|
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/kind_box_req"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestValidator_ValidateGetRequest(t *testing.T) {
|
||||||
|
mockRepository := NewMockRepository(t)
|
||||||
|
mockAddressSvc := NewMockAddressSvc(t)
|
||||||
|
mockReferTimeSvc := NewMockReferTimeSvc(t)
|
||||||
|
validator := New(mockAddressSvc, mockReferTimeSvc, mockRepository)
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
t.Run("Successful validation", func(t *testing.T) {
|
||||||
|
req := param.KindBoxReqGetRequest{
|
||||||
|
BenefactorID: 1,
|
||||||
|
KindBoxReqID: 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
mockRepository.EXPECT().GetKindBoxReqByID(ctx, req.KindBoxReqID).Return(
|
||||||
|
entity.KindBoxReq{ID: req.KindBoxReqID, BenefactorID: req.BenefactorID},
|
||||||
|
nil,
|
||||||
|
).Once()
|
||||||
|
fieldErrors, err := validator.ValidateGetRequest(ctx, req)
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Nil(t, fieldErrors)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Empty KindBoxReq id", func(t *testing.T) {
|
||||||
|
req := param.KindBoxReqGetRequest{
|
||||||
|
BenefactorID: 1,
|
||||||
|
KindBoxReqID: 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldErrors, err := validator.ValidateGetRequest(ctx, req)
|
||||||
|
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.NotNil(t, fieldErrors)
|
||||||
|
assert.Contains(t, fieldErrors, "KindBoxReqID")
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("KindBoxReq does not exist", func(t *testing.T) {
|
||||||
|
req := param.KindBoxReqGetRequest{
|
||||||
|
BenefactorID: 1,
|
||||||
|
KindBoxReqID: 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
mockRepository.EXPECT().GetKindBoxReqByID(ctx, req.KindBoxReqID).Return(
|
||||||
|
entity.KindBoxReq{},
|
||||||
|
errors.New("repo error"),
|
||||||
|
).Once()
|
||||||
|
fieldErrors, err := validator.ValidateGetRequest(ctx, req)
|
||||||
|
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.NotNil(t, fieldErrors)
|
||||||
|
assert.Contains(t, fieldErrors, "KindBoxReqID")
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("KindBoxReq does not belong to benefactor", func(t *testing.T) {
|
||||||
|
req := param.KindBoxReqGetRequest{
|
||||||
|
BenefactorID: 1,
|
||||||
|
KindBoxReqID: 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
mockRepository.EXPECT().GetKindBoxReqByID(ctx, req.KindBoxReqID).Return(
|
||||||
|
entity.KindBoxReq{BenefactorID: 2},
|
||||||
|
nil,
|
||||||
|
).Once()
|
||||||
|
|
||||||
|
fieldErrors, err := validator.ValidateGetRequest(ctx, req)
|
||||||
|
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.NotNil(t, fieldErrors)
|
||||||
|
assert.Contains(t, fieldErrors, "KindBoxReqID")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,95 +0,0 @@
|
||||||
// Code generated by mockery v2.45.1. DO NOT EDIT.
|
|
||||||
|
|
||||||
package benefactorkindboxreqvalidator
|
|
||||||
|
|
||||||
import (
|
|
||||||
context "context"
|
|
||||||
|
|
||||||
benefactoreparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactor"
|
|
||||||
|
|
||||||
mock "github.com/stretchr/testify/mock"
|
|
||||||
)
|
|
||||||
|
|
||||||
// MockBenefactorSvc is an autogenerated mock type for the BenefactorSvc type
|
|
||||||
type MockBenefactorSvc struct {
|
|
||||||
mock.Mock
|
|
||||||
}
|
|
||||||
|
|
||||||
type MockBenefactorSvc_Expecter struct {
|
|
||||||
mock *mock.Mock
|
|
||||||
}
|
|
||||||
|
|
||||||
func (_m *MockBenefactorSvc) EXPECT() *MockBenefactorSvc_Expecter {
|
|
||||||
return &MockBenefactorSvc_Expecter{mock: &_m.Mock}
|
|
||||||
}
|
|
||||||
|
|
||||||
// BenefactorExistByID provides a mock function with given fields: ctx, request
|
|
||||||
func (_m *MockBenefactorSvc) BenefactorExistByID(ctx context.Context, request benefactoreparam.BenefactorExistByIDRequest) (benefactoreparam.BenefactorExistByIDResponse, error) {
|
|
||||||
ret := _m.Called(ctx, request)
|
|
||||||
|
|
||||||
if len(ret) == 0 {
|
|
||||||
panic("no return value specified for BenefactorExistByID")
|
|
||||||
}
|
|
||||||
|
|
||||||
var r0 benefactoreparam.BenefactorExistByIDResponse
|
|
||||||
var r1 error
|
|
||||||
if rf, ok := ret.Get(0).(func(context.Context, benefactoreparam.BenefactorExistByIDRequest) (benefactoreparam.BenefactorExistByIDResponse, error)); ok {
|
|
||||||
return rf(ctx, request)
|
|
||||||
}
|
|
||||||
if rf, ok := ret.Get(0).(func(context.Context, benefactoreparam.BenefactorExistByIDRequest) benefactoreparam.BenefactorExistByIDResponse); ok {
|
|
||||||
r0 = rf(ctx, request)
|
|
||||||
} else {
|
|
||||||
r0 = ret.Get(0).(benefactoreparam.BenefactorExistByIDResponse)
|
|
||||||
}
|
|
||||||
|
|
||||||
if rf, ok := ret.Get(1).(func(context.Context, benefactoreparam.BenefactorExistByIDRequest) error); ok {
|
|
||||||
r1 = rf(ctx, request)
|
|
||||||
} else {
|
|
||||||
r1 = ret.Error(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
return r0, r1
|
|
||||||
}
|
|
||||||
|
|
||||||
// MockBenefactorSvc_BenefactorExistByID_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BenefactorExistByID'
|
|
||||||
type MockBenefactorSvc_BenefactorExistByID_Call struct {
|
|
||||||
*mock.Call
|
|
||||||
}
|
|
||||||
|
|
||||||
// BenefactorExistByID is a helper method to define mock.On call
|
|
||||||
// - ctx context.Context
|
|
||||||
// - request benefactoreparam.BenefactorExistByIDRequest
|
|
||||||
func (_e *MockBenefactorSvc_Expecter) BenefactorExistByID(ctx interface{}, request interface{}) *MockBenefactorSvc_BenefactorExistByID_Call {
|
|
||||||
return &MockBenefactorSvc_BenefactorExistByID_Call{Call: _e.mock.On("BenefactorExistByID", ctx, request)}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (_c *MockBenefactorSvc_BenefactorExistByID_Call) Run(run func(ctx context.Context, request benefactoreparam.BenefactorExistByIDRequest)) *MockBenefactorSvc_BenefactorExistByID_Call {
|
|
||||||
_c.Call.Run(func(args mock.Arguments) {
|
|
||||||
run(args[0].(context.Context), args[1].(benefactoreparam.BenefactorExistByIDRequest))
|
|
||||||
})
|
|
||||||
return _c
|
|
||||||
}
|
|
||||||
|
|
||||||
func (_c *MockBenefactorSvc_BenefactorExistByID_Call) Return(_a0 benefactoreparam.BenefactorExistByIDResponse, _a1 error) *MockBenefactorSvc_BenefactorExistByID_Call {
|
|
||||||
_c.Call.Return(_a0, _a1)
|
|
||||||
return _c
|
|
||||||
}
|
|
||||||
|
|
||||||
func (_c *MockBenefactorSvc_BenefactorExistByID_Call) RunAndReturn(run func(context.Context, benefactoreparam.BenefactorExistByIDRequest) (benefactoreparam.BenefactorExistByIDResponse, error)) *MockBenefactorSvc_BenefactorExistByID_Call {
|
|
||||||
_c.Call.Return(run)
|
|
||||||
return _c
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewMockBenefactorSvc creates a new instance of MockBenefactorSvc. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
|
|
||||||
// The first argument is typically a *testing.T value.
|
|
||||||
func NewMockBenefactorSvc(t interface {
|
|
||||||
mock.TestingT
|
|
||||||
Cleanup(func())
|
|
||||||
}) *MockBenefactorSvc {
|
|
||||||
mock := &MockBenefactorSvc{}
|
|
||||||
mock.Mock.Test(t)
|
|
||||||
|
|
||||||
t.Cleanup(func() { mock.AssertExpectations(t) })
|
|
||||||
|
|
||||||
return mock
|
|
||||||
}
|
|
||||||
|
|
@ -14,10 +14,9 @@ import (
|
||||||
|
|
||||||
func TestValidator_ValidateUpdateRequest(t *testing.T) {
|
func TestValidator_ValidateUpdateRequest(t *testing.T) {
|
||||||
mockRepository := NewMockRepository(t)
|
mockRepository := NewMockRepository(t)
|
||||||
mockBenefactorSvc := NewMockBenefactorSvc(t)
|
|
||||||
mockAddressSvc := NewMockAddressSvc(t)
|
mockAddressSvc := NewMockAddressSvc(t)
|
||||||
mockReferTimeSvc := NewMockReferTimeSvc(t)
|
mockReferTimeSvc := NewMockReferTimeSvc(t)
|
||||||
validator := New(mockBenefactorSvc, mockAddressSvc, mockReferTimeSvc, mockRepository)
|
validator := New(mockAddressSvc, mockReferTimeSvc, mockRepository)
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
t.Run("Successful validation", func(t *testing.T) {
|
t.Run("Successful validation", func(t *testing.T) {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ import (
|
||||||
"git.gocasts.ir/ebhomengo/niki/entity"
|
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||||
params "git.gocasts.ir/ebhomengo/niki/param"
|
params "git.gocasts.ir/ebhomengo/niki/param"
|
||||||
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
|
||||||
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactor"
|
|
||||||
refertimeparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/refer_time"
|
refertimeparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/refer_time"
|
||||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||||
validation "github.com/go-ozzo/ozzo-validation/v4"
|
validation "github.com/go-ozzo/ozzo-validation/v4"
|
||||||
|
|
@ -21,11 +20,6 @@ const (
|
||||||
MaxKindBoxReq uint = 100
|
MaxKindBoxReq uint = 100
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:generate mockery --name BenefactorSvc
|
|
||||||
type BenefactorSvc interface {
|
|
||||||
BenefactorExistByID(ctx context.Context, request param.BenefactorExistByIDRequest) (param.BenefactorExistByIDResponse, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
//go:generate mockery --name AddressSvc
|
//go:generate mockery --name AddressSvc
|
||||||
type AddressSvc interface {
|
type AddressSvc interface {
|
||||||
AddressExistByID(ctx context.Context, request addressparam.GetAddressByIDRequest) (addressparam.GetAddressByIDResponse, error)
|
AddressExistByID(ctx context.Context, request addressparam.GetAddressByIDRequest) (addressparam.GetAddressByIDResponse, error)
|
||||||
|
|
@ -43,10 +37,9 @@ type Repository interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
type Validator struct {
|
type Validator struct {
|
||||||
benefactorSvc BenefactorSvc
|
addressSvc AddressSvc
|
||||||
addressSvc AddressSvc
|
referTimeSvc ReferTimeSvc
|
||||||
referTimeSvc ReferTimeSvc
|
repo Repository
|
||||||
repo Repository
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type ValidatorError struct {
|
type ValidatorError struct {
|
||||||
|
|
@ -64,26 +57,8 @@ func (v ValidatorError) Error() string {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(benefactorSvc BenefactorSvc, addressSvc AddressSvc, referTimeSvc ReferTimeSvc, repo Repository) Validator {
|
func New(addressSvc AddressSvc, referTimeSvc ReferTimeSvc, repo Repository) Validator {
|
||||||
return Validator{benefactorSvc: benefactorSvc, addressSvc: addressSvc, referTimeSvc: referTimeSvc, repo: repo}
|
return Validator{addressSvc: addressSvc, referTimeSvc: referTimeSvc, repo: repo}
|
||||||
}
|
|
||||||
|
|
||||||
func (v Validator) doesBenefactorExist(ctx context.Context) validation.RuleFunc {
|
|
||||||
return func(value interface{}) error {
|
|
||||||
benefactorID, ok := value.(uint)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
|
|
||||||
}
|
|
||||||
res, err := v.benefactorSvc.BenefactorExistByID(ctx, param.BenefactorExistByIDRequest{ID: benefactorID})
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
|
|
||||||
}
|
|
||||||
if !res.Existed {
|
|
||||||
return fmt.Errorf(errmsg.ErrorMsgBenefactorNotFound)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v Validator) doesTypeExist(value interface{}) error {
|
func (v Validator) doesTypeExist(value interface{}) error {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue