/**
  * {@inheritdoc}
  *
  * @param RequestProductItemEntity $requestProductItem
  * @param Constraint|RequestProductItem $constraint
  */
 public function validate($requestProductItem, Constraint $constraint)
 {
     if (!$requestProductItem instanceof RequestProductItemEntity) {
         throw new UnexpectedTypeException($requestProductItem, 'OroB2B\\Bundle\\RFPBundle\\Entity\\RequestProductItem');
     }
     if (null === ($requestProduct = $requestProductItem->getRequestProduct())) {
         $this->addViolation($constraint);
         return;
     }
     if (null === ($product = $requestProduct->getProduct())) {
         $this->addViolation($constraint);
         return;
     }
     if ([] === ($allowedUnits = $product->getAvailableUnitCodes())) {
         $this->addViolation($constraint);
         return;
     }
     if (null === ($productUnit = $requestProductItem->getProductUnit())) {
         $this->addViolation($constraint);
         return;
     }
     if (!in_array($productUnit->getCode(), $allowedUnits, true)) {
         $this->addViolation($constraint);
         return;
     }
 }
 /**
  * @depends testProperties
  */
 public function testAddRequestProductItem()
 {
     $requestProduct = new RequestProduct();
     $requestProductItem = new RequestProductItem();
     $this->assertNull($requestProductItem->getRequestProduct());
     $requestProduct->addRequestProductItem($requestProductItem);
     $this->assertEquals($requestProduct, $requestProductItem->getRequestProduct());
 }