Example #1
0
 public function testCanAddSameSkuMoreThanOnce()
 {
     $item1 = new Item(123, 12.5, 1);
     $item2 = new Item(123, 22.8, 1);
     $transaction = new Transaction(1, 12.5);
     $transaction->addItem($item1);
     $transaction->addItem($item2);
     $items = $transaction->getItems();
     $this->assertEquals(1, count($items));
     $item = reset($items);
     $this->assertEquals(2, $item->getQuantity());
 }
Example #2
0
 protected function prepareTransactionItem(Transaction $transaction, Item $item)
 {
     return $this->push('addItem', array($transaction->getId(), $item->getSku(), $item->getProduct(), $item->getCategory(), $item->getPrice(), $item->getQuantity()));
 }
Example #3
0
 public function testHelperRendersItemWithOptionalValuesEmpty()
 {
     $transaction = new Transaction(123, 12.55);
     $item = new Item(456, 9.66, 1);
     $transaction->addItem($item);
     $this->tracker->addTransaction($transaction);
     $expected = '_gaq.push(["_addItem",123,456,null,null,9.66,1])';
     $actual = $this->script->getCode();
     $this->assertContains($expected, $actual);
 }
Example #4
0
 public function testHelperRendersTransactionWithMultipleItems()
 {
     $transaction = new Transaction(123, 12.55);
     $item1 = new Item(456, 9.66, 1, 'Product1', 'Category1');
     $item2 = new Item(789, 15.33, 2, 'Product2', 'Category2');
     $transaction->addItem($item1);
     $transaction->addItem($item2);
     $this->tracker->addTransaction($transaction);
     $expected = 'ga("ecommerce:addItem",{"id":123,"name":"Product1","sku":456,"category":"Category1","price":9.66,"quantity":1});';
     $actual = $this->script->getCode();
     $this->assertContains($expected, $actual);
     $expected = 'ga("ecommerce:addItem",{"id":123,"name":"Product2","sku":789,"category":"Category2","price":15.33,"quantity":2});';
     $this->assertContains($expected, $actual);
 }
Example #5
0
 public function addTransaction(Transaction $transaction)
 {
     $id = $transaction->getId();
     if (array_key_exists($id, $this->transactions)) {
         throw new InvalidArgumentException(sprintf('Cannot add transaction with id %s, it already exists', $id));
     }
     $this->transactions[$id] = $transaction;
 }
Example #6
0
 public function testCanInstantiateTransaction()
 {
     $transaction = new Transaction(123, 12.5);
     $this->assertEquals(123, $transaction->getId());
     $this->assertEquals(12.5, $transaction->getTotal());
 }
Example #7
0
 protected function prepareTransactionItem(Transaction $transaction, Item $item)
 {
     $itemParams = array('id' => $transaction->getId(), 'name' => $item->getProduct());
     $sku = $item->getSku();
     if ($sku !== null) {
         $itemParams['sku'] = $sku;
     }
     $category = $item->getCategory();
     if ($category !== null) {
         $itemParams['category'] = $category;
     }
     $price = $item->getPrice();
     if ($price !== null) {
         $itemParams['price'] = $price;
     }
     $quantity = $item->getQuantity();
     if ($quantity !== null) {
         $itemParams['quantity'] = $quantity;
     }
     $params = array('ecommerce:addItem', $itemParams);
     return $this->callGa($params);
 }