PageRenderTime 36ms CodeModel.GetById 12ms RepoModel.GetById 1ms app.codeStats 0ms

/vendor/zendframework/zendframework/tests/ZendTest/Feed/Writer/Renderer/Entry/AtomTest.php

https://bitbucket.org/pcelta/zf2
PHP | 313 lines | 245 code | 33 blank | 35 comment | 0 complexity | fa475534baa5404ae9b7d2990ef9e437 MD5 | raw file
  1. <?php
  2. /**
  3. * Zend Framework (http://framework.zend.com/)
  4. *
  5. * @link http://github.com/zendframework/zf2 for the canonical source repository
  6. * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
  7. * @license http://framework.zend.com/license/new-bsd New BSD License
  8. * @package Zend_Feed
  9. */
  10. namespace ZendTest\Feed\Writer\Renderer\Entry;
  11. use Zend\Feed\Writer\Renderer;
  12. use Zend\Feed\Writer;
  13. use Zend\Feed\Reader;
  14. /**
  15. * @category Zend
  16. * @package Zend_Feed
  17. * @subpackage UnitTests
  18. * @group Zend_Feed
  19. * @group Zend_Feed_Writer
  20. */
  21. class AtomTest extends \PHPUnit_Framework_TestCase
  22. {
  23. protected $validWriter = null;
  24. protected $validEntry = null;
  25. public function setUp()
  26. {
  27. $this->validWriter = new Writer\Feed;
  28. $this->validWriter->setType('atom');
  29. $this->validWriter->setTitle('This is a test feed.');
  30. $this->validWriter->setDescription('This is a test description.');
  31. $this->validWriter->setDateModified(1234567890);
  32. $this->validWriter->setLink('http://www.example.com');
  33. $this->validWriter->setFeedLink('http://www.example.com/atom', 'atom');
  34. $this->validWriter->addAuthor(array('name' => 'Joe',
  35. 'email'=> 'joe@example.com',
  36. 'uri' => 'http://www.example.com/joe'));
  37. $this->validEntry = $this->validWriter->createEntry();
  38. $this->validEntry->setTitle('This is a test entry.');
  39. $this->validEntry->setDescription('This is a test entry description.');
  40. $this->validEntry->setDateModified(1234567890);
  41. $this->validEntry->setDateCreated(1234567000);
  42. $this->validEntry->setLink('http://www.example.com/1');
  43. $this->validEntry->addAuthor(array('name' => 'Jane',
  44. 'email'=> 'jane@example.com',
  45. 'uri' => 'http://www.example.com/jane'));
  46. $this->validEntry->setContent('<p class="xhtml:">This is test content for <em>xhtml:</em></p>');
  47. $this->validWriter->addEntry($this->validEntry);
  48. }
  49. public function tearDown()
  50. {
  51. $this->validWriter = null;
  52. $this->validEntry = null;
  53. }
  54. public function testRenderMethodRunsMinimalWriterContainerProperlyBeforeICheckAtomCompliance()
  55. {
  56. $renderer = new Renderer\Feed\Atom($this->validWriter);
  57. $renderer->render();
  58. }
  59. public function testEntryEncodingHasBeenSet()
  60. {
  61. $this->validWriter->setEncoding('iso-8859-1');
  62. $renderer = new Renderer\Feed\Atom($this->validWriter);
  63. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  64. $entry = $feed->current();
  65. $this->assertEquals('iso-8859-1', $entry->getEncoding());
  66. }
  67. public function testEntryEncodingDefaultIsUsedIfEncodingNotSetByHand()
  68. {
  69. $renderer = new Renderer\Feed\Atom($this->validWriter);
  70. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  71. $entry = $feed->current();
  72. $this->assertEquals('UTF-8', $entry->getEncoding());
  73. }
  74. public function testEntryTitleHasBeenSet()
  75. {
  76. $renderer = new Renderer\Feed\Atom($this->validWriter);
  77. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  78. $entry = $feed->current();
  79. $this->assertEquals('This is a test entry.', $entry->getTitle());
  80. }
  81. /**
  82. * @expectedException Zend\Feed\Writer\Exception\ExceptionInterface
  83. */
  84. public function testFeedTitleIfMissingThrowsException()
  85. {
  86. $atomFeed = new Renderer\Feed\Atom($this->validWriter);
  87. $this->validEntry->remove('title');
  88. $atomFeed->render();
  89. }
  90. public function testEntrySummaryDescriptionHasBeenSet()
  91. {
  92. $renderer = new Renderer\Feed\Atom($this->validWriter);
  93. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  94. $entry = $feed->current();
  95. $this->assertEquals('This is a test entry description.', $entry->getDescription());
  96. }
  97. /**
  98. * @group ZFWATOMCONTENT
  99. */
  100. public function testEntryContentHasBeenSet_Xhtml()
  101. {
  102. $renderer = new Renderer\Feed\Atom($this->validWriter);
  103. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  104. $entry = $feed->current();
  105. $this->assertEquals('<p class="xhtml:">This is test content for <em>xhtml:</em></p>', $entry->getContent());
  106. }
  107. /**
  108. * @expectedException Zend\Feed\Writer\Exception\ExceptionInterface
  109. */
  110. public function testFeedContentIfMissingThrowsExceptionIfThereIsNoLink()
  111. {
  112. $atomFeed = new Renderer\Feed\Atom($this->validWriter);
  113. $this->validEntry->remove('content');
  114. $this->validEntry->remove('link');
  115. $atomFeed->render();
  116. }
  117. public function testEntryUpdatedDateHasBeenSet()
  118. {
  119. $renderer = new Renderer\Feed\Atom($this->validWriter);
  120. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  121. $entry = $feed->current();
  122. $this->assertEquals(1234567890, $entry->getDateModified()->getTimestamp());
  123. }
  124. /**
  125. * @expectedException Zend\Feed\Writer\Exception\ExceptionInterface
  126. */
  127. public function testFeedUpdatedDateIfMissingThrowsException()
  128. {
  129. $atomFeed = new Renderer\Feed\Atom($this->validWriter);
  130. $this->validEntry->remove('dateModified');
  131. $atomFeed->render();
  132. }
  133. public function testEntryPublishedDateHasBeenSet()
  134. {
  135. $renderer = new Renderer\Feed\Atom($this->validWriter);
  136. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  137. $entry = $feed->current();
  138. $this->assertEquals(1234567000, $entry->getDateCreated()->getTimestamp());
  139. }
  140. public function testEntryIncludesLinkToHtmlVersionOfFeed()
  141. {
  142. $renderer = new Renderer\Feed\Atom($this->validWriter);
  143. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  144. $entry = $feed->current();
  145. $this->assertEquals('http://www.example.com/1', $entry->getLink());
  146. }
  147. public function testEntryHoldsAnyAuthorAdded()
  148. {
  149. $renderer = new Renderer\Feed\Atom($this->validWriter);
  150. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  151. $entry = $feed->current();
  152. $author = $entry->getAuthor();
  153. $this->assertEquals(array(
  154. 'name' => 'Jane',
  155. 'email'=> 'jane@example.com',
  156. 'uri' => 'http://www.example.com/jane'), $entry->getAuthor());
  157. }
  158. public function testEntryHoldsAnyEnclosureAdded()
  159. {
  160. $renderer = new Renderer\Feed\Atom($this->validWriter);
  161. $this->validEntry->setEnclosure(array(
  162. 'type' => 'audio/mpeg',
  163. 'length' => '1337',
  164. 'uri' => 'http://example.com/audio.mp3'
  165. ));
  166. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  167. $entry = $feed->current();
  168. $enc = $entry->getEnclosure();
  169. $this->assertEquals('audio/mpeg', $enc->type);
  170. $this->assertEquals('1337', $enc->length);
  171. $this->assertEquals('http://example.com/audio.mp3', $enc->url);
  172. }
  173. public function testEntryIdHasBeenSet()
  174. {
  175. $this->validEntry->setId('urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6');
  176. $renderer = new Renderer\Feed\Atom($this->validWriter);
  177. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  178. $entry = $feed->current();
  179. $this->assertEquals('urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6', $entry->getId());
  180. }
  181. public function testEntryIdHasBeenSetUsingSimpleTagUri()
  182. {
  183. $this->validEntry->setId('tag:example.org,2010:/foo/bar/');
  184. $renderer = new Renderer\Feed\Atom($this->validWriter);
  185. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  186. $entry = $feed->current();
  187. $this->assertEquals('tag:example.org,2010:/foo/bar/', $entry->getId());
  188. }
  189. public function testEntryIdHasBeenSetUsingComplexTagUri()
  190. {
  191. $this->validEntry->setId('tag:diveintomark.org,2004-05-27:/archives/2004/05/27/howto-atom-linkblog');
  192. $renderer = new Renderer\Feed\Atom($this->validWriter);
  193. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  194. $entry = $feed->current();
  195. $this->assertEquals('tag:diveintomark.org,2004-05-27:/archives/2004/05/27/howto-atom-linkblog',
  196. $entry->getId());
  197. }
  198. public function testFeedIdDefaultIsUsedIfNotSetByHand()
  199. {
  200. $renderer = new Renderer\Feed\Atom($this->validWriter);
  201. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  202. $entry = $feed->current();
  203. $this->assertEquals($entry->getLink(), $entry->getId());
  204. }
  205. /**
  206. * @expectedException Zend\Feed\Writer\Exception\ExceptionInterface
  207. */
  208. public function testFeedIdIfMissingThrowsException()
  209. {
  210. $atomFeed = new Renderer\Feed\Atom($this->validWriter);
  211. $this->validEntry->remove('id');
  212. $this->validEntry->remove('link');
  213. $atomFeed->render();
  214. }
  215. /**
  216. * @expectedException Zend\Feed\Writer\Exception\ExceptionInterface
  217. */
  218. public function testFeedIdThrowsExceptionIfNotUri()
  219. {
  220. $this->markTestIncomplete('Pending Zend\URI fix for validation');
  221. $atomFeed = new Renderer\Feed\Atom($this->validWriter);
  222. $this->validEntry->remove('id');
  223. $this->validEntry->remove('link');
  224. $this->validEntry->setId('not-a-uri');
  225. $atomFeed->render();
  226. }
  227. public function testCommentLinkRendered()
  228. {
  229. $renderer = new Renderer\Feed\Atom($this->validWriter);
  230. $this->validEntry->setCommentLink('http://www.example.com/id/1');
  231. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  232. $entry = $feed->current();
  233. $this->assertEquals('http://www.example.com/id/1', $entry->getCommentLink());
  234. }
  235. public function testCommentCountRendered()
  236. {
  237. $renderer = new Renderer\Feed\Atom($this->validWriter);
  238. $this->validEntry->setCommentCount(22);
  239. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  240. $entry = $feed->current();
  241. $this->assertEquals(22, $entry->getCommentCount());
  242. }
  243. public function testCategoriesCanBeSet()
  244. {
  245. $this->validEntry->addCategories(array(
  246. array('term' => 'cat_dog',
  247. 'label' => 'Cats & Dogs',
  248. 'scheme' => 'http://example.com/schema1'),
  249. array('term'=> 'cat_dog2')
  250. ));
  251. $atomFeed = new Renderer\Feed\Atom($this->validWriter);
  252. $atomFeed->render();
  253. $feed = Reader\Reader::importString($atomFeed->saveXml());
  254. $entry = $feed->current();
  255. $expected = array(
  256. array('term' => 'cat_dog',
  257. 'label' => 'Cats & Dogs',
  258. 'scheme' => 'http://example.com/schema1'),
  259. array('term' => 'cat_dog2',
  260. 'label' => 'cat_dog2',
  261. 'scheme' => null)
  262. );
  263. $this->assertEquals($expected, (array)$entry->getCategories());
  264. }
  265. public function testCommentFeedLinksRendered()
  266. {
  267. $renderer = new Renderer\Feed\Atom($this->validWriter);
  268. $this->validEntry->setCommentFeedLinks(array(
  269. array('uri' => 'http://www.example.com/atom/id/1',
  270. 'type'=> 'atom'),
  271. array('uri' => 'http://www.example.com/rss/id/1',
  272. 'type'=> 'rss'),
  273. ));
  274. $feed = Reader\Reader::importString($renderer->render()->saveXml());
  275. $entry = $feed->current();
  276. // Skipped over due to ZFR bug (detects Atom in error when RSS requested)
  277. //$this->assertEquals('http://www.example.com/rss/id/1', $entry->getCommentFeedLink('rss'));
  278. $this->assertEquals('http://www.example.com/atom/id/1', $entry->getCommentFeedLink('atom'));
  279. }
  280. }