discount/internal/utils/constitute_conditions_test.go

90 lines
2.7 KiB
Go
Raw Normal View History

2023-07-04 04:04:31 +00:00
package utils_test
import (
"testing"
"github.com/stretchr/testify/assert"
"google.golang.org/protobuf/types/known/timestamppb"
2024-12-11 12:14:39 +00:00
"gitea.pena/PenaSide/discount/internal/proto/discount"
"gitea.pena/PenaSide/discount/internal/utils"
2023-07-04 04:04:31 +00:00
)
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{
2023-07-04 04:04:31 +00:00
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: &timestamppb.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: &timestamppb.Timestamp{
Seconds: 1674546287,
Nanos: 0,
},
})
assert.Nil(t, conditions)
assert.Error(t, err)
})
}