package utils_test import ( "testing" "github.com/stretchr/testify/assert" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/models" "penahub.gitlab.yandexcloud.net/pena-services/customer/internal/utils" ) func TestValidateGetPaymentLinkBody(t *testing.T) { t.Run("Валидация объекта запроса для получения платёжной ссылки по банковской карточке (Успешно)", func(t *testing.T) { assert.NoError(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeBankCard, Currency: "RUB", Amount: 10050, BankCard: &models.BankCard{ Number: "5315 5310 5310 5011", ExpiryYear: "2021", ExpiryMonth: "05", }, })) }) t.Run("Валидация объекта запроса для получения платёжной ссылки по банковской карточке (Не успешно)", func(t *testing.T) { assert.Error(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeBankCard, Currency: "RUB", Amount: 10050, })) assert.Error(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeBankCard, Currency: "RUB", Amount: 10050, BankCard: &models.BankCard{ Number: "5315 5310 5310 5011", ExpiryYear: "2021", }, })) assert.Error(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeBankCard, Currency: "RUB", Amount: 10050, BankCard: &models.BankCard{ Number: "5315 5310 5310 5011", ExpiryMonth: "05", }, })) assert.Error(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeBankCard, Currency: "RUB", Amount: 10050, BankCard: &models.BankCard{ ExpiryYear: "2021", ExpiryMonth: "05", }, })) }) t.Run("Валидация объекта запроса для получения платёжной ссылки через yoomoney (Успешно)", func(t *testing.T) { assert.NoError(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeYoomoney, Currency: "USD", Amount: 10050, })) }) t.Run("Валидация объекта запроса для получения платёжной ссылки через yoomoney (Успешно)", func(t *testing.T) { assert.NoError(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeYoomoney, Currency: "USD", Amount: 10050, })) }) t.Run("Валидация объекта запроса для получения платёжной ссылки через qiwi (Успешно)", func(t *testing.T) { assert.NoError(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeQiwi, Currency: "USD", Amount: 10050, PhoneNumber: "79000000000", })) }) t.Run("Валидация объекта запроса для получения платёжной ссылки через qiwi (Не успешно)", func(t *testing.T) { assert.Error(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeQiwi, Currency: "USD", Amount: 10050, })) }) t.Run("Валидация объекта запроса для получения платёжной ссылки через sberpay (Успешно)", func(t *testing.T) { assert.NoError(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeSberPay, Currency: "USD", Amount: 10050, PhoneNumber: "79000000000", })) }) t.Run("Валидация объекта запроса для получения платёжной ссылки через sberpay (Не успешно)", func(t *testing.T) { assert.Error(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeSberPay, Currency: "USD", Amount: 10050, })) }) t.Run("Валидация объекта запроса для получения платёжной ссылки через alfaclick (Успешно)", func(t *testing.T) { assert.NoError(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeAlfabank, Currency: "USD", Amount: 10050, Login: "login_test", })) }) t.Run("Валидация объекта запроса для получения платёжной ссылки через alfaclick (Не успешно)", func(t *testing.T) { assert.Error(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeAlfabank, Currency: "BYN", Amount: 10050, })) }) t.Run("Валидация объекта запроса для получения платёжной ссылки через sbp (Успешно)", func(t *testing.T) { assert.NoError(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeSBP, Currency: "USD", Amount: 10050, })) }) t.Run("Валидация объекта запроса для получения платёжной ссылки через tinkoff (Успешно)", func(t *testing.T) { assert.NoError(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeTinkoff, Currency: "USD", Amount: 10050, })) }) t.Run("Валидация объекта запроса для получения платёжной ссылки через мобильный (Успешно)", func(t *testing.T) { assert.NoError(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeMobile, Currency: "USD", Amount: 10050, PhoneNumber: "79000000000", })) }) t.Run("Валидация объекта запроса для получения платёжной ссылки через мобильный (Не успешно)", func(t *testing.T) { assert.Error(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeMobile, Currency: "USD", Amount: 10050, })) }) t.Run("Валидация объекта запроса для получения платёжной ссылки через наличные (Успешно)", func(t *testing.T) { assert.NoError(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeCash, Currency: "USD", Amount: 10050, PhoneNumber: "79000000000", })) }) t.Run("Валидация объекта запроса для получения платёжной ссылки через наличные (Не успешно)", func(t *testing.T) { assert.Error(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeCash, Currency: "USD", Amount: 10050, })) }) t.Run("Валидация объекта запроса для получения платёжной ссылки через оплату по частям (Успешно)", func(t *testing.T) { assert.NoError(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: models.PaymentTypeInstallments, Currency: "USD", Amount: 10050, })) }) t.Run("Не успешная валидация из-за неопределённого типа оплаты", func(t *testing.T) { assert.Error(t, utils.ValidateGetPaymentLinkBody(&models.GetPaymentLinkBody{ Type: "some_radmon_payment_type", Currency: "USD", Amount: 10050, })) }) }