package transformer import ( "encoding/json" "testing" "apskel-pos-be/internal/contract" "apskel-pos-be/internal/models" "github.com/google/uuid" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestCreateOrderContractToModelCarriesWeight(t *testing.T) { weight := 1.25 result := CreateOrderContractToModel(&contract.CreateOrderRequest{ OutletID: uuid.New(), UserID: uuid.New(), OrderItems: []contract.CreateOrderItemRequest{ { ProductID: uuid.New(), Quantity: 1, Weight: &weight, }, }, }) require.Len(t, result.OrderItems, 1) require.NotNil(t, result.OrderItems[0].Weight) require.Equal(t, weight, *result.OrderItems[0].Weight) } func TestAddToOrderContractToModelCarriesWeight(t *testing.T) { weight := 0.8 result := AddToOrderContractToModel(&contract.AddToOrderRequest{ OrderItems: []contract.CreateOrderItemRequest{ { ProductID: uuid.New(), Quantity: 1, Weight: &weight, }, }, }) require.Len(t, result.OrderItems, 1) require.NotNil(t, result.OrderItems[0].Weight) require.Equal(t, weight, *result.OrderItems[0].Weight) } func TestOrderModelToContractCarriesEarnings(t *testing.T) { got := OrderModelToContract(&models.OrderResponse{PointsEarned: 875, CoinsEarned: 3}) assert.Equal(t, int64(875), got.PointsEarned) assert.Equal(t, int64(3), got.CoinsEarned) body, err := json.Marshal(OrderModelToContract(&models.OrderResponse{})) assert.NoError(t, err) assert.Contains(t, string(body), `"points_earned":0`, "present as 0 when nothing was earned") assert.Contains(t, string(body), `"coins_earned":0`) }