/** * Set the items in this order * * @param ItemBag|array $items An array of items in this order * @return AbstractRequest */ public function setItems($items) { if (!empty($items) && !$items instanceof ItemBag) { foreach ($items as &$item) { $item = new Item($item); } } parent::setItems($items); }
public function testMixedBasketWithSpecialChars() { $items = new \Omnipay\Common\ItemBag(array(new \Omnipay\Common\Item(array('name' => "Denisé's Odd & Wierd £name? #12345678901234567890123456789012345678901234567890123456789012345678901234567890", 'description' => 'Description', 'quantity' => 2, 'price' => 4.23)), array('name' => "Denisé's \"Odd\" & Wierd £discount? #", 'description' => 'My Offer', 'quantity' => 2, 'price' => -0.1), array('name' => '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901', 'description' => 'My 2nd Offer', 'quantity' => 1, 'price' => -1.6))); // Names/descriptions should be max 100 characters in length, once invalid characters have been removed. $expected = '<basket><item>' . '<description>Denis\'s Odd & Wierd name 123456789012345678901234567890123456789012345678901234567890123456789012345</description><quantity>2</quantity>' . '<unitNetAmount>4.23</unitNetAmount><unitTaxAmount>0.00</unitTaxAmount>' . '<unitGrossAmount>4.23</unitGrossAmount><totalGrossAmount>8.46</totalGrossAmount>' . '</item><discounts>' . '<discount><fixed>0.2</fixed><description>Denis\'s "Odd" Wierd discount? #</description></discount>' . '<discount><fixed>1.6</fixed><description>1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890</description></discount>' . '</discounts></basket>'; $this->request->setItems($items); $data = $this->request->getData(); $this->assertArrayHasKey('BasketXML', $data); $this->assertContains($expected, $data['BasketXML'], 'Basket XML does not match the expected output'); }
/** * Set items for request * * Cast the items to instances of \Omnipay\BarclaysEpdq\Item * * @param array|\Omnipay\Common\ItemBag|\Omnipay\Common\Item[] $items * @return AbstractRequest */ public function setItems($items) { $newItems = new ItemBag(); foreach ($items as $item) { $newItems->add(new Item($item->getParameters())); } return parent::setItems($newItems); }