Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
8 / 8
CRAP
100.00% covered (success)
100.00%
12 / 12
Product
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
8 / 8
8
100.00% covered (success)
100.00%
12 / 12
 getName()
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 setName($name)
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 getQuantity()
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 setQuantity($quantity)
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 getUnitPrice()
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getUnitPriceForSerialization()
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 setUnitPrice(MoneyInterface $unitPrice)
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 setUnitPriceFromDeserialization($price)
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
<?php
/**
 * @author Krzysztof Gzocha <krzysztof.gzocha@xsolve.pl>
 */
namespace Team3\PayU\Order\Model\Products;
use Team3\PayU\Order\Model\IsFilledTrait;
use Team3\PayU\Order\Model\Money\Money;
use Team3\PayU\Order\Model\Money\MoneyInterface;
use JMS\Serializer\Annotation as JMS;
use Symfony\Component\Validator\Constraints as Assert;
/**
 * Class Product
 * @package Team3\PayU\Order\Model\Products
 * @JMS\AccessorOrder("alphabetical")
 */
class Product implements ProductInterface
{
    use IsFilledTrait;
    /**
     * @var string
     * @JMS\Type("string")
     * @Assert\NotBlank()
     */
    protected $name;
    /**
     * @var MoneyInterface
     * @JMS\SerializedName("unitPrice")
     * @JMS\Accessor(
     *                     getter="getUnitPriceForSerialization",
     *                     setter="setUnitPriceFromDeserialization"
     *                     )
     * @JMS\Type("integer")
     * @Assert\NotBlank()
     * @Assert\Valid()
     * @Assert\Type(type="object")
     */
    protected $unitPrice;
    /**
     * @var int
     * @JMS\Type("integer")
     * @Assert\NotBlank()
     * @Assert\Type(type="integer")
     * @Assert\GreaterThan(0)
     */
    protected $quantity;
    /**
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }
    /**
     * @param string $name
     *
     * @return Product
     */
    public function setName($name)
    {
        $this->name = $name;
        return $this;
    }
    /**
     * @return int
     */
    public function getQuantity()
    {
        return $this->quantity;
    }
    /**
     * @param int $quantity
     *
     * @return Product
     */
    public function setQuantity($quantity)
    {
        $this->quantity = $quantity;
        return $this;
    }
    /**
     * @return MoneyInterface
     */
    public function getUnitPrice()
    {
        return $this->unitPrice;
    }
    /**
     * @return int
     */
    public function getUnitPriceForSerialization()
    {
        return $this->unitPrice->getValueWithoutSeparation(2);
    }
    /**
     * @param MoneyInterface $unitPrice
     *
     * @return Product
     */
    public function setUnitPrice(MoneyInterface $unitPrice)
    {
        $this->unitPrice = $unitPrice;
        return $this;
    }
    /**
     * @param int $price
     *
     * @return $this
     */
    public function setUnitPriceFromDeserialization($price)
    {
        $this->unitPrice = new Money($price / 100);
        return $this;
    }
}