package transfer_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/proto/broker"
	"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/utils/transfer"
)

func TestTariffMessageProtoToTariffModel(t *testing.T) {
	t.Run("Успешный перевод прото сообщения тарифа в модель", func(t *testing.T) {
		assert.Equal(t,
			&models.Tariff{
				Privileges: []models.Privilege{
					{
						PrivilegeID: "12",
						ServiceKey:  "key-1",
						Type:        models.PrivilegeTypeCount,
						Value:       "12",
					},
				},
			},
			transfer.TariffMessageProtoToTariffModel(&broker.TariffMessage{
				UserID: "11",
				Privileges: []*broker.PrivilegeMessage{
					{
						PrivilegeID: "12",
						ServiceKey:  "key-1",
						Type:        broker.PrivilegeType_Count,
						Value:       "12",
					},
				},
			}),
		)
	})

	t.Run("Успешный перевод nil прото сообщения тарифа в модель", func(t *testing.T) {
		assert.Equal(t, &models.Tariff{}, transfer.TariffMessageProtoToTariffModel(nil))
	})
}

func TestTariffModelToProtoMessage(t *testing.T) {
	t.Run("Успешный перевод модели тарифа в прото сообщение", func(t *testing.T) {
		assert.Equal(t,
			&broker.TariffMessage{
				UserID: "1",
				Privileges: []*broker.PrivilegeMessage{
					{
						PrivilegeID: "12",
						ServiceKey:  "key-1",
						Type:        broker.PrivilegeType_Count,
						Value:       "12",
					},
				},
			},
			transfer.TariffModelToProtoMessage("1", &models.Tariff{
				Privileges: []models.Privilege{
					{
						PrivilegeID: "12",
						ServiceKey:  "key-1",
						Type:        models.PrivilegeTypeCount,
						Value:       "12",
					},
				},
			}),
		)
	})

	t.Run("Успешный перевод nil модели тарифа в прото сообщение", func(t *testing.T) {
		assert.Equal(t, &broker.TariffMessage{}, transfer.TariffModelToProtoMessage("1", nil))
	})
}
