init
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
package mappers
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"apskel-pos-be/internal/entities"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestOrderItemEntityToResponse_WithProductNames(t *testing.T) {
|
||||
// Arrange
|
||||
productID := uuid.New()
|
||||
variantID := uuid.New()
|
||||
orderID := uuid.New()
|
||||
itemID := uuid.New()
|
||||
|
||||
product := entities.Product{
|
||||
ID: productID,
|
||||
Name: "Test Product",
|
||||
}
|
||||
|
||||
productVariant := entities.ProductVariant{
|
||||
ID: variantID,
|
||||
Name: "Test Variant",
|
||||
}
|
||||
|
||||
orderItem := &entities.OrderItem{
|
||||
ID: itemID,
|
||||
OrderID: orderID,
|
||||
ProductID: productID,
|
||||
ProductVariantID: &variantID,
|
||||
Quantity: 2,
|
||||
UnitPrice: 10.0,
|
||||
TotalPrice: 20.0,
|
||||
UnitCost: 5.0,
|
||||
TotalCost: 10.0,
|
||||
Status: entities.OrderItemStatusPending,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
Product: product,
|
||||
ProductVariant: &productVariant,
|
||||
}
|
||||
|
||||
// Act
|
||||
result := OrderItemEntityToResponse(orderItem)
|
||||
|
||||
// Assert
|
||||
assert.NotNil(t, result)
|
||||
assert.Equal(t, itemID, result.ID)
|
||||
assert.Equal(t, orderID, result.OrderID)
|
||||
assert.Equal(t, productID, result.ProductID)
|
||||
assert.Equal(t, "Test Product", result.ProductName)
|
||||
assert.Equal(t, &variantID, result.ProductVariantID)
|
||||
assert.Equal(t, "Test Variant", *result.ProductVariantName)
|
||||
assert.Equal(t, 2, result.Quantity)
|
||||
assert.Equal(t, 10.0, result.UnitPrice)
|
||||
assert.Equal(t, 20.0, result.TotalPrice)
|
||||
}
|
||||
|
||||
func TestOrderItemEntityToResponse_WithoutProductVariant(t *testing.T) {
|
||||
// Arrange
|
||||
productID := uuid.New()
|
||||
orderID := uuid.New()
|
||||
itemID := uuid.New()
|
||||
|
||||
product := entities.Product{
|
||||
ID: productID,
|
||||
Name: "Test Product",
|
||||
}
|
||||
|
||||
orderItem := &entities.OrderItem{
|
||||
ID: itemID,
|
||||
OrderID: orderID,
|
||||
ProductID: productID,
|
||||
ProductVariantID: nil,
|
||||
Quantity: 1,
|
||||
UnitPrice: 15.0,
|
||||
TotalPrice: 15.0,
|
||||
UnitCost: 7.0,
|
||||
TotalCost: 7.0,
|
||||
Status: entities.OrderItemStatusPending,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
Product: product,
|
||||
ProductVariant: nil,
|
||||
}
|
||||
|
||||
// Act
|
||||
result := OrderItemEntityToResponse(orderItem)
|
||||
|
||||
// Assert
|
||||
assert.NotNil(t, result)
|
||||
assert.Equal(t, itemID, result.ID)
|
||||
assert.Equal(t, orderID, result.OrderID)
|
||||
assert.Equal(t, productID, result.ProductID)
|
||||
assert.Equal(t, "Test Product", result.ProductName)
|
||||
assert.Nil(t, result.ProductVariantID)
|
||||
assert.Nil(t, result.ProductVariantName)
|
||||
assert.Equal(t, 1, result.Quantity)
|
||||
assert.Equal(t, 15.0, result.UnitPrice)
|
||||
assert.Equal(t, 15.0, result.TotalPrice)
|
||||
}
|
||||
|
||||
func TestOrderItemEntityToResponse_WithoutProductPreload(t *testing.T) {
|
||||
// Arrange
|
||||
productID := uuid.New()
|
||||
orderID := uuid.New()
|
||||
itemID := uuid.New()
|
||||
|
||||
// Create order item without preloaded product (empty product)
|
||||
orderItem := &entities.OrderItem{
|
||||
ID: itemID,
|
||||
OrderID: orderID,
|
||||
ProductID: productID,
|
||||
ProductVariantID: nil,
|
||||
Quantity: 1,
|
||||
UnitPrice: 10.0,
|
||||
TotalPrice: 10.0,
|
||||
UnitCost: 5.0,
|
||||
TotalCost: 5.0,
|
||||
Status: entities.OrderItemStatusPending,
|
||||
CreatedAt: time.Now(),
|
||||
UpdatedAt: time.Now(),
|
||||
Product: entities.Product{}, // Empty product
|
||||
ProductVariant: nil,
|
||||
}
|
||||
|
||||
// Act
|
||||
result := OrderItemEntityToResponse(orderItem)
|
||||
|
||||
// Assert
|
||||
assert.NotNil(t, result)
|
||||
assert.Equal(t, itemID, result.ID)
|
||||
assert.Equal(t, orderID, result.OrderID)
|
||||
assert.Equal(t, productID, result.ProductID)
|
||||
assert.Equal(t, "", result.ProductName) // Should be empty since product is not preloaded
|
||||
assert.Nil(t, result.ProductVariantID)
|
||||
assert.Nil(t, result.ProductVariantName)
|
||||
}
|
||||
Reference in New Issue
Block a user