PageRenderTime 49ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

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

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