예제 #1
0
 /**
  * Call the client adapter
  *
  * @param $tracking
  * @throws Exception\InvalidArgumentException
  * @throws Exception\MissingConfigurationException
  * @return Request\TrackingRequestCollection
  */
 private function callEndpoint($tracking)
 {
     $trackingHolder = is_array($tracking) ? $tracking : array($tracking);
     $trackingCollection = new Request\TrackingRequestCollection();
     foreach ($trackingHolder as $tracking) {
         if (!$tracking instanceof Tracking\AbstractTracking) {
             continue;
         }
         $payloadData = $this->getTrackingPayloadData($tracking);
         $trackingRequest = new Request\TrackingRequest($payloadData);
         $trackingCollection->add($trackingRequest);
     }
     $adapterOptions = $this->getOption('adapter');
     $clientAdapter = $this->clientAdapter;
     $clientAdapter->setOptions($adapterOptions);
     return $clientAdapter->send($this->apiEndpointUrl, $trackingCollection);
 }
 public function testSingleTracking()
 {
     $service = new GATracking('foo');
     $trackingRequest = new TrackingRequest();
     $trackingRequest->setPayload(array('foo' => 'bar'));
     $trackingRequest->setResponseHeader(array('baz' => 'fooBar'));
     $collection = new TrackingRequestCollection();
     $collection->add($trackingRequest);
     $clientMock = $this->getMock('Racecore\\GATracking\\Client\\Adapter\\Socket');
     $clientMock->expects($this->once())->method('send')->will($this->returnValue($collection));
     $tracking = $this->getMock('Racecore\\GATracking\\Tracking\\Event');
     $tracking->expects($this->once())->method('getPackage')->will($this->returnValue(array('test' => 'bar')));
     $service->setClientAdapter($clientMock);
     $response = $service->sendTracking($tracking);
     $responsePayload = $response->getPayload();
     $responseHeader = $response->getResponseHeader();
     $this->assertInstanceOf('Racecore\\GATracking\\Request\\TrackingRequest', $response);
     $this->assertArrayHasKey('foo', $responsePayload);
     $this->assertEquals('bar', $responsePayload['foo']);
     $this->assertArrayHasKey('baz', $responseHeader);
     $this->assertEquals('fooBar', $responseHeader['baz']);
 }