public function testAddSale() { $googleAnalytics = new CMService_GoogleAnalytics_Client(''); $environment = new CM_Frontend_Environment(); $js = $googleAnalytics->getJs($environment); $this->assertNotContains('ga("require", "ecommerce")', $js); $this->assertNotContains('ecommerce:addTransaction', $js); $this->assertNotContains('ecommerce:addItem', $js); $this->assertNotContains('ecommerce:send', $js); $googleAnalytics->addSale('t123', 'p123', 1.23); $js = $googleAnalytics->getJs($environment); $this->assertContains('ga("require", "ecommerce")', $js); $this->assertSame(1, substr_count($js, 'ga("ecommerce:addTransaction"')); $this->assertSame(1, substr_count($js, 'ga("ecommerce:addItem"')); $this->assertSame(1, substr_count($js, 'ga("ecommerce:send");')); $this->assertContains('ga("ecommerce:addTransaction", {"id":"t123","revenue":1.23});', $js); $this->assertContains('ga("ecommerce:addItem", {"id":"t123","name":"product-p123","sku":"p123","price":1.23,"quantity":1});', $js); $googleAnalytics->addSale('t123', 'p456', 4.56); $js = $googleAnalytics->getJs($environment); $this->assertSame(1, substr_count($js, 'ga("ecommerce:addTransaction"')); $this->assertSame(2, substr_count($js, 'ga("ecommerce:addItem"')); $this->assertSame(1, substr_count($js, 'ga("ecommerce:send");')); $this->assertContains('ga("ecommerce:addTransaction", {"id":"t123","revenue":5.79});', $js); $this->assertContains('ga("ecommerce:addItem", {"id":"t123","name":"product-p123","sku":"p123","price":1.23,"quantity":1});', $js); $this->assertContains('ga("ecommerce:addItem", {"id":"t123","name":"product-p456","sku":"p456","price":4.56,"quantity":1});', $js); $googleAnalytics->addSale('t789', 'p789', 7.89); $js = $googleAnalytics->getJs($environment); $this->assertSame(2, substr_count($js, 'ga("ecommerce:addTransaction"')); $this->assertSame(3, substr_count($js, 'ga("ecommerce:addItem"')); $this->assertSame(1, substr_count($js, 'ga("ecommerce:send");')); $this->assertContains('ga("ecommerce:addTransaction", {"id":"t123","revenue":5.79});', $js); $this->assertContains('ga("ecommerce:addItem", {"id":"t123","name":"product-p123","sku":"p123","price":1.23,"quantity":1});', $js); $this->assertContains('ga("ecommerce:addItem", {"id":"t123","name":"product-p456","sku":"p456","price":4.56,"quantity":1});', $js); $this->assertContains('ga("ecommerce:addTransaction", {"id":"t789","revenue":7.89});', $js); $this->assertContains('ga("ecommerce:addItem", {"id":"t789","name":"product-p789","sku":"p789","price":7.89,"quantity":1});', $js); }