90 lines
2.7 KiB
Go
90 lines
2.7 KiB
Go
package utils_test
|
||
|
||
import (
|
||
"testing"
|
||
|
||
"github.com/stretchr/testify/assert"
|
||
"google.golang.org/protobuf/types/known/timestamppb"
|
||
"gitea.pena/PenaSide/discount/internal/proto/discount"
|
||
"gitea.pena/PenaSide/discount/internal/utils"
|
||
)
|
||
|
||
func TestConstituteConditions(t *testing.T) {
|
||
userID := "1"
|
||
userType := "nkvo"
|
||
purchasesAmount := uint64(100000)
|
||
cartPurchasesAmount := uint64(5000)
|
||
productsGroup := "group"
|
||
productID1 := "1"
|
||
productID2 := "2"
|
||
productID3 := "3"
|
||
productID4 := "4"
|
||
productPrice1 := uint64(1000)
|
||
productPrice2 := uint64(6000)
|
||
productPrice3 := uint64(10000)
|
||
productPrice4 := uint64(4000)
|
||
productTerm1 := uint64(14)
|
||
productTerm2 := uint64(16)
|
||
productUsage1 := uint64(24)
|
||
productUsage2 := uint64(14)
|
||
coupon := "coupon"
|
||
|
||
t.Run("Формирование условий поиска с пустыми значениями", func(t *testing.T) {
|
||
conditions, _ := utils.ConstituteConditions(&discount.ApplyDiscountRequest{})
|
||
|
||
assert.Nil(t, conditions)
|
||
})
|
||
|
||
t.Run("Формирование условий поиска с nil", func(t *testing.T) {
|
||
conditions, _ := utils.ConstituteConditions(nil)
|
||
|
||
assert.Nil(t, conditions)
|
||
})
|
||
|
||
t.Run("Формирование условий поиска с заполненной информацией", func(t *testing.T) {
|
||
_, err := utils.ConstituteConditions(&discount.ApplyDiscountRequest{
|
||
UserInformation: &discount.UserInformation{
|
||
ID: userID,
|
||
Type: userType,
|
||
PurchasesAmount: purchasesAmount,
|
||
CartPurchasesAmount: cartPurchasesAmount,
|
||
},
|
||
Products: []*discount.ProductInformation{
|
||
{ID: productID1, Price: productPrice1, Term: &productTerm1, Group: &productsGroup},
|
||
{ID: productID2, Price: productPrice2, Term: &productTerm2, Group: &productsGroup},
|
||
{ID: productID3, Price: productPrice3, Usage: &productUsage1},
|
||
{ID: productID4, Price: productPrice4, Term: &productTerm2, Usage: &productUsage2},
|
||
},
|
||
Coupon: &coupon,
|
||
Date: ×tamppb.Timestamp{
|
||
Seconds: 1674546287,
|
||
Nanos: 0,
|
||
},
|
||
})
|
||
|
||
assert.Nil(t, err)
|
||
})
|
||
|
||
t.Run("Формирование условий поиска с наличием nil'ого продукта", func(t *testing.T) {
|
||
conditions, err := utils.ConstituteConditions(&discount.ApplyDiscountRequest{
|
||
UserInformation: &discount.UserInformation{
|
||
ID: userID,
|
||
Type: userType,
|
||
PurchasesAmount: purchasesAmount,
|
||
CartPurchasesAmount: cartPurchasesAmount,
|
||
},
|
||
Products: []*discount.ProductInformation{
|
||
{ID: productID1, Price: productPrice1, Term: &productTerm1, Group: &productsGroup},
|
||
nil,
|
||
},
|
||
Date: ×tamppb.Timestamp{
|
||
Seconds: 1674546287,
|
||
Nanos: 0,
|
||
},
|
||
})
|
||
|
||
assert.Nil(t, conditions)
|
||
assert.Error(t, err)
|
||
})
|
||
}
|