2023-07-04 04:04:31 +00:00
|
|
|
|
package transfer_test
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"testing"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
|
"google.golang.org/protobuf/types/known/timestamppb"
|
|
|
|
|
"penahub.gitlab.yandexcloud.net/pena-services/accruals-service/internal/models"
|
|
|
|
|
"penahub.gitlab.yandexcloud.net/pena-services/accruals-service/internal/proto/discount"
|
|
|
|
|
"penahub.gitlab.yandexcloud.net/pena-services/accruals-service/internal/utils/transfer"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestAuditModelToProto(t *testing.T) {
|
|
|
|
|
deletedAtModel := time.Unix(1674546287, 0).UTC()
|
|
|
|
|
deletedAtProto := timestamppb.Timestamp{Seconds: 1674546287}
|
|
|
|
|
|
|
|
|
|
t.Run("Перевод аудита с пустой модели в прототип", func(t *testing.T) {
|
|
|
|
|
assert.Equal(t, &discount.Audit{
|
|
|
|
|
CreatedAt: timestamppb.New(time.Time{}),
|
|
|
|
|
UpdatedAt: timestamppb.New(time.Time{}),
|
|
|
|
|
}, transfer.AuditModelToProto(&models.Audit{}))
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("Перевод аудита с nil модели в прототип", func(t *testing.T) {
|
|
|
|
|
assert.Equal(t, &discount.Audit{CreatedAt: nil, UpdatedAt: nil}, transfer.AuditModelToProto(nil))
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("Перевод аудита с модели, которая хранит дату удаления, но флаг deleted при этом false в прототип", func(t *testing.T) {
|
|
|
|
|
assert.Equal(t,
|
|
|
|
|
&discount.Audit{
|
|
|
|
|
UpdatedAt: ×tamppb.Timestamp{Seconds: 1674546287},
|
|
|
|
|
DeletedAt: &deletedAtProto,
|
|
|
|
|
Deleted: true,
|
|
|
|
|
CreatedAt: ×tamppb.Timestamp{Seconds: 1674546287},
|
|
|
|
|
},
|
|
|
|
|
transfer.AuditModelToProto(&models.Audit{
|
|
|
|
|
UpdatedAt: time.Unix(1674546287, 0).UTC(),
|
|
|
|
|
DeletedAt: &deletedAtModel,
|
|
|
|
|
Deleted: false,
|
|
|
|
|
CreatedAt: time.Unix(1674546287, 0).UTC(),
|
|
|
|
|
}),
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("Перевод аудита с модели, которая хранит флаг deleted равный true, но при этом не имеет даты удаления в прототип", func(t *testing.T) {
|
|
|
|
|
assert.Equal(t,
|
|
|
|
|
&discount.Audit{
|
|
|
|
|
UpdatedAt: ×tamppb.Timestamp{Seconds: 1674546287},
|
|
|
|
|
CreatedAt: ×tamppb.Timestamp{Seconds: 1674546287},
|
|
|
|
|
},
|
|
|
|
|
transfer.AuditModelToProto(&models.Audit{
|
|
|
|
|
UpdatedAt: time.Unix(1674546287, 0).UTC(),
|
|
|
|
|
Deleted: true,
|
|
|
|
|
CreatedAt: time.Unix(1674546287, 0).UTC(),
|
|
|
|
|
}),
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("Перевод аудита с модели без информации об удалении в прототип", func(t *testing.T) {
|
|
|
|
|
assert.Equal(t,
|
|
|
|
|
&discount.Audit{
|
|
|
|
|
UpdatedAt: ×tamppb.Timestamp{Seconds: 1674546287},
|
|
|
|
|
CreatedAt: ×tamppb.Timestamp{Seconds: 1674546287},
|
|
|
|
|
},
|
|
|
|
|
transfer.AuditModelToProto(&models.Audit{
|
|
|
|
|
UpdatedAt: time.Unix(1674546287, 0).UTC(),
|
|
|
|
|
CreatedAt: time.Unix(1674546287, 0).UTC(),
|
|
|
|
|
}),
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("Перевод аудита с модели в прототип", func(t *testing.T) {
|
|
|
|
|
assert.Equal(t,
|
|
|
|
|
&discount.Audit{
|
|
|
|
|
UpdatedAt: ×tamppb.Timestamp{Seconds: 1674546287},
|
|
|
|
|
DeletedAt: &deletedAtProto,
|
|
|
|
|
Deleted: true,
|
|
|
|
|
CreatedAt: ×tamppb.Timestamp{Seconds: 1674546287},
|
|
|
|
|
},
|
|
|
|
|
transfer.AuditModelToProto(&models.Audit{
|
|
|
|
|
UpdatedAt: time.Unix(1674546287, 0).UTC(),
|
|
|
|
|
DeletedAt: &deletedAtModel,
|
|
|
|
|
Deleted: true,
|
|
|
|
|
CreatedAt: time.Unix(1674546287, 0).UTC(),
|
|
|
|
|
}),
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestAuditProtoToModel(t *testing.T) {
|
|
|
|
|
deletedAtModel := time.Unix(1674546287, 0).UTC()
|
|
|
|
|
deletedAtProto := timestamppb.Timestamp{Seconds: 1674546287}
|
|
|
|
|
|
|
|
|
|
t.Run("Перевод аудита с пустого прототипа в модель", func(t *testing.T) {
|
|
|
|
|
assert.Equal(t, &models.Audit{}, transfer.AuditProtoToModel(&discount.Audit{}))
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("Перевод аудита с nil прототипа в модель", func(t *testing.T) {
|
|
|
|
|
assert.Equal(t, &models.Audit{}, transfer.AuditProtoToModel(nil))
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("Перевод аудита с прототипа без информации об удалении в модель", func(t *testing.T) {
|
|
|
|
|
assert.Equal(t,
|
|
|
|
|
&models.Audit{
|
|
|
|
|
UpdatedAt: time.Unix(1674546287, 0).UTC(),
|
|
|
|
|
CreatedAt: time.Unix(1674546287, 0).UTC(),
|
|
|
|
|
Deleted: true,
|
|
|
|
|
},
|
|
|
|
|
transfer.AuditProtoToModel(&discount.Audit{
|
|
|
|
|
UpdatedAt: ×tamppb.Timestamp{Seconds: 1674546287},
|
|
|
|
|
CreatedAt: ×tamppb.Timestamp{Seconds: 1674546287},
|
|
|
|
|
Deleted: true,
|
|
|
|
|
}),
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("Перевод аудита с прототипа в модель", func(t *testing.T) {
|
|
|
|
|
assert.Equal(t,
|
|
|
|
|
&models.Audit{
|
|
|
|
|
UpdatedAt: time.Unix(1674546287, 0).UTC(),
|
|
|
|
|
DeletedAt: &deletedAtModel,
|
|
|
|
|
Deleted: true,
|
|
|
|
|
CreatedAt: time.Unix(1674546287, 0).UTC(),
|
|
|
|
|
},
|
|
|
|
|
transfer.AuditProtoToModel(&discount.Audit{
|
|
|
|
|
UpdatedAt: ×tamppb.Timestamp{Seconds: 1674546287},
|
|
|
|
|
DeletedAt: &deletedAtProto,
|
|
|
|
|
Deleted: true,
|
|
|
|
|
CreatedAt: ×tamppb.Timestamp{Seconds: 1674546287},
|
|
|
|
|
}),
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
}
|