public function testGetIterator()
 {
     $item = new Item();
     $item->setName('CD-ROM');
     $this->bag->add($item);
     foreach ($this->bag as $bagItem) {
         $this->assertSame($item, $bagItem);
     }
 }
 public function testItems()
 {
     // backward compatibity test using \Omnipay\Common\Item
     $item = new OmnipayItem();
     $item->setName('Foo 1');
     $item->setDescription('Bar description.');
     $item->setPrice(5.0);
     $item->setQuantity(2);
     $bag = new ItemBag(array($item));
     $this->request->setItems($bag);
     $data = $this->request->getData();
     foreach ($bag->all() as $key => $value) {
         /** @var Item $value */
         $index = $key + 1;
         $this->assertSame($data["ITEMNAME{$index}"], $value->getName());
         $this->assertSame($data["ITEMDESC{$index}"], $value->getDescription());
         $this->assertSame($data["ITEMQUANT{$index}"], $value->getQuantity());
         $this->assertSame($data["ITEMPRICE{$index}"], $this->request->formatCurrency($value->getPrice()));
     }
 }
 /**
  * {@inheritDoc}
  *
  * In addition, enforces price is integer value
  */
 public function setPrice($value)
 {
     // @todo would be nicer if this could be done with AbstractRequest currency functions (or similar)
     if (is_float($value) || is_string($value) && strpos($value, '.') !== false) {
         $value = (int) round($value * 100);
     } else {
         $value = (int) $value;
     }
     return parent::setPrice($value);
 }
 /**
  * @param string $value Max length of 40.
  * @return $this
  */
 public function setName($value)
 {
     return parent::setName(substr($value, 0, 40));
 }
 public function testConstructWithParams()
 {
     $item = new Item(['name' => 'Floppy Disk']);
     $this->assertSame('Floppy Disk', $item->getName());
 }