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()); }
protected function prepareTransactionItem(Transaction $transaction, Item $item) { return $this->push('addItem', array($transaction->getId(), $item->getSku(), $item->getProduct(), $item->getCategory(), $item->getPrice(), $item->getQuantity())); }
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); }
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); }
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; }
public function testCanInstantiateTransaction() { $transaction = new Transaction(123, 12.5); $this->assertEquals(123, $transaction->getId()); $this->assertEquals(12.5, $transaction->getTotal()); }
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); }