EntryTest.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571
  1. <?php
  2. require_once 'PHPUnit/Framework/TestCase.php';
  3. require_once 'Zend/Feed/Writer/Entry.php';
  4. class Zend_Feed_Writer_EntryTest extends PHPUnit_Framework_TestCase
  5. {
  6. protected $_feedSamplePath = null;
  7. public function setup()
  8. {
  9. $this->_feedSamplePath = dirname(__FILE__) . '/_files';
  10. }
  11. public function testAddsAuthorName()
  12. {
  13. $entry = new Zend_Feed_Writer_Entry;
  14. $entry->addAuthor('Joe');
  15. $this->assertEquals(array(array('name'=>'Joe')), $entry->getAuthors());
  16. }
  17. public function testAddsAuthorEmail()
  18. {
  19. $entry = new Zend_Feed_Writer_Entry;
  20. $entry->addAuthor('Joe', 'joe@example.com');
  21. $this->assertEquals(array(array('name'=>'Joe', 'email' => 'joe@example.com')), $entry->getAuthors());
  22. }
  23. public function testAddsAuthorUri()
  24. {
  25. $entry = new Zend_Feed_Writer_Entry;
  26. $entry->addAuthor('Joe', null, 'http://www.example.com');
  27. $this->assertEquals(array(array('name'=>'Joe', 'uri' => 'http://www.example.com')), $entry->getAuthors());
  28. }
  29. public function testAddAuthorThrowsExceptionOnInvalidName()
  30. {
  31. $entry = new Zend_Feed_Writer_Entry;
  32. try {
  33. $entry->addAuthor('');
  34. $this->fail();
  35. } catch (Zend_Feed_Exception $e) {
  36. }
  37. }
  38. public function testAddAuthorThrowsExceptionOnInvalidEmail()
  39. {
  40. $entry = new Zend_Feed_Writer_Entry;
  41. try {
  42. $entry->addAuthor('Joe', '');
  43. $this->fail();
  44. } catch (Zend_Feed_Exception $e) {
  45. }
  46. }
  47. public function testAddAuthorThrowsExceptionOnInvalidUri()
  48. {
  49. $entry = new Zend_Feed_Writer_Entry;
  50. try {
  51. $entry->addAuthor('Joe', null, 'notauri');
  52. $this->fail();
  53. } catch (Zend_Feed_Exception $e) {
  54. }
  55. }
  56. public function testAddsAuthorNameFromArray()
  57. {
  58. $entry = new Zend_Feed_Writer_Entry;
  59. $entry->addAuthor(array('name'=>'Joe'));
  60. $this->assertEquals(array(array('name'=>'Joe')), $entry->getAuthors());
  61. }
  62. public function testAddsAuthorEmailFromArray()
  63. {
  64. $entry = new Zend_Feed_Writer_Entry;
  65. $entry->addAuthor(array('name'=>'Joe','email'=>'joe@example.com'));
  66. $this->assertEquals(array(array('name'=>'Joe', 'email' => 'joe@example.com')), $entry->getAuthors());
  67. }
  68. public function testAddsAuthorUriFromArray()
  69. {
  70. $entry = new Zend_Feed_Writer_Entry;
  71. $entry->addAuthor(array('name'=>'Joe','uri'=>'http://www.example.com'));
  72. $this->assertEquals(array(array('name'=>'Joe', 'uri' => 'http://www.example.com')), $entry->getAuthors());
  73. }
  74. public function testAddAuthorThrowsExceptionOnInvalidNameFromArray()
  75. {
  76. $entry = new Zend_Feed_Writer_Entry;
  77. try {
  78. $entry->addAuthor(array('name'=>''));
  79. $this->fail();
  80. } catch (Zend_Feed_Exception $e) {
  81. }
  82. }
  83. public function testAddAuthorThrowsExceptionOnInvalidEmailFromArray()
  84. {
  85. $entry = new Zend_Feed_Writer_Entry;
  86. try {
  87. $entry->addAuthor(array('name'=>'Joe','email'=>''));
  88. $this->fail();
  89. } catch (Zend_Feed_Exception $e) {
  90. }
  91. }
  92. public function testAddAuthorThrowsExceptionOnInvalidUriFromArray()
  93. {
  94. $entry = new Zend_Feed_Writer_Entry;
  95. try {
  96. $entry->addAuthor(array('name'=>'Joe','uri'=>'notauri'));
  97. $this->fail();
  98. } catch (Zend_Feed_Exception $e) {
  99. }
  100. }
  101. public function testAddAuthorThrowsExceptionIfNameOmittedFromArray()
  102. {
  103. $entry = new Zend_Feed_Writer_Entry;
  104. try {
  105. $entry->addAuthor(array('uri'=>'notauri'));
  106. $this->fail();
  107. } catch (Zend_Feed_Exception $e) {
  108. }
  109. }
  110. public function testAddsAuthorsFromArrayOfAuthors()
  111. {
  112. $entry = new Zend_Feed_Writer_Entry;
  113. $entry->addAuthors(array(
  114. array('name'=>'Joe','uri'=>'http://www.example.com'),
  115. array('name'=>'Jane','uri'=>'http://www.example.com')
  116. ));
  117. $expected = array(
  118. array('name'=>'Joe','uri'=>'http://www.example.com'),
  119. array('name'=>'Jane','uri'=>'http://www.example.com')
  120. );
  121. $this->assertEquals($expected, $entry->getAuthors());
  122. }
  123. public function testAddsEnclosure()
  124. {
  125. $entry = new Zend_Feed_Writer_Entry;
  126. $entry->setEnclosure(array(
  127. 'type' => 'audio/mpeg',
  128. 'uri' => 'http://example.com/audio.mp3',
  129. 'length' => '1337'
  130. ));
  131. $expected = array(
  132. 'type' => 'audio/mpeg',
  133. 'uri' => 'http://example.com/audio.mp3',
  134. 'length' => '1337'
  135. );
  136. $this->assertEquals($expected, $entry->getEnclosure());
  137. }
  138. /**
  139. * @expectedException Zend_Feed_Exception
  140. */
  141. public function testAddsEnclosureThrowsExceptionOnMissingType()
  142. {
  143. $entry = new Zend_Feed_Writer_Entry;
  144. $entry->setEnclosure(array(
  145. 'uri' => 'http://example.com/audio.mp3',
  146. 'length' => '1337'
  147. ));
  148. }
  149. /**
  150. * @expectedException Zend_Feed_Exception
  151. */
  152. public function testAddsEnclosureThrowsExceptionOnMissingUri()
  153. {
  154. $entry = new Zend_Feed_Writer_Entry;
  155. $entry->setEnclosure(array(
  156. 'type' => 'audio/mpeg',
  157. 'length' => '1337'
  158. ));
  159. }
  160. /**
  161. * @expectedException Zend_Feed_Exception
  162. */
  163. public function testAddsEnclosureThrowsExceptionOnMissingLength()
  164. {
  165. $entry = new Zend_Feed_Writer_Entry;
  166. $entry->setEnclosure(array(
  167. 'type' => 'audio/mpeg',
  168. 'uri' => 'http://example.com/audio.mp3'
  169. ));
  170. }
  171. /**
  172. * @expectedException Zend_Feed_Exception
  173. */
  174. public function testAddsEnclosureThrowsExceptionOnNonNumericLength()
  175. {
  176. $entry = new Zend_Feed_Writer_Entry;
  177. $entry->setEnclosure(array(
  178. 'type' => 'audio/mpeg',
  179. 'uri' => 'http://example.com/audio.mp3',
  180. 'length' => 'abc'
  181. ));
  182. }
  183. /**
  184. * @expectedException Zend_Feed_Exception
  185. */
  186. public function testAddsEnclosureThrowsExceptionOnNegativeLength()
  187. {
  188. $entry = new Zend_Feed_Writer_Entry;
  189. $entry->setEnclosure(array(
  190. 'type' => 'audio/mpeg',
  191. 'uri' => 'http://example.com/audio.mp3',
  192. 'length' => -23
  193. ));
  194. }
  195. /**
  196. * @expectedException Zend_Feed_Exception
  197. */
  198. public function testAddsEnclosureThrowsExceptionWhenUriIsInvalid()
  199. {
  200. $entry = new Zend_Feed_Writer_Entry;
  201. $entry->setEnclosure(array(
  202. 'type' => 'audio/mpeg',
  203. 'uri' => 'http://',
  204. 'length' => '1337'
  205. ));
  206. }
  207. public function testSetsCopyright()
  208. {
  209. $entry = new Zend_Feed_Writer_Entry;
  210. $entry->setCopyright('Copyright (c) 2009 Paddy Brady');
  211. $this->assertEquals('Copyright (c) 2009 Paddy Brady', $entry->getCopyright());
  212. }
  213. public function testSetCopyrightThrowsExceptionOnInvalidParam()
  214. {
  215. $entry = new Zend_Feed_Writer_Entry;
  216. try {
  217. $entry->setCopyright('');
  218. $this->fail();
  219. } catch (Zend_Feed_Exception $e) {
  220. }
  221. }
  222. public function testSetsContent()
  223. {
  224. $entry = new Zend_Feed_Writer_Entry;
  225. $entry->setContent('I\'m content.');
  226. $this->assertEquals("I'm content.", $entry->getContent());
  227. }
  228. public function testSetContentThrowsExceptionOnInvalidParam()
  229. {
  230. $entry = new Zend_Feed_Writer_Entry;
  231. try {
  232. $entry->setContent('');
  233. $this->fail();
  234. } catch (Zend_Feed_Exception $e) {
  235. }
  236. }
  237. public function testSetDateCreatedDefaultsToCurrentTime()
  238. {
  239. $entry = new Zend_Feed_Writer_Entry;
  240. $entry->setDateCreated();
  241. $dateNow = new Zend_Date;
  242. $this->assertTrue($dateNow->isLater($entry->getDateCreated()) || $dateNow->equals($entry->getDateCreated()));
  243. }
  244. public function testSetDateCreatedUsesGivenUnixTimestamp()
  245. {
  246. $entry = new Zend_Feed_Writer_Entry;
  247. $entry->setDateCreated(1234567890);
  248. $myDate = new Zend_Date('1234567890', Zend_Date::TIMESTAMP);
  249. $this->assertTrue($myDate->equals($entry->getDateCreated()));
  250. }
  251. public function testSetDateCreatedUsesZendDateObject()
  252. {
  253. $entry = new Zend_Feed_Writer_Entry;
  254. $entry->setDateCreated(new Zend_Date('1234567890', Zend_Date::TIMESTAMP));
  255. $myDate = new Zend_Date('1234567890', Zend_Date::TIMESTAMP);
  256. $this->assertTrue($myDate->equals($entry->getDateCreated()));
  257. }
  258. public function testSetDateModifiedDefaultsToCurrentTime()
  259. {
  260. $entry = new Zend_Feed_Writer_Entry;
  261. $entry->setDateModified();
  262. $dateNow = new Zend_Date;
  263. $this->assertTrue($dateNow->isLater($entry->getDateModified()) || $dateNow->equals($entry->getDateModified()));
  264. }
  265. public function testSetDateModifiedUsesGivenUnixTimestamp()
  266. {
  267. $entry = new Zend_Feed_Writer_Entry;
  268. $entry->setDateModified(1234567890);
  269. $myDate = new Zend_Date('1234567890', Zend_Date::TIMESTAMP);
  270. $this->assertTrue($myDate->equals($entry->getDateModified()));
  271. }
  272. public function testSetDateModifiedUsesZendDateObject()
  273. {
  274. $entry = new Zend_Feed_Writer_Entry;
  275. $entry->setDateModified(new Zend_Date('1234567890', Zend_Date::TIMESTAMP));
  276. $myDate = new Zend_Date('1234567890', Zend_Date::TIMESTAMP);
  277. $this->assertTrue($myDate->equals($entry->getDateModified()));
  278. }
  279. public function testSetDateCreatedThrowsExceptionOnInvalidParameter()
  280. {
  281. $entry = new Zend_Feed_Writer_Entry;
  282. try {
  283. $entry->setDateCreated('abc');
  284. $this->fail();
  285. } catch (Zend_Feed_Exception $e) {
  286. }
  287. }
  288. public function testSetDateModifiedThrowsExceptionOnInvalidParameter()
  289. {
  290. $entry = new Zend_Feed_Writer_Entry;
  291. try {
  292. $entry->setDateModified('abc');
  293. $this->fail();
  294. } catch (Zend_Feed_Exception $e) {
  295. }
  296. }
  297. public function testGetDateCreatedReturnsNullIfDateNotSet()
  298. {
  299. $entry = new Zend_Feed_Writer_Entry;
  300. $this->assertTrue(is_null($entry->getDateCreated()));
  301. }
  302. public function testGetDateModifiedReturnsNullIfDateNotSet()
  303. {
  304. $entry = new Zend_Feed_Writer_Entry;
  305. $this->assertTrue(is_null($entry->getDateModified()));
  306. }
  307. public function testGetCopyrightReturnsNullIfDateNotSet()
  308. {
  309. $entry = new Zend_Feed_Writer_Entry;
  310. $this->assertTrue(is_null($entry->getCopyright()));
  311. }
  312. public function testGetContentReturnsNullIfDateNotSet()
  313. {
  314. $entry = new Zend_Feed_Writer_Entry;
  315. $this->assertTrue(is_null($entry->getContent()));
  316. }
  317. public function testSetsDescription()
  318. {
  319. $entry = new Zend_Feed_Writer_Entry;
  320. $entry->setDescription('abc');
  321. $this->assertEquals('abc', $entry->getDescription());
  322. }
  323. public function testSetDescriptionThrowsExceptionOnInvalidParameter()
  324. {
  325. $entry = new Zend_Feed_Writer_Entry;
  326. try {
  327. $entry->setDescription('');
  328. $this->fail();
  329. } catch (Zend_Feed_Exception $e) {
  330. }
  331. }
  332. public function testGetDescriptionReturnsNullIfDateNotSet()
  333. {
  334. $entry = new Zend_Feed_Writer_Entry;
  335. $this->assertTrue(is_null($entry->getDescription()));
  336. }
  337. public function testSetsId()
  338. {
  339. $entry = new Zend_Feed_Writer_Entry;
  340. $entry->setId('http://www.example.com/id');
  341. $this->assertEquals('http://www.example.com/id', $entry->getId());
  342. }
  343. public function testSetIdThrowsExceptionOnInvalidParameter()
  344. {
  345. $entry = new Zend_Feed_Writer_Entry;
  346. try {
  347. $entry->setId('');
  348. $this->fail();
  349. } catch (Zend_Feed_Exception $e) {
  350. }
  351. }
  352. public function testGetIdReturnsNullIfDateNotSet()
  353. {
  354. $entry = new Zend_Feed_Writer_Entry;
  355. $this->assertTrue(is_null($entry->getId()));
  356. }
  357. public function testSetsLink()
  358. {
  359. $entry = new Zend_Feed_Writer_Entry;
  360. $entry->setLink('http://www.example.com/id');
  361. $this->assertEquals('http://www.example.com/id', $entry->getLink());
  362. }
  363. public function testSetLinkThrowsExceptionOnEmptyString()
  364. {
  365. $entry = new Zend_Feed_Writer_Entry;
  366. try {
  367. $entry->setLink('');
  368. $this->fail();
  369. } catch (Zend_Feed_Exception $e) {
  370. }
  371. }
  372. public function testSetLinkThrowsExceptionOnInvalidUri()
  373. {
  374. $entry = new Zend_Feed_Writer_Entry;
  375. try {
  376. $entry->setLink('http://');
  377. $this->fail();
  378. } catch (Zend_Feed_Exception $e) {
  379. }
  380. }
  381. public function testGetLinkReturnsNullIfNotSet()
  382. {
  383. $entry = new Zend_Feed_Writer_Entry;
  384. $this->assertTrue(is_null($entry->getLink()));
  385. }
  386. public function testSetsCommentLink()
  387. {
  388. $entry = new Zend_Feed_Writer_Entry;
  389. $entry->setCommentLink('http://www.example.com/id/comments');
  390. $this->assertEquals('http://www.example.com/id/comments', $entry->getCommentLink());
  391. }
  392. public function testSetCommentLinkThrowsExceptionOnEmptyString()
  393. {
  394. $entry = new Zend_Feed_Writer_Entry;
  395. try {
  396. $entry->setCommentLink('');
  397. $this->fail();
  398. } catch (Zend_Feed_Exception $e) {
  399. }
  400. }
  401. public function testSetCommentLinkThrowsExceptionOnInvalidUri()
  402. {
  403. $entry = new Zend_Feed_Writer_Entry;
  404. try {
  405. $entry->setCommentLink('http://');
  406. $this->fail();
  407. } catch (Zend_Feed_Exception $e) {
  408. }
  409. }
  410. public function testGetCommentLinkReturnsNullIfDateNotSet()
  411. {
  412. $entry = new Zend_Feed_Writer_Entry;
  413. $this->assertTrue(is_null($entry->getCommentLink()));
  414. }
  415. public function testSetsCommentFeedLink()
  416. {
  417. $entry = new Zend_Feed_Writer_Entry;
  418. $entry->setCommentFeedLink(array('uri'=>'http://www.example.com/id/comments', 'type'=>'rdf'));
  419. $this->assertEquals(array(array('uri'=>'http://www.example.com/id/comments', 'type'=>'rdf')), $entry->getCommentFeedLinks());
  420. }
  421. public function testSetCommentFeedLinkThrowsExceptionOnEmptyString()
  422. {
  423. $entry = new Zend_Feed_Writer_Entry;
  424. try {
  425. $entry->setCommentFeedLink(array('uri'=>'', 'type'=>'rdf'));
  426. $this->fail();
  427. } catch (Zend_Feed_Exception $e) {
  428. }
  429. }
  430. public function testSetCommentFeedLinkThrowsExceptionOnInvalidUri()
  431. {
  432. $entry = new Zend_Feed_Writer_Entry;
  433. try {
  434. $entry->setCommentFeedLink(array('uri'=>'http://', 'type'=>'rdf'));
  435. $this->fail();
  436. } catch (Zend_Feed_Exception $e) {
  437. }
  438. }
  439. public function testSetCommentFeedLinkThrowsExceptionOnInvalidType()
  440. {
  441. $entry = new Zend_Feed_Writer_Entry;
  442. try {
  443. $entry->setCommentFeedLink(array('uri'=>'http://www.example.com/id/comments', 'type'=>'foo'));
  444. $this->fail();
  445. } catch (Zend_Feed_Exception $e) {
  446. }
  447. }
  448. public function testGetCommentFeedLinkReturnsNullIfNoneSet()
  449. {
  450. $entry = new Zend_Feed_Writer_Entry;
  451. $this->assertTrue(is_null($entry->getCommentFeedLinks()));
  452. }
  453. public function testSetsTitle()
  454. {
  455. $entry = new Zend_Feed_Writer_Entry;
  456. $entry->setTitle('abc');
  457. $this->assertEquals('abc', $entry->getTitle());
  458. }
  459. public function testSetTitleThrowsExceptionOnInvalidParameter()
  460. {
  461. $entry = new Zend_Feed_Writer_Entry;
  462. try {
  463. $entry->setTitle('');
  464. $this->fail();
  465. } catch (Zend_Feed_Exception $e) {
  466. }
  467. }
  468. public function testGetTitleReturnsNullIfDateNotSet()
  469. {
  470. $entry = new Zend_Feed_Writer_Entry;
  471. $this->assertTrue(is_null($entry->getTitle()));
  472. }
  473. public function testSetsCommentCount()
  474. {
  475. $entry = new Zend_Feed_Writer_Entry;
  476. $entry->setCommentCount('10');
  477. $this->assertEquals(10, $entry->getCommentCount());
  478. }
  479. public function testSetCommentCountThrowsExceptionOnInvalidEmptyParameter()
  480. {
  481. $entry = new Zend_Feed_Writer_Entry;
  482. try {
  483. $entry->setCommentCount('');
  484. $this->fail();
  485. } catch (Zend_Feed_Exception $e) {
  486. }
  487. }
  488. public function testSetCommentCountThrowsExceptionOnInvalidNonIntegerParameter()
  489. {
  490. $entry = new Zend_Feed_Writer_Entry;
  491. try {
  492. $entry->setCommentCount('a');
  493. $this->fail();
  494. } catch (Zend_Feed_Exception $e) {
  495. }
  496. }
  497. public function testGetCommentCountReturnsNullIfDateNotSet()
  498. {
  499. $entry = new Zend_Feed_Writer_Entry;
  500. $this->assertTrue(is_null($entry->getCommentCount()));
  501. }
  502. }