public function testBuild() { $prepareUrl = new PrepareUrl(); $singleParameter = new SingleTestParameter(); $singleParameter->setValue('foo'); $singleParameterIdx = new SingleTestParameterIndexed(4); $singleParameterIdx->setValue(9); $cacheBuster = new CacheBuster(); $cacheBuster->setValue('123'); $singles = [$singleParameter, $cacheBuster, $singleParameterIdx]; $compoundCollection = new CompoundParameterTestCollection(6); $compoundParameter = new CompoundTestParameter(['sku' => 555, 'name' => 'cathy']); $compoundCollection->add($compoundParameter); $compoundParameter2 = new CompoundTestParameter(['sku' => 666, 'name' => 'isa']); $compoundCollection->add($compoundParameter2); $compounds = [$compoundCollection]; $url = $prepareUrl->build('http://test-collector.com', $singles, $compounds); $payload = $prepareUrl->getPayloadParameters(); $expect = ['test' => 'foo', 'testi4' => 9, 'cp6t1id' => 555, 'cp6t1nm' => 'cathy', 'cp6t2id' => 666, 'cp6t2nm' => 'isa', 'z' => '123']; $this->assertEquals($expect, $payload); // assets cache buster is last element $count = 1; foreach ($payload as $key => $value) { if ($count === 7) { $this->assertEquals('z', $key); $this->assertEquals('123', $value); } $count++; } }
/** * Prepares all the Single Parameters to be sent to GA. * * @param SingleParameter[] $singleParameters * @return array */ private function getSingleParametersPayload(array $singleParameters) { $postData = []; $cacheBuster = new CacheBuster(); foreach ($singleParameters as $parameterObj) { if ($parameterObj->getName() === $cacheBuster->getName()) { $this->cacheBuster = $parameterObj->getValue(); continue; } $postData[$parameterObj->getName()] = $parameterObj->getValue(); } return $postData; }