/tests/Zend/Service/Delicious/PrivateDataTest.php

https://github.com/Exercise/zf2 · PHP · 255 lines · 127 code · 42 blank · 86 comment · 2 complexity · 0d4b8e1ed8a47565f1b483b2d8ba24da MD5 · raw file

  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_Delicious
  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$
  21. */
  22. /**
  23. * @namespace
  24. */
  25. namespace ZendTest\Service\Delicious\PrivateData;
  26. use \Zend\Service\Delicious,
  27. \Zend\Http,
  28. \Zend\Rest\Client as RestClient,
  29. \Zend\Date\Date;
  30. /**
  31. * @category Zend_Service
  32. * @package Zend_Service_Delicious
  33. * @subpackage UnitTests
  34. * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  35. * @license http://framework.zend.com/license/new-bsd New BSD License
  36. * @group Zend_Service
  37. * @group Zend_Service_Delicious
  38. */
  39. class PrivateDataTest extends \PHPUnit_Framework_TestCase
  40. {
  41. const TEST_UNAME = 'zfTestUser';
  42. const TEST_PASS = 'zfuser';
  43. // artificial wait interval between successive calls
  44. const API_CALL_INTERVAL = 3;
  45. private static $TEST_POST_TITLE = 'test - title';
  46. private static $TEST_POST_URL = 'http://zfdev.com/unittests/delicious/test_url_1';
  47. private static $TEST_POST_NOTES = 'test - note';
  48. private static $TEST_POST_TAGS = array('testTag1','testTag2');
  49. private static $TEST_POST_SHARED = false;
  50. /**
  51. * @var \Zend\Service\Delicious
  52. */
  53. protected $_delicious;
  54. /**
  55. *
  56. * @return void
  57. */
  58. public function setUp()
  59. {
  60. if (!constant('TESTS_ZEND_SERVICE_DELICIOUS_ENABLED')) {
  61. $this->markTestSkipped('\Zend\Service\Delicious online tests are not enabled');
  62. }
  63. $httpClient = new Http\Client();
  64. $httpClient->setConfig(array(
  65. 'useragent' => 'Zend\Service\Delicious - Unit tests/0.1',
  66. 'keepalive' => true
  67. ));
  68. RestClient\RestClient::setDefaultHttpClient($httpClient);
  69. $this->_delicious = new Delicious\Delicious(self::TEST_UNAME, self::TEST_PASS);
  70. }
  71. /**
  72. *
  73. * @return void
  74. */
  75. public function testLastUpdate()
  76. {
  77. $this->assertType('\Zend\Date\Date', $this->_delicious->getLastUpdate());
  78. }
  79. /**
  80. *
  81. * @return void
  82. */
  83. public function testTagsAndBundles()
  84. {
  85. // get tags
  86. $tags = $this->_delicious->getTags();
  87. $this->assertType('array', $tags);
  88. $tags = array_keys($tags);
  89. if (count($tags) < 1) {
  90. $this->fail('Test account corrupted - no tags');
  91. }
  92. $oldTagName = $tags[0];
  93. $newTagName = uniqid('tag');
  94. // rename tag
  95. $this->_delicious->renameTag($oldTagName, $newTagName);
  96. sleep(self::API_CALL_INTERVAL);
  97. // get renamed tags
  98. $tags = $this->_delicious->getTags();
  99. $this->assertArrayHasKey($newTagName, $tags);
  100. $this->assertArrayNotHasKey($oldTagName, $tags);
  101. $tags = array_keys($tags);
  102. // add new bundle
  103. $newBundleName = uniqid('bundle');
  104. $this->_delicious->addBundle($newBundleName, $tags);
  105. sleep(self::API_CALL_INTERVAL);
  106. // check if bundle was added
  107. $bundles = $this->_delicious->getBundles();
  108. $this->assertType('array', $bundles);
  109. $this->assertArrayHasKey($newBundleName, $bundles);
  110. $this->assertEquals($tags, $bundles[$newBundleName]);
  111. // delete bundle
  112. $this->_delicious->deleteBundle($newBundleName);
  113. sleep(self::API_CALL_INTERVAL);
  114. // check if bundle was deleted
  115. $bundles = $this->_delicious->getBundles();
  116. $this->assertArrayNotHasKey($newBundleName, $bundles);
  117. }
  118. /**
  119. *
  120. * @return void
  121. */
  122. public function _testAddDeletePost()
  123. {
  124. $newPost = $this->_delicious->createNewPost(self::$TEST_POST_TITLE, self::$TEST_POST_URL)
  125. ->setNotes(self::$TEST_POST_NOTES)
  126. ->setTags(self::$TEST_POST_TAGS)
  127. ->setShared(self::$TEST_POST_SHARED);
  128. // check if post was created correctly
  129. $this->assertEquals(self::$TEST_POST_TITLE, $newPost->getTitle());
  130. $this->assertEquals(self::$TEST_POST_URL, $newPost->getUrl());
  131. $this->assertEquals(self::$TEST_POST_NOTES, $newPost->getNotes());
  132. $this->assertEquals(self::$TEST_POST_TAGS, $newPost->getTags());
  133. $this->assertEquals(self::$TEST_POST_SHARED, $newPost->getShared());
  134. // test tag adding to tag
  135. $newTagName = uniqid('tag');
  136. $newPost->addTag($newTagName);
  137. $this->assertContains($newTagName, $newPost->getTags());
  138. // test tag removeing
  139. $newPost->removeTag($newTagName);
  140. $this->assertNotContains($newTagName, $newPost->getTags());
  141. // send post to del.icio.us
  142. $newPost->save();
  143. sleep(self::API_CALL_INTERVAL);
  144. // get the post back
  145. $returnedPosts = $this->_delicious->getPosts(null, null, self::$TEST_POST_URL);
  146. $this->assertEquals(1, count($returnedPosts));
  147. $savedPost = $returnedPosts[0];
  148. // check if post was saved correctly
  149. $this->assertEquals(self::$TEST_POST_TITLE, $savedPost->getTitle());
  150. $this->assertEquals(self::$TEST_POST_URL, $savedPost->getUrl());
  151. $this->assertEquals(self::$TEST_POST_NOTES, $savedPost->getNotes());
  152. $this->assertEquals(self::$TEST_POST_TAGS, $savedPost->getTags());
  153. $this->assertEquals(self::$TEST_POST_SHARED, $savedPost->getShared());
  154. $this->assertType('\Zend\Date\Date', $savedPost->getDate());
  155. $this->assertType('string', $savedPost->getHash());
  156. $this->assertType('int', $savedPost->getOthers());
  157. // delete post
  158. $savedPost->delete();
  159. sleep(self::API_CALL_INTERVAL);
  160. // check if post was realy deleted
  161. $returnedPosts = $this->_delicious->getPosts(null, null, self::$TEST_POST_URL);
  162. $this->assertEquals(0, count($returnedPosts));
  163. }
  164. /**
  165. * Ensures that getAllPosts() provides expected behavior
  166. *
  167. * @return void
  168. */
  169. public function testGetAllPosts()
  170. {
  171. $posts = $this->_delicious->getAllPosts('zfSite');
  172. $this->assertType('Zend\Service\Delicious\PostList', $posts);
  173. foreach ($posts as $post) {
  174. $this->assertContains('zfSite', $post->getTags());
  175. }
  176. }
  177. /**
  178. * Ensures that getRecentPosts() provides expected behavior
  179. *
  180. * @return void
  181. */
  182. public function testGetRecentPosts()
  183. {
  184. $posts = $this->_delicious->getRecentPosts('zfSite', 10);
  185. $this->assertType('Zend\Service\Delicious\PostList', $posts);
  186. $this->assertTrue(count($posts) <= 10);
  187. foreach ($posts as $post) {
  188. $this->assertContains('zfSite', $post->getTags());
  189. }
  190. }
  191. /**
  192. * Ensures that getPosts() provides expected behavior
  193. *
  194. * @return void
  195. */
  196. public function testGetPosts()
  197. {
  198. $posts = $this->_delicious->getPosts('zfSite', new Date(), 'help');
  199. $this->assertType('\Zend\Service\Delicious\PostList', $posts);
  200. $this->assertTrue(count($posts) <= 10);
  201. foreach ($posts as $post) {
  202. $this->assertContains('zfSite', $post->getTags());
  203. }
  204. }
  205. /**
  206. *
  207. * @return void
  208. */
  209. public function testDates()
  210. {
  211. $this->assertType('array', $this->_delicious->getDates());
  212. }
  213. }