| <?php |
| namespace predictionio\tests\Unit; |
| |
| use GuzzleHttp\Client; |
| use GuzzleHttp\Handler\MockHandler; |
| use GuzzleHttp\HandlerStack; |
| use GuzzleHttp\Middleware; |
| use GuzzleHttp\Psr7\Request; |
| use GuzzleHttp\Psr7\Response; |
| use predictionio\EventClient; |
| |
| class EventClientTest extends \PHPUnit_Framework_TestCase { |
| /** @var EventClient $eventClient */ |
| protected $eventClient; |
| protected $container = []; |
| |
| protected function setUp() { |
| $history=Middleware::History($this->container); |
| $mock=new MockHandler([new Response(200)]); |
| $handler=HandlerStack::create($mock); |
| $handler->push($history); |
| $this->eventClient=new EventClient( |
| "j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O"); |
| $existingOptions = $this->eventClient->client->getConfig(); |
| $existingOptions['handler'] = $handler; |
| $mockClient=new Client($existingOptions); |
| $this->eventClient->client = $mockClient; |
| } |
| |
| public function testSetUser() { |
| $this->eventClient->setUser(1,array('age'=>20)); |
| $result=array_shift($this->container); |
| /** @var Request $request */ |
| $request=$result['request']; |
| $body=json_decode($request->getBody(), true); |
| |
| $this->assertEquals('$set',$body['event']); |
| $this->assertEquals('user',$body['entityType']); |
| $this->assertEquals(1,$body['entityId']); |
| $this->assertEquals(20,$body['properties']['age']); |
| $this->assertNotNull($body['eventTime']); |
| $this->assertEquals('POST',$request->getMethod()); |
| $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri()); |
| } |
| |
| public function testSetUserWithEventTime() { |
| $eventTime='1982-09-25T01:23:45+0800'; |
| |
| $this->eventClient->setUser(1,array('age'=>20), $eventTime); |
| $result=array_shift($this->container); |
| /** @var Request $request */ |
| $request=$result['request']; |
| $body=json_decode($request->getBody(), true); |
| |
| $this->assertEquals('$set',$body['event']); |
| $this->assertEquals($eventTime, $body['eventTime']); |
| } |
| |
| public function testUnsetUser() { |
| $this->eventClient->unsetUser(1,array('age'=>20)); |
| $result=array_shift($this->container); |
| /** @var Request $request */ |
| $request=$result['request']; |
| $body=json_decode($request->getBody(), true); |
| |
| $this->assertEquals('$unset',$body['event']); |
| $this->assertEquals('user',$body['entityType']); |
| $this->assertEquals(1,$body['entityId']); |
| $this->assertEquals(20,$body['properties']['age']); |
| $this->assertNotNull($body['eventTime']); |
| $this->assertEquals('POST',$request->getMethod()); |
| $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri()); |
| } |
| |
| public function testUnsetUserWithEventTime() { |
| $eventTime='1982-09-25T01:23:45+0800'; |
| |
| $this->eventClient->unsetUser(1,array('age'=>20), $eventTime); |
| $result=array_shift($this->container); |
| /** @var Request $request */ |
| $request=$result['request']; |
| $body=json_decode($request->getBody(), true); |
| |
| $this->assertEquals('$unset',$body['event']); |
| $this->assertEquals($eventTime, $body['eventTime']); |
| } |
| |
| /** |
| * @expectedException \predictionio\PredictionIOAPIError |
| */ |
| public function testUnsetUserWithoutProperties() { |
| $this->eventClient->unsetUser(1, array()); |
| } |
| |
| public function testDeleteUser() { |
| $this->eventClient->deleteUser(1); |
| $result=array_shift($this->container); |
| /** @var Request $request */ |
| $request=$result['request']; |
| $body=json_decode($request->getBody(), true); |
| |
| $this->assertEquals('$delete',$body['event']); |
| $this->assertEquals('user',$body['entityType']); |
| $this->assertEquals(1,$body['entityId']); |
| $this->assertNotNull($body['eventTime']); |
| $this->assertEquals('POST',$request->getMethod()); |
| $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri()); |
| } |
| |
| public function testDeleteUserWithEventTime() { |
| $eventTime='1982-09-25T01:23:45+0800'; |
| |
| $this->eventClient->deleteUser(1, $eventTime); |
| $result=array_shift($this->container); |
| /** @var Request $request */ |
| $request=$result['request']; |
| $body=json_decode($request->getBody(), true); |
| |
| $this->assertEquals('$delete',$body['event']); |
| $this->assertEquals($eventTime, $body['eventTime']); |
| } |
| |
| public function testSetItem() { |
| $this->eventClient->setItem(1,array('type'=>'book')); |
| $result=array_shift($this->container); |
| /** @var Request $request */ |
| $request=$result['request']; |
| $body=json_decode($request->getBody(), true); |
| |
| $this->assertEquals('$set',$body['event']); |
| $this->assertEquals('item',$body['entityType']); |
| $this->assertEquals(1,$body['entityId']); |
| $this->assertEquals('book',$body['properties']['type']); |
| $this->assertNotNull($body['eventTime']); |
| $this->assertEquals('POST',$request->getMethod()); |
| $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri()); |
| } |
| |
| public function testSetItemWithEventTime() { |
| $eventTime='1982-09-25T01:23:45+0800'; |
| |
| $this->eventClient->setItem(1,array('type'=>'book'), $eventTime); |
| $result=array_shift($this->container); |
| /** @var Request $request */ |
| $request=$result['request']; |
| $body=json_decode($request->getBody(), true); |
| |
| $this->assertEquals('$set',$body['event']); |
| $this->assertEquals($eventTime, $body['eventTime']); |
| } |
| |
| public function testUnsetItem() { |
| $this->eventClient->unsetItem(1,array('type'=>'book')); |
| $result=array_shift($this->container); |
| /** @var Request $request */ |
| $request=$result['request']; |
| $body=json_decode($request->getBody(), true); |
| |
| $this->assertEquals('$unset',$body['event']); |
| $this->assertEquals('item',$body['entityType']); |
| $this->assertEquals(1,$body['entityId']); |
| $this->assertEquals('book',$body['properties']['type']); |
| $this->assertNotNull($body['eventTime']); |
| $this->assertEquals('POST',$request->getMethod()); |
| $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri()); |
| } |
| |
| public function testUnsetItemWithEventTime() { |
| $eventTime='1982-09-25T01:23:45+0800'; |
| |
| $this->eventClient->unsetItem(1,array('type'=>'book'), $eventTime); |
| $result=array_shift($this->container); |
| /** @var Request $request */ |
| $request=$result['request']; |
| $body=json_decode($request->getBody(), true); |
| |
| $this->assertEquals('$unset',$body['event']); |
| $this->assertEquals($eventTime, $body['eventTime']); |
| } |
| |
| /** |
| * @expectedException \predictionio\PredictionIOAPIError |
| */ |
| public function testUnsetItemWithoutProperties() { |
| $this->eventClient->unsetItem(1, array()); |
| } |
| |
| public function testDeleteItem() { |
| $this->eventClient->deleteItem(1); |
| $result=array_shift($this->container); |
| /** @var Request $request */ |
| $request=$result['request']; |
| $body=json_decode($request->getBody(), true); |
| |
| $this->assertEquals('$delete',$body['event']); |
| $this->assertEquals('item',$body['entityType']); |
| $this->assertEquals(1,$body['entityId']); |
| $this->assertNotNull($body['eventTime']); |
| $this->assertEquals('POST',$request->getMethod()); |
| $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri()); |
| } |
| |
| public function testDeleteItemWithEventTime() { |
| $eventTime='1982-09-25T01:23:45+0800'; |
| |
| $this->eventClient->deleteItem(1, $eventTime); |
| $result=array_shift($this->container); |
| /** @var Request $request */ |
| $request=$result['request']; |
| $body=json_decode($request->getBody(), true); |
| |
| $this->assertEquals('$delete',$body['event']); |
| $this->assertEquals($eventTime, $body['eventTime']); |
| } |
| |
| public function testRecordAction() { |
| $this->eventClient->recordUserActionOnItem('view',1,888, array('count'=>2)); |
| $result=array_shift($this->container); |
| /** @var Request $request */ |
| $request=$result['request']; |
| $body=json_decode($request->getBody(), true); |
| |
| $this->assertEquals('view',$body['event']); |
| $this->assertEquals('user',$body['entityType']); |
| $this->assertEquals(1,$body['entityId']); |
| $this->assertEquals('item',$body['targetEntityType']); |
| $this->assertEquals(888,$body['targetEntityId']); |
| $this->assertEquals(2,$body['properties']['count']); |
| $this->assertNotNull($body['eventTime']); |
| $this->assertEquals('POST',$request->getMethod()); |
| $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri()); |
| } |
| |
| public function testRecordActionWithEventTime() { |
| $eventTime='1982-09-25T01:23:45+0800'; |
| |
| $this->eventClient->recordUserActionOnItem('view',1, 8, array(),$eventTime); |
| $result=array_shift($this->container); |
| /** @var Request $request */ |
| $request=$result['request']; |
| $body=json_decode($request->getBody(), true); |
| |
| $this->assertEquals('view',$body['event']); |
| $this->assertEquals($eventTime, $body['eventTime']); |
| } |
| |
| public function testCreateEvent() { |
| $this->eventClient->createEvent(array( |
| 'event' => 'my_event', |
| 'entityType' => 'user', |
| 'entityId' => 'uid', |
| 'properties' => array('prop1'=>1, |
| 'prop2'=>'value2', |
| 'prop3'=>array(1,2,3), |
| 'prop4'=>true, |
| 'prop5'=>array('a','b','c'), |
| 'prop6'=>4.56 |
| ), |
| 'eventTime' => '2004-12-13T21:39:45.618-07:00' |
| )); |
| $result=array_shift($this->container); |
| /** @var Request $request */ |
| $request=$result['request']; |
| $body=json_decode($request->getBody(), true); |
| |
| $this->assertEquals('my_event',$body['event']); |
| $this->assertEquals('user',$body['entityType']); |
| $this->assertEquals('uid',$body['entityId']); |
| $this->assertEquals(1,$body['properties']['prop1']); |
| $this->assertEquals('value2',$body['properties']['prop2']); |
| $this->assertEquals(array(1,2,3),$body['properties']['prop3']); |
| $this->assertEquals(true,$body['properties']['prop4']); |
| $this->assertEquals(array('a','b','c'),$body['properties']['prop5']); |
| $this->assertEquals(4.56,$body['properties']['prop6']); |
| $this->assertEquals('2004-12-13T21:39:45.618-07:00',$body['eventTime']); |
| $this->assertEquals('POST',$request->getMethod()); |
| $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri()); |
| } |
| |
| public function testGetEvent() { |
| $this->eventClient->getEvent('event_id'); |
| $result=array_shift($this->container); |
| /** @var Request $request */ |
| $request=$result['request']; |
| $body=json_decode($request->getBody(), true); |
| |
| $this->assertEquals('GET',$request->getMethod()); |
| $this->assertEquals('http://localhost:7070/events/event_id.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', |
| $request->getUri()); |
| } |
| |
| |
| |
| |
| } |
| ?> |
| |