public function testSerializeUnserializeWithTax()
 {
     $item = new Item();
     $item->populate($this->_unit);
     $expected = [];
     foreach ($this->_taxRates as $rate) {
         $expected[$rate->getType()] = $rate->getRate();
     }
     $this->assertEquals($expected, $item->getTaxRates());
     $item = unserialize(serialize($item));
     $this->assertEquals($expected, $item->getTaxRates());
 }
 /**
  * Set the return item from an OrderItem.
  *
  * @param  OrderItem $item
  * @return Assembler
  */
 public function setReturnItemFromOrderItem(OrderItem $item)
 {
     $this->_return->item = $returnItem = new OrderReturnItem();
     $this->setCurrency($item->order->currencyID);
     $returnItem->order = $item->order;
     $returnItem->orderItem = $item;
     $returnItem->listPrice = $item->listPrice;
     $returnItem->actualPrice = $item->actualPrice;
     $returnItem->returnedValue = $item->gross;
     $returnItem->calculatedBalance = 0 - $item->gross;
     $returnItem->net = $item->net;
     $returnItem->discount = $item->discount;
     $returnItem->tax = $item->tax;
     $returnItem->gross = $item->gross;
     $returnItem->rrp = $item->rrp;
     $returnItem->taxRate = $item->taxRate;
     $returnItem->productTaxRate = $item->productTaxRate;
     $returnItem->taxStrategy = $item->taxStrategy;
     $returnItem->productID = $item->productID;
     $returnItem->productName = $item->productName;
     $returnItem->unit = $item->getUnit();
     $returnItem->unitID = $item->unitID;
     $returnItem->unitRevision = $item->unitRevision;
     $returnItem->sku = $item->sku;
     $returnItem->barcode = $item->barcode;
     $returnItem->options = $item->options;
     $returnItem->brand = $item->brand;
     $returnItem->status = $this->_defaultStatus;
     $returnItem->taxes = $item->getTaxRates();
     return $this;
 }