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); }
public function testAddPlugin() { $ga = new CMService_GoogleAnalytics_Client(''); $env = new CM_Frontend_Environment(); $ga->addPlugin('Foo'); $this->assertContains('ga("require", "Foo");', $ga->getHtml($env)); $ga->addPlugin('Bar', 'tracker1'); $this->assertContains('ga("require", "Foo");ga("tracker1.require", "Bar");', $ga->getHtml($env)); $ga->addPlugin('Baz', null, ['foo' => true]); $this->assertContains('ga("require", "Foo");ga("tracker1.require", "Bar");ga("require", "Baz", {"foo":true});', $ga->getHtml($env)); $ga->addPlugin('Boo', 'tracker2', ['foo' => true]); $this->assertContains('ga("require", "Foo");ga("tracker1.require", "Bar");ga("require", "Baz", {"foo":true});ga("tracker2.require", "Boo", {"foo":true});', $ga->getHtml($env)); }