47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\Service;
 | 
						|
 | 
						|
use App\Contract\Order;
 | 
						|
use App\Contract\ProductEntry;
 | 
						|
use PHPUnit\Framework\TestCase;
 | 
						|
use Symfony\Component\Uid\Uuid;
 | 
						|
 | 
						|
class TrivialPricingStrategyTest extends TestCase
 | 
						|
{
 | 
						|
 | 
						|
    public function testCalculatingSingularProductPrice()
 | 
						|
    {
 | 
						|
        $product = new ProductEntry(productId: 'p1', quantity: 1, price: 2.00, weight: 100);
 | 
						|
 | 
						|
        $sut = new TrivialPricingStrategy();
 | 
						|
 | 
						|
        $this->assertEquals(200, $sut->calculateTotalPriceOfProductEntry($product));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testCalculatingMultipleProductPrice()
 | 
						|
    {
 | 
						|
        $product = new ProductEntry(productId: 'p1', quantity: 5, price: 2.00, weight: 100);
 | 
						|
 | 
						|
        $sut = new TrivialPricingStrategy();
 | 
						|
 | 
						|
        $this->assertEquals(1000, $sut->calculateTotalPriceOfProductEntry($product));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testCalculatingOrderPrice()
 | 
						|
    {
 | 
						|
        $order = new Order(
 | 
						|
            orderId: Uuid::v4(),
 | 
						|
            clientId: Uuid::v4(),
 | 
						|
            products: [
 | 
						|
                new ProductEntry(productId: 'p1', quantity: 5, price: 2.00, weight: 100),
 | 
						|
                new ProductEntry(productId: 'p2', quantity: 2, price: 1.25, weight: 100),
 | 
						|
            ]
 | 
						|
        );
 | 
						|
 | 
						|
        $sut = new TrivialPricingStrategy();
 | 
						|
 | 
						|
        $this->assertEquals(1250, $sut->calculateTotalPriceOfOrder($order));
 | 
						|
    }
 | 
						|
}
 |