FeedTest.php 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609
  1. <?php
  2. require_once 'PHPUnit/Framework/TestCase.php';
  3. require_once 'Zend/Feed/Writer/Feed.php';
  4. class Zend_Feed_Writer_FeedTest extends PHPUnit_Framework_TestCase
  5. {
  6. protected $_feedSamplePath = null;
  7. public function setup()
  8. {
  9. $this->_feedSamplePath = dirname(__FILE__) . '/Writer/_files';
  10. }
  11. public function testAddsAuthorName()
  12. {
  13. $writer = new Zend_Feed_Writer_Feed;
  14. $writer->addAuthor('Joe');
  15. $this->assertEquals(array('name'=>'Joe'), $writer->getAuthor());
  16. }
  17. public function testAddsAuthorEmail()
  18. {
  19. $writer = new Zend_Feed_Writer_Feed;
  20. $writer->addAuthor('Joe', 'joe@example.com');
  21. $this->assertEquals(array('name'=>'Joe', 'email' => 'joe@example.com'), $writer->getAuthor());
  22. }
  23. public function testAddsAuthorUri()
  24. {
  25. $writer = new Zend_Feed_Writer_Feed;
  26. $writer->addAuthor('Joe', null, 'http://www.example.com');
  27. $this->assertEquals(array('name'=>'Joe', 'uri' => 'http://www.example.com'), $writer->getAuthor());
  28. }
  29. public function testAddAuthorThrowsExceptionOnInvalidName()
  30. {
  31. $writer = new Zend_Feed_Writer_Feed;
  32. try {
  33. $writer->addAuthor('');
  34. $this->fail();
  35. } catch (Zend_Feed_Exception $e) {
  36. }
  37. }
  38. public function testAddAuthorThrowsExceptionOnInvalidEmail()
  39. {
  40. $writer = new Zend_Feed_Writer_Feed;
  41. try {
  42. $writer->addAuthor('Joe', '');
  43. $this->fail();
  44. } catch (Zend_Feed_Exception $e) {
  45. }
  46. }
  47. public function testAddAuthorThrowsExceptionOnInvalidUri()
  48. {
  49. $writer = new Zend_Feed_Writer_Feed;
  50. try {
  51. $writer->addAuthor('Joe', null, 'notauri');
  52. $this->fail();
  53. } catch (Zend_Feed_Exception $e) {
  54. }
  55. }
  56. public function testAddsAuthorNameFromArray()
  57. {
  58. $writer = new Zend_Feed_Writer_Feed;
  59. $writer->addAuthor(array('name'=>'Joe'));
  60. $this->assertEquals(array('name'=>'Joe'), $writer->getAuthor());
  61. }
  62. public function testAddsAuthorEmailFromArray()
  63. {
  64. $writer = new Zend_Feed_Writer_Feed;
  65. $writer->addAuthor(array('name'=>'Joe','email'=>'joe@example.com'));
  66. $this->assertEquals(array('name'=>'Joe', 'email' => 'joe@example.com'), $writer->getAuthor());
  67. }
  68. public function testAddsAuthorUriFromArray()
  69. {
  70. $writer = new Zend_Feed_Writer_Feed;
  71. $writer->addAuthor(array('name'=>'Joe','uri'=>'http://www.example.com'));
  72. $this->assertEquals(array('name'=>'Joe', 'uri' => 'http://www.example.com'), $writer->getAuthor());
  73. }
  74. public function testAddAuthorThrowsExceptionOnInvalidNameFromArray()
  75. {
  76. $writer = new Zend_Feed_Writer_Feed;
  77. try {
  78. $writer->addAuthor(array('name'=>''));
  79. $this->fail();
  80. } catch (Zend_Feed_Exception $e) {
  81. }
  82. }
  83. public function testAddAuthorThrowsExceptionOnInvalidEmailFromArray()
  84. {
  85. $writer = new Zend_Feed_Writer_Feed;
  86. try {
  87. $writer->addAuthor(array('name'=>'Joe','email'=>''));
  88. $this->fail();
  89. } catch (Zend_Feed_Exception $e) {
  90. }
  91. }
  92. public function testAddAuthorThrowsExceptionOnInvalidUriFromArray()
  93. {
  94. $writer = new Zend_Feed_Writer_Feed;
  95. try {
  96. $writer->addAuthor(array('name'=>'Joe','uri'=>'notauri'));
  97. $this->fail();
  98. } catch (Zend_Feed_Exception $e) {
  99. }
  100. }
  101. public function testAddAuthorThrowsExceptionIfNameOmittedFromArray()
  102. {
  103. $writer = new Zend_Feed_Writer_Feed;
  104. try {
  105. $writer->addAuthor(array('uri'=>'notauri'));
  106. $this->fail();
  107. } catch (Zend_Feed_Exception $e) {
  108. }
  109. }
  110. public function testAddsAuthorsFromArrayOfAuthors()
  111. {
  112. $writer = new Zend_Feed_Writer_Feed;
  113. $writer->addAuthors(array(
  114. array('name'=>'Joe','uri'=>'http://www.example.com'),
  115. array('name'=>'Jane','uri'=>'http://www.example.com')
  116. ));
  117. $this->assertEquals(array('name'=>'Jane', 'uri' => 'http://www.example.com'), $writer->getAuthor(1));
  118. }
  119. public function testSetsCopyright()
  120. {
  121. $writer = new Zend_Feed_Writer_Feed;
  122. $writer->setCopyright('Copyright (c) 2009 Paddy Brady');
  123. $this->assertEquals('Copyright (c) 2009 Paddy Brady', $writer->getCopyright());
  124. }
  125. public function testSetCopyrightThrowsExceptionOnInvalidParam()
  126. {
  127. $writer = new Zend_Feed_Writer_Feed;
  128. try {
  129. $writer->setCopyright('');
  130. $this->fail();
  131. } catch (Zend_Feed_Exception $e) {
  132. }
  133. }
  134. public function testSetDateCreatedDefaultsToCurrentTime()
  135. {
  136. $writer = new Zend_Feed_Writer_Feed;
  137. $writer->setDateCreated();
  138. $dateNow = new Zend_Date;
  139. $this->assertTrue($dateNow->isLater($writer->getDateCreated()) || $dateNow->equals($writer->getDateCreated()));
  140. }
  141. public function testSetDateCreatedUsesGivenUnixTimestamp()
  142. {
  143. $writer = new Zend_Feed_Writer_Feed;
  144. $writer->setDateCreated(1234567890);
  145. $myDate = new Zend_Date('1234567890', Zend_Date::TIMESTAMP);
  146. $this->assertTrue($myDate->equals($writer->getDateCreated()));
  147. }
  148. public function testSetDateCreatedUsesZendDateObject()
  149. {
  150. $writer = new Zend_Feed_Writer_Feed;
  151. $writer->setDateCreated(new Zend_Date('1234567890', Zend_Date::TIMESTAMP));
  152. $myDate = new Zend_Date('1234567890', Zend_Date::TIMESTAMP);
  153. $this->assertTrue($myDate->equals($writer->getDateCreated()));
  154. }
  155. public function testSetDateModifiedDefaultsToCurrentTime()
  156. {
  157. $writer = new Zend_Feed_Writer_Feed;
  158. $writer->setDateModified();
  159. $dateNow = new Zend_Date;
  160. $this->assertTrue($dateNow->isLater($writer->getDateModified()) || $dateNow->equals($writer->getDateModified()));
  161. }
  162. public function testSetDateModifiedUsesGivenUnixTimestamp()
  163. {
  164. $writer = new Zend_Feed_Writer_Feed;
  165. $writer->setDateModified(1234567890);
  166. $myDate = new Zend_Date('1234567890', Zend_Date::TIMESTAMP);
  167. $this->assertTrue($myDate->equals($writer->getDateModified()));
  168. }
  169. public function testSetDateModifiedUsesZendDateObject()
  170. {
  171. $writer = new Zend_Feed_Writer_Feed;
  172. $writer->setDateModified(new Zend_Date('1234567890', Zend_Date::TIMESTAMP));
  173. $myDate = new Zend_Date('1234567890', Zend_Date::TIMESTAMP);
  174. $this->assertTrue($myDate->equals($writer->getDateModified()));
  175. }
  176. public function testSetDateCreatedThrowsExceptionOnInvalidParameter()
  177. {
  178. $writer = new Zend_Feed_Writer_Feed;
  179. try {
  180. $writer->setDateCreated('abc');
  181. $this->fail();
  182. } catch (Zend_Feed_Exception $e) {
  183. }
  184. }
  185. public function testSetDateModifiedThrowsExceptionOnInvalidParameter()
  186. {
  187. $writer = new Zend_Feed_Writer_Feed;
  188. try {
  189. $writer->setDateModified('abc');
  190. $this->fail();
  191. } catch (Zend_Feed_Exception $e) {
  192. }
  193. }
  194. public function testGetDateCreatedReturnsNullIfDateNotSet()
  195. {
  196. $writer = new Zend_Feed_Writer_Feed;
  197. $this->assertTrue(is_null($writer->getDateCreated()));
  198. }
  199. public function testGetDateModifiedReturnsNullIfDateNotSet()
  200. {
  201. $writer = new Zend_Feed_Writer_Feed;
  202. $this->assertTrue(is_null($writer->getDateModified()));
  203. }
  204. public function testGetCopyrightReturnsNullIfDateNotSet()
  205. {
  206. $writer = new Zend_Feed_Writer_Feed;
  207. $this->assertTrue(is_null($writer->getCopyright()));
  208. }
  209. public function testSetsDescription()
  210. {
  211. $writer = new Zend_Feed_Writer_Feed;
  212. $writer->setDescription('abc');
  213. $this->assertEquals('abc', $writer->getDescription());
  214. }
  215. public function testSetDescriptionThrowsExceptionOnInvalidParameter()
  216. {
  217. $writer = new Zend_Feed_Writer_Feed;
  218. try {
  219. $writer->setDescription('');
  220. $this->fail();
  221. } catch (Zend_Feed_Exception $e) {
  222. }
  223. }
  224. public function testGetDescriptionReturnsNullIfDateNotSet()
  225. {
  226. $writer = new Zend_Feed_Writer_Feed;
  227. $this->assertTrue(is_null($writer->getDescription()));
  228. }
  229. public function testSetsId()
  230. {
  231. $writer = new Zend_Feed_Writer_Feed;
  232. $writer->setId('http://www.example.com/id');
  233. $this->assertEquals('http://www.example.com/id', $writer->getId());
  234. }
  235. public function testSetsIdAcceptsUrns()
  236. {
  237. $writer = new Zend_Feed_Writer_Feed;
  238. $writer->setId('urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6');
  239. $this->assertEquals('urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6', $writer->getId());
  240. }
  241. public function testSetIdThrowsExceptionOnInvalidParameter()
  242. {
  243. $writer = new Zend_Feed_Writer_Feed;
  244. try {
  245. $writer->setId('');
  246. $this->fail();
  247. } catch (Zend_Feed_Exception $e) {
  248. }
  249. }
  250. public function testSetIdThrowsExceptionOnInvalidUri()
  251. {
  252. $writer = new Zend_Feed_Writer_Feed;
  253. try {
  254. $writer->setId('http://');
  255. $this->fail();
  256. } catch (Zend_Feed_Exception $e) {
  257. }
  258. }
  259. public function testGetIdReturnsNullIfDateNotSet()
  260. {
  261. $writer = new Zend_Feed_Writer_Feed;
  262. $this->assertTrue(is_null($writer->getId()));
  263. }
  264. public function testSetsLanguage()
  265. {
  266. $writer = new Zend_Feed_Writer_Feed;
  267. $writer->setLanguage('abc');
  268. $this->assertEquals('abc', $writer->getLanguage());
  269. }
  270. public function testSetLanguageThrowsExceptionOnInvalidParameter()
  271. {
  272. $writer = new Zend_Feed_Writer_Feed;
  273. try {
  274. $writer->setLanguage('');
  275. $this->fail();
  276. } catch (Zend_Feed_Exception $e) {
  277. }
  278. }
  279. public function testGetLanguageReturnsNullIfDateNotSet()
  280. {
  281. $writer = new Zend_Feed_Writer_Feed;
  282. $this->assertTrue(is_null($writer->getLanguage()));
  283. }
  284. public function testSetsLink()
  285. {
  286. $writer = new Zend_Feed_Writer_Feed;
  287. $writer->setLink('http://www.example.com/id');
  288. $this->assertEquals('http://www.example.com/id', $writer->getLink());
  289. }
  290. public function testSetLinkThrowsExceptionOnEmptyString()
  291. {
  292. $writer = new Zend_Feed_Writer_Feed;
  293. try {
  294. $writer->setLink('');
  295. $this->fail();
  296. } catch (Zend_Feed_Exception $e) {
  297. }
  298. }
  299. public function testSetLinkThrowsExceptionOnInvalidUri()
  300. {
  301. $writer = new Zend_Feed_Writer_Feed;
  302. try {
  303. $writer->setLink('http://');
  304. $this->fail();
  305. } catch (Zend_Feed_Exception $e) {
  306. }
  307. }
  308. public function testGetLinkReturnsNullIfDateNotSet()
  309. {
  310. $writer = new Zend_Feed_Writer_Feed;
  311. $this->assertTrue(is_null($writer->getLink()));
  312. }
  313. public function testSetsEncoding()
  314. {
  315. $writer = new Zend_Feed_Writer_Feed;
  316. $writer->setEncoding('utf-16');
  317. $this->assertEquals('utf-16', $writer->getEncoding());
  318. }
  319. public function testSetEncodingThrowsExceptionOnInvalidParameter()
  320. {
  321. $writer = new Zend_Feed_Writer_Feed;
  322. try {
  323. $writer->setEncoding('');
  324. $this->fail();
  325. } catch (Zend_Feed_Exception $e) {
  326. }
  327. }
  328. public function testGetEncodingReturnsUtf8IfNotSet()
  329. {
  330. $writer = new Zend_Feed_Writer_Feed;
  331. $this->assertEquals('UTF-8', $writer->getEncoding());
  332. }
  333. public function testSetsTitle()
  334. {
  335. $writer = new Zend_Feed_Writer_Feed;
  336. $writer->setTitle('abc');
  337. $this->assertEquals('abc', $writer->getTitle());
  338. }
  339. public function testSetTitleThrowsExceptionOnInvalidParameter()
  340. {
  341. $writer = new Zend_Feed_Writer_Feed;
  342. try {
  343. $writer->setTitle('');
  344. $this->fail();
  345. } catch (Zend_Feed_Exception $e) {
  346. }
  347. }
  348. public function testGetTitleReturnsNullIfDateNotSet()
  349. {
  350. $writer = new Zend_Feed_Writer_Feed;
  351. $this->assertTrue(is_null($writer->getTitle()));
  352. }
  353. public function testSetsGeneratorName()
  354. {
  355. $writer = new Zend_Feed_Writer_Feed;
  356. $writer->setGenerator('ZFW');
  357. $this->assertEquals(array('name'=>'ZFW'), $writer->getGenerator());
  358. }
  359. public function testSetsGeneratorVersion()
  360. {
  361. $writer = new Zend_Feed_Writer_Feed;
  362. $writer->setGenerator('ZFW', '1.0');
  363. $this->assertEquals(array('name'=>'ZFW', 'version' => '1.0'), $writer->getGenerator());
  364. }
  365. public function testSetsGeneratorUri()
  366. {
  367. $writer = new Zend_Feed_Writer_Feed;
  368. $writer->setGenerator('ZFW', null, 'http://www.example.com');
  369. $this->assertEquals(array('name'=>'ZFW', 'uri' => 'http://www.example.com'), $writer->getGenerator());
  370. }
  371. public function testSetsGeneratorThrowsExceptionOnInvalidName()
  372. {
  373. $writer = new Zend_Feed_Writer_Feed;
  374. try {
  375. $writer->setGenerator('');
  376. $this->fail();
  377. } catch (Zend_Feed_Exception $e) {
  378. }
  379. }
  380. public function testSetsGeneratorThrowsExceptionOnInvalidVersion()
  381. {
  382. $writer = new Zend_Feed_Writer_Feed;
  383. try {
  384. $writer->addAuthor('ZFW', '');
  385. $this->fail();
  386. } catch (Zend_Feed_Exception $e) {
  387. }
  388. }
  389. public function testSetsGeneratorThrowsExceptionOnInvalidUri()
  390. {
  391. $writer = new Zend_Feed_Writer_Feed;
  392. try {
  393. $writer->setGenerator('ZFW', null, 'notauri');
  394. $this->fail();
  395. } catch (Zend_Feed_Exception $e) {
  396. }
  397. }
  398. public function testGetGeneratorReturnsNullIfDateNotSet()
  399. {
  400. $writer = new Zend_Feed_Writer_Feed;
  401. $this->assertTrue(is_null($writer->getGenerator()));
  402. }
  403. public function testSetsFeedLink()
  404. {
  405. $writer = new Zend_Feed_Writer_Feed;
  406. $writer->setFeedLink('http://www.example.com/rss', 'RSS');
  407. $this->assertEquals(array('rss'=>'http://www.example.com/rss'), $writer->getFeedLinks());
  408. }
  409. public function testSetsFeedLinkThrowsExceptionOnInvalidType()
  410. {
  411. $writer = new Zend_Feed_Writer_Feed;
  412. try {
  413. $writer->setFeedLink('http://www.example.com/rss', 'abc');
  414. $this->fail();
  415. } catch (Zend_Feed_Exception $e) {
  416. }
  417. }
  418. public function testSetsFeedLinkThrowsExceptionOnInvalidUri()
  419. {
  420. $writer = new Zend_Feed_Writer_Feed;
  421. try {
  422. $writer->setFeedLink('http://', 'rss');
  423. $this->fail();
  424. } catch (Zend_Feed_Exception $e) {
  425. }
  426. }
  427. public function testGetFeedLinksReturnsNullIfNotSet()
  428. {
  429. $writer = new Zend_Feed_Writer_Feed;
  430. $this->assertTrue(is_null($writer->getFeedLinks()));
  431. }
  432. public function testSetsBaseUrl()
  433. {
  434. $writer = new Zend_Feed_Writer_Feed;
  435. $writer->setBaseUrl('http://www.example.com');
  436. $this->assertEquals('http://www.example.com', $writer->getBaseUrl());
  437. }
  438. public function testSetsBaseUrlThrowsExceptionOnInvalidUri()
  439. {
  440. $writer = new Zend_Feed_Writer_Feed;
  441. try {
  442. $writer->setBaseUrl('http://');
  443. $this->fail();
  444. } catch (Zend_Feed_Exception $e) {
  445. }
  446. }
  447. public function testGetBaseUrlReturnsNullIfNotSet()
  448. {
  449. $writer = new Zend_Feed_Writer_Feed;
  450. $this->assertTrue(is_null($writer->getBaseUrl()));
  451. }
  452. public function testAddsHubUrl()
  453. {
  454. $writer = new Zend_Feed_Writer_Feed;
  455. $writer->addHub('http://www.example.com/hub');
  456. $this->assertEquals(array('http://www.example.com/hub'), $writer->getHubs());
  457. }
  458. public function testAddsManyHubUrls()
  459. {
  460. $writer = new Zend_Feed_Writer_Feed;
  461. $writer->addHubs(array('http://www.example.com/hub', 'http://www.example.com/hub2'));
  462. $this->assertEquals(array('http://www.example.com/hub', 'http://www.example.com/hub2'), $writer->getHubs());
  463. }
  464. public function testAddingHubUrlThrowsExceptionOnInvalidUri()
  465. {
  466. $writer = new Zend_Feed_Writer_Feed;
  467. try {
  468. $writer->addHub('http://');
  469. $this->fail();
  470. } catch (Zend_Feed_Exception $e) {
  471. }
  472. }
  473. public function testAddingHubUrlReturnsNullIfNotSet()
  474. {
  475. $writer = new Zend_Feed_Writer_Feed;
  476. $this->assertTrue(is_null($writer->getHubs()));
  477. }
  478. public function testCreatesNewEntryDataContainer()
  479. {
  480. $writer = new Zend_Feed_Writer_Feed;
  481. $entry = $writer->createEntry();
  482. $this->assertTrue($entry instanceof Zend_Feed_Writer_Entry);
  483. }
  484. public function testAddsCategory()
  485. {
  486. $writer = new Zend_Feed_Writer_Feed;
  487. $writer->addCategory(array('term'=>'cat_dog'));
  488. $this->assertEquals(array(array('term'=>'cat_dog')), $writer->getCategories());
  489. }
  490. public function testAddsManyCategories()
  491. {
  492. $writer = new Zend_Feed_Writer_Feed;
  493. $writer->addCategories(array(array('term'=>'cat_dog'),array('term'=>'cat_mouse')));
  494. $this->assertEquals(array(array('term'=>'cat_dog'),array('term'=>'cat_mouse')), $writer->getCategories());
  495. }
  496. public function testAddingCategoryWithoutTermThrowsException()
  497. {
  498. $writer = new Zend_Feed_Writer_Feed;
  499. try {
  500. $writer->addCategory(array('label' => 'Cats & Dogs', 'scheme' => 'http://www.example.com/schema1'));
  501. $this->fail();
  502. } catch (Zend_Feed_Exception $e) {
  503. }
  504. }
  505. public function testAddingCategoryWithInvalidUriAsSchemeThrowsException()
  506. {
  507. $writer = new Zend_Feed_Writer_Feed;
  508. try {
  509. $writer->addCategory(array('term' => 'cat_dog', 'scheme' => 'http://'));
  510. $this->fail();
  511. } catch (Zend_Feed_Exception $e) {
  512. }
  513. }
  514. public function testGetCategoriesReturnsNullIfNotSet()
  515. {
  516. $writer = new Zend_Feed_Writer_Feed;
  517. $this->assertTrue(is_null($writer->getCategories()));
  518. }
  519. public function testAddsAndOrdersEntriesByDateIfRequested()
  520. {
  521. $writer = new Zend_Feed_Writer_Feed;
  522. $entry = $writer->createEntry();
  523. $entry->setDateCreated(1234567890);
  524. $entry2 = $writer->createEntry();
  525. $entry2->setDateCreated(1230000000);
  526. $writer->addEntry($entry);
  527. $writer->addEntry($entry2);
  528. $writer->orderByDate();
  529. $this->assertEquals(1230000000, $writer->getEntry(1)->getDateCreated()->get(Zend_Date::TIMESTAMP));
  530. }
  531. }