OfflineTest.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. <?php
  2. /**
  3. * Zend Framework
  4. *
  5. * LICENSE
  6. *
  7. * This source file is subject to the new BSD license that is bundled
  8. * with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://framework.zend.com/license/new-bsd
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@zend.com so we can send you a copy immediately.
  14. *
  15. * @category Zend
  16. * @package Zend_Service_Ebay
  17. * @subpackage UnitTests
  18. * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  19. * @license http://framework.zend.com/license/new-bsd New BSD License
  20. * @version $Id: OfflineTest.php 22824 2010-08-09 18:59:54Z renanbr $
  21. */
  22. /**
  23. * Test helper
  24. */
  25. require_once dirname(__FILE__) . '/../../../../TestHelper.php';
  26. /**
  27. * @see Zend_Service_Ebay_Finding
  28. */
  29. require_once 'Zend/Service/Ebay/Finding.php';
  30. /**
  31. * @see Zend_Service_Ebay_Finding_Response_Keywords
  32. */
  33. require_once 'Zend/Service/Ebay/Finding/Response/Keywords.php';
  34. /**
  35. * @see Zend_Service_Ebay_Finding_Response_Items
  36. */
  37. require_once 'Zend/Service/Ebay/Finding/Response/Items.php';
  38. /**
  39. * @category Zend
  40. * @package Zend_Service_Ebay
  41. * @subpackage UnitTests
  42. * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  43. * @license http://framework.zend.com/license/new-bsd New BSD License
  44. */
  45. class Zend_Service_Ebay_OfflineTest extends PHPUnit_Framework_TestCase
  46. {
  47. /**
  48. * @var Zend_Service_Ebay_Finding
  49. */
  50. protected $_finding;
  51. protected function setUp()
  52. {
  53. $this->_finding = new Zend_Service_Ebay_Finding('foo');
  54. }
  55. public function testClient()
  56. {
  57. $this->assertTrue($this->_finding->getClient() instanceof Zend_Rest_Client);
  58. require_once dirname(__FILE__) . '/_files/ClientCustom.php';
  59. $this->assertTrue($this->_finding->setClient(new ClientCustom()) instanceof Zend_Service_Ebay_Finding);
  60. $this->assertTrue($this->_finding->getClient() instanceof ClientCustom);
  61. $this->setExpectedException('Zend_Service_Ebay_Finding_Exception');
  62. $this->_finding->setClient(new stdClass());
  63. }
  64. public function testConstructor()
  65. {
  66. $this->assertEquals('EBAY-US', $this->_finding->getOption(Zend_Service_Ebay_Finding::OPTION_GLOBAL_ID));
  67. $this->assertEquals('foo', $this->_finding->getOption(Zend_Service_Ebay_Finding::OPTION_APP_ID));
  68. $options = array(
  69. Zend_Service_Ebay_Finding::OPTION_APP_ID => 'app-id',
  70. Zend_Service_Ebay_Finding::OPTION_GLOBAL_ID => 'EBAY-GB',
  71. 'foo' => 'bar'
  72. );
  73. $finding = new Zend_Service_Ebay_Finding($options);
  74. $this->assertEquals('EBAY-GB', $finding->getOption(Zend_Service_Ebay_Finding::OPTION_GLOBAL_ID));
  75. $this->assertEquals('app-id', $finding->getOption(Zend_Service_Ebay_Finding::OPTION_APP_ID));
  76. $this->assertEquals('bar', $finding->getOption('foo'));
  77. $this->setExpectedException('Zend_Service_Ebay_Finding_Exception');
  78. $finding = new Zend_Service_Ebay_Finding(array('foo' => 'bar'));
  79. }
  80. public function testResponseAbstract()
  81. {
  82. $xml = file_get_contents(dirname(__FILE__) . '/_files/get-search-keywords-recomendation.xml');
  83. // no error xml
  84. $response = $this->_createResponseKeywords($xml);
  85. $this->assertNotNull($response->ack);
  86. $this->assertNotNull($response->timestamp);
  87. $this->assertNotNull($response->version);
  88. }
  89. public function testErrorMessage()
  90. {
  91. $xml = file_get_contents(dirname(__FILE__) . '/_files/error.xml');
  92. // xml with error inside
  93. $response = $this->_createResponseKeywords($xml);
  94. $this->assertNotNull($response->ack);
  95. $this->assertNotNull($response->timestamp);
  96. $this->assertNotNull($response->version);
  97. $this->assertType('Zend_Service_Ebay_Finding_Error_Message', $response->errorMessage);
  98. // Zend_Service_Ebay_Finding_Error_Message
  99. $object = $response->errorMessage;
  100. $this->assertType('Zend_Service_Ebay_Finding_Error_Data_Set', $object->error);
  101. // Zend_Service_Ebay_Finding_Error_Data
  102. $object = $object->error->current();
  103. $this->assertNotNull($object->category);
  104. $this->assertNotNull($object->domain);
  105. $this->assertNotNull($object->errorId);
  106. $this->assertNotNull($object->message);
  107. $this->assertType('array', $object->parameter);
  108. $this->assertType('array', $object->attributes('parameter', 'name'));
  109. $this->assertNotNull($object->severity);
  110. $this->assertNotNull($object->subdomain);
  111. // missing attributes in XML
  112. //$this->assertNotNull($object->exceptionId);
  113. }
  114. public function testResponseKeywords()
  115. {
  116. $xml = file_get_contents(dirname(__FILE__) . '/_files/get-search-keywords-recomendation.xml');
  117. $response = $this->_createResponseKeywords($xml);
  118. $this->assertNotNull($response->keywords);
  119. }
  120. public function testResponseItems()
  121. {
  122. $xml = file_get_contents(dirname(__FILE__) . '/_files/find-items-advanced.xml');
  123. $response = $this->_createResponseItems($xml);
  124. $this->assertType('Zend_Service_Ebay_Finding_PaginationOutput', $response->paginationOutput);
  125. $this->assertType('Zend_Service_Ebay_Finding_Search_Result', $response->searchResult);
  126. $this->assertNotNull($response->attributes('searchResult', 'count'));
  127. }
  128. public function testPaginationOutput()
  129. {
  130. $xml = file_get_contents(dirname(__FILE__) . '/_files/find-items-advanced.xml');
  131. $response = $this->_createResponseItems($xml);
  132. $object = $response->paginationOutput;
  133. $this->assertNotNull($object->entriesPerPage);
  134. $this->assertNotNull($object->pageNumber);
  135. $this->assertNotNull($object->totalEntries);
  136. $this->assertNotNull($object->totalPages);
  137. }
  138. public function testSearchResult()
  139. {
  140. $xml = file_get_contents(dirname(__FILE__) . '/_files/find-items-advanced.xml');
  141. $response = $this->_createResponseItems($xml);
  142. $object = $response->searchResult;
  143. $this->assertType('Zend_Service_Ebay_Finding_Search_Item_Set', $object->item);
  144. }
  145. public function testSearchItem()
  146. {
  147. $xml = file_get_contents(dirname(__FILE__) . '/_files/find-items-advanced.xml');
  148. $response = $this->_createResponseItems($xml);
  149. // general attributes
  150. $response->searchResult->item->seek(0);
  151. $object = $response->searchResult->item->current();
  152. $this->assertType('Zend_Service_Ebay_Finding_Search_Item', $object);
  153. $this->assertNotNull($object->autoPay);
  154. $this->assertNotNull($object->country);
  155. $this->assertType('array', $object->galleryPlusPictureURL);
  156. $this->assertNotNull($object->galleryPlusPictureURL[0]);
  157. $this->assertNotNull($object->galleryURL);
  158. $this->assertNotNull($object->globalId);
  159. $this->assertNotNull($object->itemId);
  160. $this->assertType('Zend_Service_Ebay_Finding_ListingInfo', $object->listingInfo);
  161. $this->assertNotNull($object->location);
  162. $this->assertType('array', $object->paymentMethod);
  163. $this->assertNotNull($object->paymentMethod[0]);
  164. $this->assertNotNull($object->postalCode);
  165. $this->assertType('Zend_Service_Ebay_Finding_Category', $object->primaryCategory);
  166. $this->assertType('Zend_Service_Ebay_Finding_SellerInfo', $object->sellerInfo);
  167. $this->assertType('Zend_Service_Ebay_Finding_SellingStatus', $object->sellingStatus);
  168. $this->assertType('Zend_Service_Ebay_Finding_ShippingInfo', $object->shippingInfo);
  169. $this->assertType('Zend_Service_Ebay_Finding_Storefront', $object->storeInfo);
  170. $this->assertNotNull($object->title);
  171. $this->assertNotNull($object->viewItemURL);
  172. // product id
  173. $response->searchResult->item->seek(3);
  174. $object = $response->searchResult->item->current();
  175. $this->assertNotNull($object->productId);
  176. $this->assertNotNull($object->attributes('productId', 'type'));
  177. // sub category
  178. $response->searchResult->item->seek(2);
  179. $object = $response->searchResult->item->current();
  180. $this->assertType('Zend_Service_Ebay_Finding_Category', $object->secondaryCategory);
  181. // missing attributes in XML
  182. //$this->assertNotNull($object->charityId);
  183. //$this->assertNotNull($object->distance);
  184. //$this->assertNotNull($object->attributes('distance', 'unit'));
  185. }
  186. public function testListingInfo()
  187. {
  188. $xml = file_get_contents(dirname(__FILE__) . '/_files/find-items-advanced.xml');
  189. $response = $this->_createResponseItems($xml);
  190. $response->searchResult->item->seek(4);
  191. $object = $response->searchResult->item->current()->listingInfo;
  192. $this->assertNotNull($object->bestOfferEnabled);
  193. $this->assertNotNull($object->buyItNowAvailable);
  194. $this->assertNotNull($object->buyItNowPrice);
  195. $this->assertNotNull($object->attributes('buyItNowPrice', 'currencyId'));
  196. $this->assertNotNull($object->convertedBuyItNowPrice);
  197. $this->assertNotNull($object->attributes('convertedBuyItNowPrice', 'currencyId'));
  198. $this->assertNotNull($object->endTime);
  199. $this->assertNotNull($object->gift);
  200. $this->assertNotNull($object->listingType);
  201. $this->assertNotNull($object->startTime);
  202. }
  203. public function testCategory()
  204. {
  205. $xml = file_get_contents(dirname(__FILE__) . '/_files/find-items-advanced.xml');
  206. $response = $this->_createResponseItems($xml);
  207. $response->searchResult->item->seek(0);
  208. $object = $response->searchResult->item->current()->primaryCategory;
  209. $this->assertNotNull($object->categoryId);
  210. $this->assertNotNull($object->categoryName);
  211. }
  212. public function testSellerInfo()
  213. {
  214. $xml = file_get_contents(dirname(__FILE__) . '/_files/find-items-advanced.xml');
  215. $response = $this->_createResponseItems($xml);
  216. $response->searchResult->item->seek(0);
  217. $object = $response->searchResult->item->current()->sellerInfo;
  218. $this->assertNotNull($object->feedbackRatingStar);
  219. $this->assertNotNull($object->feedbackScore);
  220. $this->assertNotNull($object->positiveFeedbackPercent);
  221. $this->assertNotNull($object->sellerUserName);
  222. $this->assertNotNull($object->topRatedSeller);
  223. }
  224. public function testSellingStatus()
  225. {
  226. $xml = file_get_contents(dirname(__FILE__) . '/_files/find-items-advanced.xml');
  227. $response = $this->_createResponseItems($xml);
  228. $response->searchResult->item->seek(1);
  229. $object = $response->searchResult->item->current()->sellingStatus;
  230. $this->assertNotNull($object->bidCount);
  231. $this->assertNotNull($object->convertedCurrentPrice);
  232. $this->assertNotNull($object->attributes('convertedCurrentPrice', 'currencyId'));
  233. $this->assertNotNull($object->currentPrice);
  234. $this->assertNotNull($object->attributes('currentPrice', 'currencyId'));
  235. $this->assertNotNull($object->sellingState);
  236. $this->assertNotNull($object->timeLeft);
  237. }
  238. public function testShippingInfo()
  239. {
  240. $xml = file_get_contents(dirname(__FILE__) . '/_files/find-items-advanced.xml');
  241. $response = $this->_createResponseItems($xml);
  242. $response->searchResult->item->seek(0);
  243. $object = $response->searchResult->item->current()->shippingInfo;
  244. $this->assertNotNull($object->shippingServiceCost);
  245. $this->assertNotNull($object->attributes('shippingServiceCost', 'currencyId'));
  246. $this->assertNotNull($object->shippingType);
  247. $this->assertType('array', $object->shipToLocations);
  248. $this->assertNotNull($object->shipToLocations[0]);
  249. }
  250. public function testStorefront()
  251. {
  252. $xml = file_get_contents(dirname(__FILE__) . '/_files/find-items-advanced.xml');
  253. $response = $this->_createResponseItems($xml);
  254. $response->searchResult->item->seek(0);
  255. $object = $response->searchResult->item->current()->storeInfo;
  256. $this->assertNotNull($object->storeName);
  257. $this->assertNotNull($object->storeURL);
  258. }
  259. public function testResponseHistogramAspect()
  260. {
  261. // test histogram aspect
  262. $xml = file_get_contents(dirname(__FILE__) . '/_files/histogram-aspect.xml');
  263. $response = $this->_createResponseHistograms($xml);
  264. $this->assertNotNull($response->aspectHistogramContainer);
  265. $this->assertType('Zend_Service_Ebay_Finding_Aspect_Histogram_Container', $response->aspectHistogramContainer);
  266. $this->assertNull($response->categoryHistogramContainer);
  267. // Zend_Service_Ebay_Finding_Aspect_Set
  268. $object = $response->aspectHistogramContainer;
  269. $this->assertType('Zend_Service_Ebay_Finding_Aspect_Set', $object->aspect);
  270. // Zend_Service_Ebay_Finding_Aspect
  271. $object = $object->aspect->current();
  272. $this->assertType('Zend_Service_Ebay_Finding_Aspect_Histogram_Value_Set', $object->valueHistogram);
  273. $this->assertType('array', $object->attributes('valueHistogram', 'valueName'));
  274. // Zend_Service_Ebay_Finding_Aspect_Histogram_Value
  275. $object = $object->valueHistogram->current();
  276. $this->assertNotNull($object->count);
  277. }
  278. public function testResponseHistogramCategory()
  279. {
  280. // test histogram aspect
  281. $xml = file_get_contents(dirname(__FILE__) . '/_files/histogram-category.xml');
  282. $response = $this->_createResponseHistograms($xml);
  283. $this->assertNotNull($response->categoryHistogramContainer);
  284. $this->assertType('Zend_Service_Ebay_Finding_Category_Histogram_Container', $response->categoryHistogramContainer);
  285. $this->assertNull($response->aspectHistogramContainer);
  286. // Zend_Service_Ebay_Finding_Category_Histogram_Container
  287. $object = $response->categoryHistogramContainer;
  288. $this->assertType('Zend_Service_Ebay_Finding_Category_Histogram_Set', $object->categoryHistogram);
  289. // Zend_Service_Ebay_Finding_Category_Histogram
  290. $object = $object->categoryHistogram->current();
  291. $this->assertType('Zend_Service_Ebay_Finding_Category_Histogram', $object);
  292. $this->assertType('Zend_Service_Ebay_Finding_Category_Histogram_Set', $object->childCategoryHistogram);
  293. $this->assertNotNull($object->count);
  294. }
  295. protected function _readXML($xml)
  296. {
  297. $dom = new DOMDocument();
  298. $dom->loadXML($xml);
  299. return $dom;
  300. }
  301. protected function _createResponseItems($xml)
  302. {
  303. return new Zend_Service_Ebay_Finding_Response_Items($this->_readXML($xml)->firstChild);
  304. }
  305. protected function _createResponseHistograms($xml)
  306. {
  307. return new Zend_Service_Ebay_Finding_Response_Histograms($this->_readXML($xml)->firstChild);
  308. }
  309. protected function _createResponseKeywords($xml)
  310. {
  311. return new Zend_Service_Ebay_Finding_Response_Keywords($this->_readXML($xml)->firstChild);
  312. }
  313. }