PSR-2
Project: http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/repo Commit: http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/commit/2136b2ea Tree: http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/tree/2136b2ea Diff: http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/diff/2136b2ea Branch: refs/heads/PIO-163 Commit: 2136b2ea5f23b040f135af8e0142ceaaf1e267e3 Parents: 8ceca26 Author: Donald Szeto <don...@apache.org> Authored: Wed Sep 12 10:56:29 2018 -0700 Committer: Donald Szeto <don...@apache.org> Committed: Wed Sep 12 10:56:29 2018 -0700 ---------------------------------------------------------------------- examples/ItemrankImport.php | 21 +- examples/ItemrankQuery.php | 6 +- examples/SampleEvent.php | 123 +++--- src/predictionio/BaseClient.php | 96 ++--- src/predictionio/EngineClient.php | 41 +- src/predictionio/EventClient.php | 490 +++++++++++---------- src/predictionio/Exporter.php | 22 +- src/predictionio/FileExporter.php | 13 +- src/predictionio/PredictionIOAPIError.php | 6 +- tests/Unit/EngineClientTest.php | 63 ++- tests/Unit/EventClientTest.php | 564 +++++++++++++------------ tests/Unit/ExporterTest.php | 43 +- tests/Unit/FileExporterTest.php | 30 +- 13 files changed, 802 insertions(+), 716 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/2136b2ea/examples/ItemrankImport.php ---------------------------------------------------------------------- diff --git a/examples/ItemrankImport.php b/examples/ItemrankImport.php index 6d1c551..4bdd0e5 100644 --- a/examples/ItemrankImport.php +++ b/examples/ItemrankImport.php @@ -26,24 +26,21 @@ echo($response); // set user - generate 10 users for ($u=1; $u<=10; $u++) { - $response=$client->setUser($u, array('age'=>20+$u, 'gender'=>'M')); - print_r($response); + $response=$client->setUser($u, array('age'=>20+$u, 'gender'=>'M')); + print_r($response); } // set item - generate 50 items for ($i=1; $i<=50; $i++) { - $response=$client->setItem($i, array('itypes'=>array('1'))); - print_r($response); + $response=$client->setItem($i, array('itypes'=>array('1'))); + print_r($response); } // record event - each user randomly views 10 items for ($u=1; $u<=10; $u++) { - for ($count=0; $count<10; $count++) { - $i = rand(1,50); - $response=$client->recordUserActionOnItem('view', $u, $i); - print_r($response); - } + for ($count=0; $count<10; $count++) { + $i = rand(1, 50); + $response=$client->recordUserActionOnItem('view', $u, $i); + print_r($response); + } } - - -?> http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/2136b2ea/examples/ItemrankQuery.php ---------------------------------------------------------------------- diff --git a/examples/ItemrankQuery.php b/examples/ItemrankQuery.php index 7ad60ae..0598a51 100644 --- a/examples/ItemrankQuery.php +++ b/examples/ItemrankQuery.php @@ -25,8 +25,6 @@ $response=$client->getStatus(); // Rank item 1 to 5 for each user for ($i=1; $i<=10; $i++) { - $response=$client->sendQuery(array('uid'=>$i, 'iids'=>array(1,2,3,4,5))); - print_r($response); + $response=$client->sendQuery(array('uid'=>$i, 'iids'=>array(1,2,3,4,5))); + print_r($response); } - -?> http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/2136b2ea/examples/SampleEvent.php ---------------------------------------------------------------------- diff --git a/examples/SampleEvent.php b/examples/SampleEvent.php index 01b4a6a..f813a45 100644 --- a/examples/SampleEvent.php +++ b/examples/SampleEvent.php @@ -21,64 +21,69 @@ use predictionio\EventClient; use predictionio\PredictionIOAPIError; try { - // check Event Server status - $client = new EventClient( - "j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O"); - $response=$client->getStatus(); - echo($response); - - // set user with event time - $response=$client->setUser(9, array('age'=>10), - '2014-01-01T10:20:30.400+08:00'); - print_r($response); - - // set user - $response=$client->setUser(8, array('age'=>20, 'gender'=>'M')); - print_r($response); - - // unset user - $response=$client->unsetUser(8, array('age'=>20)); - print_r($response); - - // delete user - $response=$client->deleteUser(9); - print_r($response); - - // set item with event time - $response=$client->setItem(3, array('itypes'=>array('1')), - '2013-12-20T05:15:25.350+08:00'); - print_r($response); - - // set item - $response=$client->setItem(2, array('itypes'=>array('1'))); - print_r($response); - - // unset item - $response=$client->unsetItem(2, array('itypes'=>array('1'))); - print_r($response); - - // delete item - $response=$client->deleteItem(3, '2000-01-01T01:01:01.001+01:00'); - print_r($response); - - // record user action on item - $response=$client->recordUserActionOnItem('view', 8, 2); - print_r($response); - - // create event - $response=$client->createEvent(array( - 'event' => 'my_event', - 'entityType' => 'user', - 'entityId' => '8', - 'properties' => array('prop1'=>1, 'prop2'=>2), - )); - print_r($response); - - // get event - $response=$client->getEvent('U_7eotSbeeK0BwshqEfRFAAAAUm-8gOyjP3FR73aBFo'); - print_r($response); - + // check Event Server status + $client = new EventClient( + "j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O" + ); + $response=$client->getStatus(); + echo($response); + + // set user with event time + $response=$client->setUser( + 9, + array('age'=>10), + '2014-01-01T10:20:30.400+08:00' + ); + print_r($response); + + // set user + $response=$client->setUser(8, array('age'=>20, 'gender'=>'M')); + print_r($response); + + // unset user + $response=$client->unsetUser(8, array('age'=>20)); + print_r($response); + + // delete user + $response=$client->deleteUser(9); + print_r($response); + + // set item with event time + $response=$client->setItem( + 3, + array('itypes'=>array('1')), + '2013-12-20T05:15:25.350+08:00' + ); + print_r($response); + + // set item + $response=$client->setItem(2, array('itypes'=>array('1'))); + print_r($response); + + // unset item + $response=$client->unsetItem(2, array('itypes'=>array('1'))); + print_r($response); + + // delete item + $response=$client->deleteItem(3, '2000-01-01T01:01:01.001+01:00'); + print_r($response); + + // record user action on item + $response=$client->recordUserActionOnItem('view', 8, 2); + print_r($response); + + // create event + $response=$client->createEvent(array( + 'event' => 'my_event', + 'entityType' => 'user', + 'entityId' => '8', + 'properties' => array('prop1'=>1, 'prop2'=>2), + )); + print_r($response); + + // get event + $response=$client->getEvent('U_7eotSbeeK0BwshqEfRFAAAAUm-8gOyjP3FR73aBFo'); + print_r($response); } catch (PredictionIOAPIError $e) { - echo $e->getMessage(); + echo $e->getMessage(); } -?> http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/2136b2ea/src/predictionio/BaseClient.php ---------------------------------------------------------------------- diff --git a/src/predictionio/BaseClient.php b/src/predictionio/BaseClient.php index 877ef44..83da150 100644 --- a/src/predictionio/BaseClient.php +++ b/src/predictionio/BaseClient.php @@ -24,59 +24,61 @@ use GuzzleHttp\Exception\ClientException; * Base client for Event and Engine client * */ -abstract class BaseClient { - private $baseUrl; - public $client; +abstract class BaseClient +{ + private $baseUrl; + public $client; - /** - * @param string $baseUrl Base URL to the server - * @param float $timeout Timeout of the request in seconds. Use 0 to wait indefinitely - * @param float $connectTimeout Number of seconds to wait while trying to connect to a server - */ - public function __construct($baseUrl, $timeout, $connectTimeout) { - $this->baseUrl = $baseUrl; - $this->client = new Client([ + /** + * @param string $baseUrl Base URL to the server + * @param float $timeout Timeout of the request in seconds. Use 0 to wait indefinitely + * @param float $connectTimeout Number of seconds to wait while trying to connect to a server + */ + public function __construct($baseUrl, $timeout, $connectTimeout) + { + $this->baseUrl = $baseUrl; + $this->client = new Client([ 'base_uri' => $this->baseUrl, 'timeout' => $timeout, 'connect_timeout' => $connectTimeout - ]); - - } + ]); + } - /** - * Get the status of the Event Server or Engine Instance - * - * @return string status - */ - public function getStatus() { - return $this->client->get('/')->getBody(); - } + /** + * Get the status of the Event Server or Engine Instance + * + * @return string status + */ + public function getStatus() + { + return $this->client->get('/')->getBody(); + } - /** - * Send a HTTP request to the server - * - * @param string $method HTTP request method - * @param string $url Relative or absolute url - * @param string $body HTTP request body - * - * @return array JSON response - * @throws PredictionIOAPIError Request error - */ - protected function sendRequest($method, $url, $body) { - $options = [ - 'headers' => [ - 'Accept-Encoding' => 'gzip', - 'Content-Type' => 'application/json', - ], - 'body' => $body, - ]; + /** + * Send a HTTP request to the server + * + * @param string $method HTTP request method + * @param string $url Relative or absolute url + * @param string $body HTTP request body + * + * @return array JSON response + * @throws PredictionIOAPIError Request error + */ + protected function sendRequest($method, $url, $body) + { + $options = [ + 'headers' => [ + 'Accept-Encoding' => 'gzip', + 'Content-Type' => 'application/json', + ], + 'body' => $body, + ]; - try { - $response = $this->client->request($method, $url, $options); - return json_decode($response->getBody(), true); - } catch (ClientException $e) { - throw new PredictionIOAPIError($e->getMessage()); + try { + $response = $this->client->request($method, $url, $options); + return json_decode($response->getBody(), true); + } catch (ClientException $e) { + throw new PredictionIOAPIError($e->getMessage()); + } } - } } -?> http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/2136b2ea/src/predictionio/EngineClient.php ---------------------------------------------------------------------- diff --git a/src/predictionio/EngineClient.php b/src/predictionio/EngineClient.php index 258db0f..7355937 100644 --- a/src/predictionio/EngineClient.php +++ b/src/predictionio/EngineClient.php @@ -21,7 +21,8 @@ namespace predictionio; * Client for connecting to an Engine Instance * */ -class EngineClient extends BaseClient { +class EngineClient extends BaseClient +{ /** * @param string Base URL to the Engine Instance. Default is localhost:8000. @@ -30,23 +31,25 @@ class EngineClient extends BaseClient { * @param float Number of seconds to wait while trying to connect to a server. * Default is 5. */ - public function __construct($baseUrl="http://localhost:8000", - $timeout=0, $connectTimeout=5 ) { - parent::__construct($baseUrl, $timeout, $connectTimeout); - } + public function __construct( + $baseUrl="http://localhost:8000", + $timeout=0, + $connectTimeout=5 + ) { + parent::__construct($baseUrl, $timeout, $connectTimeout); + } - /** - * Send prediction query to an Engine Instance - * - * @param array Query - * - * @return array JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function sendQuery(array $query) { - return $this->sendRequest("POST", "/queries.json", json_encode($query)); - } + /** + * Send prediction query to an Engine Instance + * + * @param array Query + * + * @return array JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function sendQuery(array $query) + { + return $this->sendRequest("POST", "/queries.json", json_encode($query)); + } } - -?> http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/2136b2ea/src/predictionio/EventClient.php ---------------------------------------------------------------------- diff --git a/src/predictionio/EventClient.php b/src/predictionio/EventClient.php index b8eb1e2..7a31bc7 100644 --- a/src/predictionio/EventClient.php +++ b/src/predictionio/EventClient.php @@ -16,6 +16,7 @@ */ namespace predictionio; + use GuzzleHttp\Client; use \DateTime; @@ -23,260 +24,287 @@ use \DateTime; * Client for connecting to an Event Server * */ -class EventClient extends BaseClient { - const DATE_TIME_FORMAT = DateTime::ISO8601; - private $accessKey; - private $eventUrl; - - /** - * @param string Access Key - * @param string Base URL to the Event Server. Default is localhost:7070. - * @param float Timeout of the request in seconds. Use 0 to wait indefinitely - * Default is 0. - * @param float Number of seconds to wait while trying to connect to a server. - * Default is 5. - */ - public function __construct($accessKey, $baseUrl='http://localhost:7070', - $timeout=0, $connectTimeout=5 ) { - parent::__construct($baseUrl, $timeout, $connectTimeout); - $this->accessKey = $accessKey; - $this->eventUrl = "/events.json?accessKey=$this->accessKey"; - } +class EventClient extends BaseClient +{ + const DATE_TIME_FORMAT = DateTime::ISO8601; + private $accessKey; + private $eventUrl; - private function getEventTime($eventTime) { - $result = $eventTime; - if (!isset($eventTime)) { - $result = (new DateTime('NOW'))->format(self::DATE_TIME_FORMAT); + /** + * @param string Access Key + * @param string Base URL to the Event Server. Default is localhost:7070. + * @param float Timeout of the request in seconds. Use 0 to wait indefinitely + * Default is 0. + * @param float Number of seconds to wait while trying to connect to a server. + * Default is 5. + */ + public function __construct( + $accessKey, + $baseUrl='http://localhost:7070', + $timeout=0, + $connectTimeout=5 + ) { + parent::__construct($baseUrl, $timeout, $connectTimeout); + $this->accessKey = $accessKey; + $this->eventUrl = "/events.json?accessKey=$this->accessKey"; } - return $result; - } + private function getEventTime($eventTime) + { + $result = $eventTime; + if (!isset($eventTime)) { + $result = (new DateTime('NOW'))->format(self::DATE_TIME_FORMAT); + } - /** - * Set a user entity - * - * @param int|string User Id - * @param array Properties of the user entity to set - * @param string Time of the event in ISO 8601 format - * (e.g. 2014-09-09T16:17:42.937-08:00). - * Default is the current time. - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function setUser($uid, array $properties=array(), $eventTime=null) { - $eventTime = $this->getEventTime($eventTime); + return $result; + } - // casting to object so that an empty array would be represented as {} - if (empty($properties)) $properties = (object)$properties; + /** + * Set a user entity + * + * @param int|string User Id + * @param array Properties of the user entity to set + * @param string Time of the event in ISO 8601 format + * (e.g. 2014-09-09T16:17:42.937-08:00). + * Default is the current time. + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function setUser($uid, array $properties=array(), $eventTime=null) + { + $eventTime = $this->getEventTime($eventTime); - $json = json_encode([ - 'event' => '$set', - 'entityType' => 'user', - 'entityId' => $uid, - 'properties' => $properties, - 'eventTime' => $eventTime, - ]); + // casting to object so that an empty array would be represented as {} + if (empty($properties)) { + $properties = (object)$properties; + } - return $this->sendRequest('POST', $this->eventUrl, $json); - } + $json = json_encode([ + 'event' => '$set', + 'entityType' => 'user', + 'entityId' => $uid, + 'properties' => $properties, + 'eventTime' => $eventTime, + ]); - /** - * Unset a user entity - * - * @param int|string User Id - * @param array Properties of the user entity to unset - * @param string Time of the event in ISO 8601 format - * (e.g. 2014-09-09T16:17:42.937-08:00). - * Default is the current time. - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function unsetUser($uid, array $properties, $eventTime=null) { - $eventTime = $this->getEventTime($eventTime); - if (empty($properties)) - throw new PredictionIOAPIError('Specify at least one property'); + return $this->sendRequest('POST', $this->eventUrl, $json); + } - $json = json_encode([ - 'event' => '$unset', - 'entityType' => 'user', - 'entityId' => $uid, - 'properties' => $properties, - 'eventTime' => $eventTime, - ]); + /** + * Unset a user entity + * + * @param int|string User Id + * @param array Properties of the user entity to unset + * @param string Time of the event in ISO 8601 format + * (e.g. 2014-09-09T16:17:42.937-08:00). + * Default is the current time. + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function unsetUser($uid, array $properties, $eventTime=null) + { + $eventTime = $this->getEventTime($eventTime); + if (empty($properties)) { + throw new PredictionIOAPIError('Specify at least one property'); + } - return $this->sendRequest('POST', $this->eventUrl, $json); - } + $json = json_encode([ + 'event' => '$unset', + 'entityType' => 'user', + 'entityId' => $uid, + 'properties' => $properties, + 'eventTime' => $eventTime, + ]); - /** - * Delete a user entity - * - * @param int|string User Id - * @param string Time of the event in ISO 8601 format - * (e.g. 2014-09-09T16:17:42.937-08:00). - * Default is the current time. - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function deleteUser($uid, $eventTime=null) { - $eventTime = $this->getEventTime($eventTime); + return $this->sendRequest('POST', $this->eventUrl, $json); + } + + /** + * Delete a user entity + * + * @param int|string User Id + * @param string Time of the event in ISO 8601 format + * (e.g. 2014-09-09T16:17:42.937-08:00). + * Default is the current time. + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function deleteUser($uid, $eventTime=null) + { + $eventTime = $this->getEventTime($eventTime); - $json = json_encode([ - 'event' => '$delete', - 'entityType' => 'user', - 'entityId' => $uid, - 'eventTime' => $eventTime, - ]); + $json = json_encode([ + 'event' => '$delete', + 'entityType' => 'user', + 'entityId' => $uid, + 'eventTime' => $eventTime, + ]); - return $this->sendRequest('POST', $this->eventUrl, $json); - } + return $this->sendRequest('POST', $this->eventUrl, $json); + } - /** - * Set an item entity - * - * @param int|string Item Id - * @param array Properties of the item entity to set - * @param string Time of the event in ISO 8601 format - * (e.g. 2014-09-09T16:17:42.937-08:00). - * Default is the current time. - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function setItem($iid, array $properties=array(), $eventTime=null) { - $eventTime = $this->getEventTime($eventTime); - if (empty($properties)) $properties = (object)$properties; - $json = json_encode([ - 'event' => '$set', - 'entityType' => 'item', - 'entityId' => $iid, - 'properties' => $properties, - 'eventTime' => $eventTime, - ]); + /** + * Set an item entity + * + * @param int|string Item Id + * @param array Properties of the item entity to set + * @param string Time of the event in ISO 8601 format + * (e.g. 2014-09-09T16:17:42.937-08:00). + * Default is the current time. + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function setItem($iid, array $properties=array(), $eventTime=null) + { + $eventTime = $this->getEventTime($eventTime); + if (empty($properties)) { + $properties = (object)$properties; + } + $json = json_encode([ + 'event' => '$set', + 'entityType' => 'item', + 'entityId' => $iid, + 'properties' => $properties, + 'eventTime' => $eventTime, + ]); - return $this->sendRequest('POST', $this->eventUrl, $json); - } + return $this->sendRequest('POST', $this->eventUrl, $json); + } - /** - * Unset an item entity - * - * @param int|string Item Id - * @param array Properties of the item entity to unset - * @param string Time of the event in ISO 8601 format - * (e.g. 2014-09-09T16:17:42.937-08:00). - * Default is the current time. - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function unsetItem($iid, array $properties, $eventTime=null) { - $eventTime = $this->getEventTime($eventTime); - if (empty($properties)) - throw new PredictionIOAPIError('Specify at least one property'); - $json = json_encode([ - 'event' => '$unset', - 'entityType' => 'item', - 'entityId' => $iid, - 'properties' => $properties, - 'eventTime' => $eventTime, - ]); + /** + * Unset an item entity + * + * @param int|string Item Id + * @param array Properties of the item entity to unset + * @param string Time of the event in ISO 8601 format + * (e.g. 2014-09-09T16:17:42.937-08:00). + * Default is the current time. + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function unsetItem($iid, array $properties, $eventTime=null) + { + $eventTime = $this->getEventTime($eventTime); + if (empty($properties)) { + throw new PredictionIOAPIError('Specify at least one property'); + } + $json = json_encode([ + 'event' => '$unset', + 'entityType' => 'item', + 'entityId' => $iid, + 'properties' => $properties, + 'eventTime' => $eventTime, + ]); - return $this->sendRequest('POST', $this->eventUrl, $json); - } + return $this->sendRequest('POST', $this->eventUrl, $json); + } - /** - * Delete an item entity - * - * @param int|string Item Id - * @param string Time of the event in ISO 8601 format - * (e.g. 2014-09-09T16:17:42.937-08:00). - * Default is the current time. - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function deleteItem($iid, $eventTime=null) { - $eventTime = $this->getEventTime($eventTime); + /** + * Delete an item entity + * + * @param int|string Item Id + * @param string Time of the event in ISO 8601 format + * (e.g. 2014-09-09T16:17:42.937-08:00). + * Default is the current time. + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function deleteItem($iid, $eventTime=null) + { + $eventTime = $this->getEventTime($eventTime); - $json = json_encode([ - 'event' => '$delete', - 'entityType' => 'item', - 'entityId' => $iid, - 'eventTime' => $eventTime, - ]); + $json = json_encode([ + 'event' => '$delete', + 'entityType' => 'item', + 'entityId' => $iid, + 'eventTime' => $eventTime, + ]); - return $this->sendRequest('POST', $this->eventUrl, $json); - } + return $this->sendRequest('POST', $this->eventUrl, $json); + } - /** - * Record a user action on an item - * - * @param string Event name - * @param int|string User Id - * @param int|string Item Id - * @param array Properties of the event - * @param string Time of the event in ISO 8601 format - * (e.g. 2014-09-09T16:17:42.937-08:00). - * Default is the current time. - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function recordUserActionOnItem($event, $uid, $iid, - array $properties=array(), - $eventTime=null) { - $eventTime = $this->getEventTime($eventTime); - if (empty($properties)) $properties = (object)$properties; - $json = json_encode([ - 'event' => $event, - 'entityType' => 'user', - 'entityId' => $uid, - 'targetEntityType' => 'item', - 'targetEntityId' => $iid, - 'properties' => $properties, - 'eventTime' => $eventTime, - ]); + /** + * Record a user action on an item + * + * @param string Event name + * @param int|string User Id + * @param int|string Item Id + * @param array Properties of the event + * @param string Time of the event in ISO 8601 format + * (e.g. 2014-09-09T16:17:42.937-08:00). + * Default is the current time. + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function recordUserActionOnItem( + $event, + $uid, + $iid, + array $properties=array(), + $eventTime=null + ) { + $eventTime = $this->getEventTime($eventTime); + if (empty($properties)) { + $properties = (object)$properties; + } + $json = json_encode([ + 'event' => $event, + 'entityType' => 'user', + 'entityId' => $uid, + 'targetEntityType' => 'item', + 'targetEntityId' => $iid, + 'properties' => $properties, + 'eventTime' => $eventTime, + ]); - return $this->sendRequest('POST', $this->eventUrl, $json); - } + return $this->sendRequest('POST', $this->eventUrl, $json); + } - /** - * Create an event - * - * @param array An array describing the event - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function createEvent(array $data) { - $json = json_encode($data); + /** + * Create an event + * + * @param array An array describing the event + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function createEvent(array $data) + { + $json = json_encode($data); - return $this->sendRequest('POST', $this->eventUrl, $json); - } + return $this->sendRequest('POST', $this->eventUrl, $json); + } - /** - * Retrieve an event - * - * @param string Event ID - * - * @return string JSON response - * - * @throws PredictionIOAPIError Request error - */ - public function getEvent($eventId) { - return $this->sendRequest('GET', - "/events/$eventId.json?accessKey=$this->accessKey", ''); - } + /** + * Retrieve an event + * + * @param string Event ID + * + * @return string JSON response + * + * @throws PredictionIOAPIError Request error + */ + public function getEvent($eventId) + { + return $this->sendRequest( + 'GET', + "/events/$eventId.json?accessKey=$this->accessKey", + '' + ); + } } - -?> http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/2136b2ea/src/predictionio/Exporter.php ---------------------------------------------------------------------- diff --git a/src/predictionio/Exporter.php b/src/predictionio/Exporter.php index 3924a9b..c965dc7 100644 --- a/src/predictionio/Exporter.php +++ b/src/predictionio/Exporter.php @@ -17,12 +17,12 @@ namespace predictionio; - -trait Exporter { - +trait Exporter +{ abstract public function export($json); - public function jsonEncode($data) { + public function jsonEncode($data) + { return json_encode($data); } @@ -39,10 +39,15 @@ trait Exporter { * @param array $properties * @param $eventTime */ - public function createEvent($event, $entityType, $entityId, - $targetEntityType=null, $targetEntityId=null, array $properties=null, - $eventTime=null) { - + public function createEvent( + $event, + $entityType, + $entityId, + $targetEntityType=null, + $targetEntityId=null, + array $properties=null, + $eventTime=null + ) { if (!isset($eventTime)) { $eventTime = new \DateTime(); } elseif (!($eventTime instanceof \DateTime)) { @@ -73,5 +78,4 @@ trait Exporter { $this->export($json); } - } http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/2136b2ea/src/predictionio/FileExporter.php ---------------------------------------------------------------------- diff --git a/src/predictionio/FileExporter.php b/src/predictionio/FileExporter.php index 227e649..8e820dc 100644 --- a/src/predictionio/FileExporter.php +++ b/src/predictionio/FileExporter.php @@ -22,21 +22,24 @@ namespace predictionio; * * @package predictionio */ -class FileExporter { - +class FileExporter +{ use Exporter; private $file; - public function __construct($fileName) { + public function __construct($fileName) + { $this->file = fopen($fileName, 'w'); } - public function export($json) { + public function export($json) + { fwrite($this->file, "$json\n"); } - public function close() { + public function close() + { fclose($this->file); } } http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/2136b2ea/src/predictionio/PredictionIOAPIError.php ---------------------------------------------------------------------- diff --git a/src/predictionio/PredictionIOAPIError.php b/src/predictionio/PredictionIOAPIError.php index a65d6a9..b51414f 100644 --- a/src/predictionio/PredictionIOAPIError.php +++ b/src/predictionio/PredictionIOAPIError.php @@ -16,10 +16,10 @@ */ namespace predictionio; + /** * Thrown when there is an error with the request. */ -class PredictionIOAPIError extends \Exception { - +class PredictionIOAPIError extends \Exception +{ } -?> http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/2136b2ea/tests/Unit/EngineClientTest.php ---------------------------------------------------------------------- diff --git a/tests/Unit/EngineClientTest.php b/tests/Unit/EngineClientTest.php index a389576..2f5fbbf 100644 --- a/tests/Unit/EngineClientTest.php +++ b/tests/Unit/EngineClientTest.php @@ -25,36 +25,35 @@ use GuzzleHttp\Handler\MockHandler; use GuzzleHttp\HandlerStack; use GuzzleHttp\Psr7\Response; - -class EngineClientTest extends \PHPUnit_Framework_TestCase { - /** @var EngineClient $engineClient */ - protected $engineClient; - protected $container = []; - - protected function setUp() { - $history=Middleware::History($this->container); - $mock=new MockHandler([new Response(200)]); - $handler=HandlerStack::create($mock); - $handler->push($history); - $this->engineClient=new EngineClient(); - $existingOptions = $this->engineClient->client->getConfig(); - $existingOptions['handler'] = $handler; - $mockClient=new Client($existingOptions); - $this->engineClient->client = $mockClient; - } - - public function testSendQuery() { - $this->engineClient->sendQuery(array('uid'=>5, 'iids'=>array(1,2,3))); - $result=array_shift($this->container); - /** @var Request[] $result['request'] */ - $body=json_decode($result['request']->getBody(), true); - - $this->assertEquals(5,$body['uid']); - $this->assertEquals(array(1,2,3),$body['iids']); - $this->assertEquals('POST',$result['request']->getMethod()); - $this->assertEquals('http://localhost:8000/queries.json',$result['request']->getUri()); - } - +class EngineClientTest extends \PHPUnit_Framework_TestCase +{ + /** @var EngineClient $engineClient */ + protected $engineClient; + protected $container = []; + + protected function setUp() + { + $history=Middleware::History($this->container); + $mock=new MockHandler([new Response(200)]); + $handler=HandlerStack::create($mock); + $handler->push($history); + $this->engineClient=new EngineClient(); + $existingOptions = $this->engineClient->client->getConfig(); + $existingOptions['handler'] = $handler; + $mockClient=new Client($existingOptions); + $this->engineClient->client = $mockClient; + } + + public function testSendQuery() + { + $this->engineClient->sendQuery(array('uid'=>5, 'iids'=>array(1,2,3))); + $result=array_shift($this->container); + /** @var Request[] $result['request'] */ + $body=json_decode($result['request']->getBody(), true); + + $this->assertEquals(5, $body['uid']); + $this->assertEquals(array(1,2,3), $body['iids']); + $this->assertEquals('POST', $result['request']->getMethod()); + $this->assertEquals('http://localhost:8000/queries.json', $result['request']->getUri()); + } } - -?> http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/2136b2ea/tests/Unit/EventClientTest.php ---------------------------------------------------------------------- diff --git a/tests/Unit/EventClientTest.php b/tests/Unit/EventClientTest.php index 7f3319e..6c442ea 100644 --- a/tests/Unit/EventClientTest.php +++ b/tests/Unit/EventClientTest.php @@ -25,243 +25,263 @@ 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( +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', @@ -271,42 +291,40 @@ class EventClientTest extends \PHPUnit_Framework_TestCase { '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()); - } - - - - + $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() + ); + } } -?> http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/2136b2ea/tests/Unit/ExporterTest.php ---------------------------------------------------------------------- diff --git a/tests/Unit/ExporterTest.php b/tests/Unit/ExporterTest.php index bd36fe5..7f3690a 100644 --- a/tests/Unit/ExporterTest.php +++ b/tests/Unit/ExporterTest.php @@ -17,10 +17,10 @@ namespace predictionio\tests\Unit; - use predictionio\Exporter; -class TestExporter { +class TestExporter +{ use Exporter { jsonEncode as traitJsonEncode; } @@ -28,31 +28,37 @@ class TestExporter { public $json; public $data; - public function __construct() { + public function __construct() + { $this->json = []; $this->data = []; } - public function jsonEncode($data) { + public function jsonEncode($data) + { $this->data[] = $data; return $this->traitJsonEncode($data); } - public function export($json) { + public function export($json) + { $this->json[] = $json; } } -class ExporterTest extends \PHPUnit_Framework_TestCase { +class ExporterTest extends \PHPUnit_Framework_TestCase +{ /** @var TestExporter $exporter */ private $exporter; - protected function setUp() { + protected function setUp() + { $this->exporter = new TestExporter(); } - public function testTimeIsNow() { + public function testTimeIsNow() + { $time = new \DateTime(); $this->exporter->createEvent('event', 'entity-type', 'entity-id'); @@ -71,7 +77,8 @@ class ExporterTest extends \PHPUnit_Framework_TestCase { $this->assertTrue(preg_match($pattern, $json) === 1, 'json'); } - public function testTimeIsString() { + public function testTimeIsString() + { $time = new \DateTime('2015-04-01'); $this->exporter->createEvent('event', 'entity-type', 'entity-id', null, null, null, '2015-04-01'); @@ -90,7 +97,8 @@ class ExporterTest extends \PHPUnit_Framework_TestCase { $this->assertTrue(preg_match($pattern, $json) === 1, 'json'); } - public function testTimeIsDateTime() { + public function testTimeIsDateTime() + { $time = new \DateTime('2015-04-01'); $this->exporter->createEvent('event', 'entity-type', 'entity-id', null, null, null, $time); @@ -109,11 +117,19 @@ class ExporterTest extends \PHPUnit_Framework_TestCase { $this->assertTrue(preg_match($pattern, $json) === 1, 'json'); } - public function testOptionalFields() { + public function testOptionalFields() + { $time = new \DateTime('2015-04-01'); - $this->exporter->createEvent('event', 'entity-type', 'entity-id', - 'target-entity-type', 'target-entity-id', ['property' => true], $time); + $this->exporter->createEvent( + 'event', + 'entity-type', + 'entity-id', + 'target-entity-type', + 'target-entity-id', + ['property' => true], + $time + ); $this->assertEquals(1, count($this->exporter->data)); $data = $this->exporter->data[0]; @@ -131,5 +147,4 @@ class ExporterTest extends \PHPUnit_Framework_TestCase { $pattern = '/^{"event":"event","entityType":"entity-type","entityId":"entity-id","eventTime":"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}","targetEntityType":"target-entity-type","targetEntityId":"target-entity-id","properties":{"property":true}}$/'; $this->assertTrue(preg_match($pattern, $json) === 1, 'json'); } - } http://git-wip-us.apache.org/repos/asf/predictionio-sdk-php/blob/2136b2ea/tests/Unit/FileExporterTest.php ---------------------------------------------------------------------- diff --git a/tests/Unit/FileExporterTest.php b/tests/Unit/FileExporterTest.php index a088816..f7f43cd 100644 --- a/tests/Unit/FileExporterTest.php +++ b/tests/Unit/FileExporterTest.php @@ -17,11 +17,10 @@ namespace predictionio\tests\Unit; - use predictionio\FileExporter; -class FileExporterTest extends \PHPUnit_Framework_TestCase { - +class FileExporterTest extends \PHPUnit_Framework_TestCase +{ public function setUp() { register_shutdown_function(function () { @@ -31,12 +30,27 @@ class FileExporterTest extends \PHPUnit_Framework_TestCase { }); } - public function testExporter() { + public function testExporter() + { $exporter = new FileExporter('temp.file'); - $exporter->createEvent('event-1', 'entity-type-1', 'entity-id-1', - null, null, null, '2015-04-01'); - $exporter->createEvent('event-2', 'entity-type-2', 'entity-id-2', - 'target-entity-type-2', 'target-entity-id-2', ['property' => 'blue'], '2015-04-01'); + $exporter->createEvent( + 'event-1', + 'entity-type-1', + 'entity-id-1', + null, + null, + null, + '2015-04-01' + ); + $exporter->createEvent( + 'event-2', + 'entity-type-2', + 'entity-id-2', + 'target-entity-type-2', + 'target-entity-id-2', + ['property' => 'blue'], + '2015-04-01' + ); $exporter->close(); $exported = file_get_contents('temp.file');