mirror of
				https://github.com/kevinveenbirkenbach/coding-challenge-online-shop.git
				synced 2025-11-04 11:07:58 +00:00 
			
		
		
		
	Implemented order and tests
This commit is contained in:
		
							
								
								
									
										89
									
								
								src/entity/order/Order.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								src/entity/order/Order.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,89 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace entity\order;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Doctrine\Common\Collections\ArrayCollection;
 | 
				
			||||||
 | 
					use entity\product\ProductInterface;
 | 
				
			||||||
 | 
					use entity\user\UserInterface;
 | 
				
			||||||
 | 
					use entity\user\User;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author kevinfrantz
 | 
				
			||||||
 | 
					 *        
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					final class Order implements OrderInterface
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @var bool
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private $status;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @var ArrayCollection
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private $products;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @var int
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private $id;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @var User
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private $customer;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public function __construct(){
 | 
				
			||||||
 | 
					        $this->products = new ArrayCollection();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public function removeProduct(ProductInterface $product): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->products->remove($product->getId());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function addProduct(ProductInterface $product): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->products->set($product->getId(), $product);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getId(): int
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->id;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getProducts(): ArrayCollection
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->products;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getStatus(): bool
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->status;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function setCustomer(UserInterface $customer)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->customer = $customer;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function setStatus(bool $status): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->status = $status;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function getCustomer(): UserInterface
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return $this->customer;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public function setId(int $id): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->id = $id;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -40,6 +40,8 @@ interface OrderInterface
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    public function getId():int;
 | 
					    public function getId():int;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    public function setId(int $id):void;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return UserInterface
 | 
					     * @return UserInterface
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
@@ -48,7 +50,7 @@ interface OrderInterface
 | 
				
			|||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @param UserInterface $customer
 | 
					     * @param UserInterface $customer
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public function setCutomer(UserInterface $customer);
 | 
					    public function setCustomer(UserInterface $customer);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @param bool $status
 | 
					     * @param bool $status
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										67
									
								
								src/entity/order/OrderTest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								src/entity/order/OrderTest.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					namespace entity\order;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use PHPUnit\Framework\TestCase;
 | 
				
			||||||
 | 
					use entity\user\User;
 | 
				
			||||||
 | 
					use entity\product\Product;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author kevinfrantz
 | 
				
			||||||
 | 
					 *        
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class OrderTest extends TestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    const ID = '123456';
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @var Order
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    protected $order;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @var User
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    protected $customer;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @var Product
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    protected $product;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    protected function setUp():void{
 | 
				
			||||||
 | 
					        $this->order = new Order();
 | 
				
			||||||
 | 
					        $this->customer = new User();
 | 
				
			||||||
 | 
					        $this->product = new Product();
 | 
				
			||||||
 | 
					        $this->product->setId(1234);
 | 
				
			||||||
 | 
					        $this->order->setId('123456');
 | 
				
			||||||
 | 
					        $this->order->setCustomer($this->customer);
 | 
				
			||||||
 | 
					        $this->order->setStatus(true);
 | 
				
			||||||
 | 
					        $this->order->addProduct($this->product);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public function testId():void{
 | 
				
			||||||
 | 
					        $this->assertEquals(self::ID, $this->order->getId());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public function testCustomer():void{
 | 
				
			||||||
 | 
					        $this->assertEquals($this->customer, $this->order->getCustomer());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public function testStatus():void{
 | 
				
			||||||
 | 
					        $this->assertEquals(true, $this->order->getStatus());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public function testAdd():void{
 | 
				
			||||||
 | 
					        $this->assertEquals($this->product, $this->order->getProducts()->get($this->product->getId()));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public function testRemove():void{
 | 
				
			||||||
 | 
					        $this->order->removeProduct($this->product);
 | 
				
			||||||
 | 
					        $this->assertEquals(false, $this->order->getProducts()->contains($this->product));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -3,7 +3,6 @@ namespace entity\product;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use entity\price\PriceInterface;
 | 
					use entity\price\PriceInterface;
 | 
				
			||||||
use entity\image\ImageInterface;
 | 
					use entity\image\ImageInterface;
 | 
				
			||||||
use entity\color\ColorInterface;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Attention:
 | 
					 * Attention:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user