89 lines
3.1 KiB
Bash
Executable File
89 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Test script for Product CRUD operations with image_url and printer_type
|
|
echo "Testing Product CRUD Operations with Image URL and Printer Type..."
|
|
|
|
# Build the application
|
|
echo "Building application..."
|
|
go build -o server cmd/server/main.go
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "Build failed!"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Build successful!"
|
|
|
|
# Run database migrations
|
|
echo "Running database migrations..."
|
|
migrate -path migrations -database "postgres://postgres:password@localhost:5432/pos_db?sslmode=disable" up
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "Migration failed!"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Migrations completed successfully!"
|
|
|
|
echo "Product CRUD Operations with Image URL and Printer Type Test Complete!"
|
|
echo ""
|
|
echo "✅ Features implemented:"
|
|
echo "1. ✅ Database Migration (migrations/000024_add_image_and_printer_type_to_products.up.sql)"
|
|
echo "2. ✅ Product Entity Updated (internal/entities/product.go)"
|
|
echo "3. ✅ Product Models Updated (internal/models/product.go)"
|
|
echo "4. ✅ Product Mapper Updated (internal/mappers/product_mapper.go)"
|
|
echo "5. ✅ Product Contract Updated (internal/contract/product_contract.go)"
|
|
echo "6. ✅ Product Transformer Updated (internal/transformer/product_transformer.go)"
|
|
echo "7. ✅ Product Validator Updated (internal/validator/product_validator.go)"
|
|
echo ""
|
|
echo "✅ CRUD Operations Updated:"
|
|
echo "1. ✅ CREATE Product - Supports image_url and printer_type"
|
|
echo "2. ✅ READ Product - Returns image_url and printer_type"
|
|
echo "3. ✅ UPDATE Product - Supports updating image_url and printer_type"
|
|
echo "4. ✅ DELETE Product - No changes needed"
|
|
echo "5. ✅ LIST Products - Returns image_url and printer_type"
|
|
echo ""
|
|
echo "✅ API Contract Changes:"
|
|
echo "- CreateProductRequest: Added image_url and printer_type fields"
|
|
echo "- UpdateProductRequest: Added image_url and printer_type fields"
|
|
echo "- ProductResponse: Added image_url and printer_type fields"
|
|
echo ""
|
|
echo "✅ Validation Rules:"
|
|
echo "- image_url: Optional, max 500 characters"
|
|
echo "- printer_type: Optional, max 50 characters, default 'kitchen'"
|
|
echo ""
|
|
echo "✅ Database Schema:"
|
|
echo "- image_url: VARCHAR(500), nullable"
|
|
echo "- printer_type: VARCHAR(50), default 'kitchen'"
|
|
echo "- Index on printer_type for efficient filtering"
|
|
echo ""
|
|
echo "✅ Example API Usage:"
|
|
echo ""
|
|
echo "CREATE Product:"
|
|
echo 'curl -X POST /api/products \\'
|
|
echo ' -H "Content-Type: application/json" \\'
|
|
echo ' -d "{'
|
|
echo ' \"category_id\": \"uuid\",'
|
|
echo ' \"name\": \"Pizza Margherita\",'
|
|
echo ' \"price\": 12.99,'
|
|
echo ' \"image_url\": \"https://example.com/pizza.jpg\",'
|
|
echo ' \"printer_type\": \"kitchen\"'
|
|
echo ' }"'
|
|
echo ""
|
|
echo "UPDATE Product:"
|
|
echo 'curl -X PUT /api/products/{id} \\'
|
|
echo ' -H "Content-Type: application/json" \\'
|
|
echo ' -d "{'
|
|
echo ' \"image_url\": \"https://example.com/new-pizza.jpg\",'
|
|
echo ' \"printer_type\": \"bar\"'
|
|
echo ' }"'
|
|
echo ""
|
|
echo "GET Product Response:"
|
|
echo '{'
|
|
echo ' \"id\": \"uuid\",'
|
|
echo ' \"name\": \"Pizza Margherita\",'
|
|
echo ' \"price\": 12.99,'
|
|
echo ' \"image_url\": \"https://example.com/pizza.jpg\",'
|
|
echo ' \"printer_type\": \"kitchen\",'
|
|
echo ' \"is_active\": true'
|
|
echo '}' |