FeedTest.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915
  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_Feed
  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. require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/TestHelper.php';
  23. require_once 'Zend/Feed/Writer/Feed.php';
  24. /**
  25. * @category Zend
  26. * @package Zend_Feed
  27. * @subpackage UnitTests
  28. * @group Zend_Feed
  29. * @group Zend_Feed_Writer
  30. * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  31. * @license http://framework.zend.com/license/new-bsd New BSD License
  32. */
  33. class Zend_Feed_Writer_FeedTest extends PHPUnit_Framework_TestCase
  34. {
  35. protected $_feedSamplePath = null;
  36. public function setup()
  37. {
  38. $this->_feedSamplePath = dirname(__FILE__) . '/Writer/_files';
  39. }
  40. public function testAddsAuthorName()
  41. {
  42. $writer = new Zend_Feed_Writer_Feed;
  43. $writer->addAuthor('Joe');
  44. $this->assertEquals(array('name'=>'Joe'), $writer->getAuthor());
  45. }
  46. public function testAddsAuthorEmail()
  47. {
  48. $writer = new Zend_Feed_Writer_Feed;
  49. $writer->addAuthor('Joe', 'joe@example.com');
  50. $this->assertEquals(array('name'=>'Joe', 'email' => 'joe@example.com'), $writer->getAuthor());
  51. }
  52. public function testAddsAuthorUri()
  53. {
  54. $writer = new Zend_Feed_Writer_Feed;
  55. $writer->addAuthor('Joe', null, 'http://www.example.com');
  56. $this->assertEquals(array('name'=>'Joe', 'uri' => 'http://www.example.com'), $writer->getAuthor());
  57. }
  58. public function testAddAuthorThrowsExceptionOnInvalidName()
  59. {
  60. $writer = new Zend_Feed_Writer_Feed;
  61. try {
  62. $writer->addAuthor('');
  63. $this->fail();
  64. } catch (Zend_Feed_Exception $e) {
  65. }
  66. }
  67. public function testAddAuthorThrowsExceptionOnInvalidEmail()
  68. {
  69. $writer = new Zend_Feed_Writer_Feed;
  70. try {
  71. $writer->addAuthor('Joe', '');
  72. $this->fail();
  73. } catch (Zend_Feed_Exception $e) {
  74. }
  75. }
  76. public function testAddAuthorThrowsExceptionOnInvalidUri()
  77. {
  78. $writer = new Zend_Feed_Writer_Feed;
  79. try {
  80. $writer->addAuthor('Joe', null, 'notauri');
  81. $this->fail();
  82. } catch (Zend_Feed_Exception $e) {
  83. }
  84. }
  85. public function testAddsAuthorNameFromArray()
  86. {
  87. $writer = new Zend_Feed_Writer_Feed;
  88. $writer->addAuthor(array('name'=>'Joe'));
  89. $this->assertEquals(array('name'=>'Joe'), $writer->getAuthor());
  90. }
  91. public function testAddsAuthorEmailFromArray()
  92. {
  93. $writer = new Zend_Feed_Writer_Feed;
  94. $writer->addAuthor(array('name'=>'Joe','email'=>'joe@example.com'));
  95. $this->assertEquals(array('name'=>'Joe', 'email' => 'joe@example.com'), $writer->getAuthor());
  96. }
  97. public function testAddsAuthorUriFromArray()
  98. {
  99. $writer = new Zend_Feed_Writer_Feed;
  100. $writer->addAuthor(array('name'=>'Joe','uri'=>'http://www.example.com'));
  101. $this->assertEquals(array('name'=>'Joe', 'uri' => 'http://www.example.com'), $writer->getAuthor());
  102. }
  103. public function testAddAuthorThrowsExceptionOnInvalidNameFromArray()
  104. {
  105. $writer = new Zend_Feed_Writer_Feed;
  106. try {
  107. $writer->addAuthor(array('name'=>''));
  108. $this->fail();
  109. } catch (Zend_Feed_Exception $e) {
  110. }
  111. }
  112. public function testAddAuthorThrowsExceptionOnInvalidEmailFromArray()
  113. {
  114. $writer = new Zend_Feed_Writer_Feed;
  115. try {
  116. $writer->addAuthor(array('name'=>'Joe','email'=>''));
  117. $this->fail();
  118. } catch (Zend_Feed_Exception $e) {
  119. }
  120. }
  121. public function testAddAuthorThrowsExceptionOnInvalidUriFromArray()
  122. {
  123. $writer = new Zend_Feed_Writer_Feed;
  124. try {
  125. $writer->addAuthor(array('name'=>'Joe','uri'=>'notauri'));
  126. $this->fail();
  127. } catch (Zend_Feed_Exception $e) {
  128. }
  129. }
  130. public function testAddAuthorThrowsExceptionIfNameOmittedFromArray()
  131. {
  132. $writer = new Zend_Feed_Writer_Feed;
  133. try {
  134. $writer->addAuthor(array('uri'=>'notauri'));
  135. $this->fail();
  136. } catch (Zend_Feed_Exception $e) {
  137. }
  138. }
  139. public function testAddsAuthorsFromArrayOfAuthors()
  140. {
  141. $writer = new Zend_Feed_Writer_Feed;
  142. $writer->addAuthors(array(
  143. array('name'=>'Joe','uri'=>'http://www.example.com'),
  144. array('name'=>'Jane','uri'=>'http://www.example.com')
  145. ));
  146. $this->assertEquals(array('name'=>'Jane', 'uri' => 'http://www.example.com'), $writer->getAuthor(1));
  147. }
  148. public function testSetsCopyright()
  149. {
  150. $writer = new Zend_Feed_Writer_Feed;
  151. $writer->setCopyright('Copyright (c) 2009 Paddy Brady');
  152. $this->assertEquals('Copyright (c) 2009 Paddy Brady', $writer->getCopyright());
  153. }
  154. public function testSetCopyrightThrowsExceptionOnInvalidParam()
  155. {
  156. $writer = new Zend_Feed_Writer_Feed;
  157. try {
  158. $writer->setCopyright('');
  159. $this->fail();
  160. } catch (Zend_Feed_Exception $e) {
  161. }
  162. }
  163. public function testSetDateCreatedDefaultsToCurrentTime()
  164. {
  165. $writer = new Zend_Feed_Writer_Feed;
  166. $writer->setDateCreated();
  167. $dateNow = new Zend_Date;
  168. $this->assertTrue($dateNow->isLater($writer->getDateCreated()) || $dateNow->equals($writer->getDateCreated()));
  169. }
  170. public function testSetDateCreatedUsesGivenUnixTimestamp()
  171. {
  172. $writer = new Zend_Feed_Writer_Feed;
  173. $writer->setDateCreated(1234567890);
  174. $myDate = new Zend_Date('1234567890', Zend_Date::TIMESTAMP);
  175. $this->assertTrue($myDate->equals($writer->getDateCreated()));
  176. }
  177. public function testSetDateCreatedUsesZendDateObject()
  178. {
  179. $writer = new Zend_Feed_Writer_Feed;
  180. $writer->setDateCreated(new Zend_Date('1234567890', Zend_Date::TIMESTAMP));
  181. $myDate = new Zend_Date('1234567890', Zend_Date::TIMESTAMP);
  182. $this->assertTrue($myDate->equals($writer->getDateCreated()));
  183. }
  184. public function testSetDateModifiedDefaultsToCurrentTime()
  185. {
  186. $writer = new Zend_Feed_Writer_Feed;
  187. $writer->setDateModified();
  188. $dateNow = new Zend_Date;
  189. $this->assertTrue($dateNow->isLater($writer->getDateModified()) || $dateNow->equals($writer->getDateModified()));
  190. }
  191. public function testSetDateModifiedUsesGivenUnixTimestamp()
  192. {
  193. $writer = new Zend_Feed_Writer_Feed;
  194. $writer->setDateModified(1234567890);
  195. $myDate = new Zend_Date('1234567890', Zend_Date::TIMESTAMP);
  196. $this->assertTrue($myDate->equals($writer->getDateModified()));
  197. }
  198. public function testSetDateModifiedUsesZendDateObject()
  199. {
  200. $writer = new Zend_Feed_Writer_Feed;
  201. $writer->setDateModified(new Zend_Date('1234567890', Zend_Date::TIMESTAMP));
  202. $myDate = new Zend_Date('1234567890', Zend_Date::TIMESTAMP);
  203. $this->assertTrue($myDate->equals($writer->getDateModified()));
  204. }
  205. public function testSetDateCreatedThrowsExceptionOnInvalidParameter()
  206. {
  207. $writer = new Zend_Feed_Writer_Feed;
  208. try {
  209. $writer->setDateCreated('abc');
  210. $this->fail();
  211. } catch (Zend_Feed_Exception $e) {
  212. }
  213. }
  214. public function testSetDateModifiedThrowsExceptionOnInvalidParameter()
  215. {
  216. $writer = new Zend_Feed_Writer_Feed;
  217. try {
  218. $writer->setDateModified('abc');
  219. $this->fail();
  220. } catch (Zend_Feed_Exception $e) {
  221. }
  222. }
  223. public function testGetDateCreatedReturnsNullIfDateNotSet()
  224. {
  225. $writer = new Zend_Feed_Writer_Feed;
  226. $this->assertTrue(is_null($writer->getDateCreated()));
  227. }
  228. public function testGetDateModifiedReturnsNullIfDateNotSet()
  229. {
  230. $writer = new Zend_Feed_Writer_Feed;
  231. $this->assertTrue(is_null($writer->getDateModified()));
  232. }
  233. public function testSetLastBuildDateDefaultsToCurrentTime()
  234. {
  235. $writer = new Zend_Feed_Writer_Feed;
  236. $writer->setLastBuildDate();
  237. $dateNow = new Zend_Date;
  238. $this->assertTrue($dateNow->isLater($writer->getLastBuildDate()) || $dateNow->equals($writer->getLastBuildDate()));
  239. }
  240. public function testSetLastBuildDateUsesGivenUnixTimestamp()
  241. {
  242. $writer = new Zend_Feed_Writer_Feed;
  243. $writer->setLastBuildDate(1234567890);
  244. $myDate = new Zend_Date('1234567890', Zend_Date::TIMESTAMP);
  245. $this->assertTrue($myDate->equals($writer->getLastBuildDate()));
  246. }
  247. public function testSetLastBuildDateUsesZendDateObject()
  248. {
  249. $writer = new Zend_Feed_Writer_Feed;
  250. $writer->setLastBuildDate(new Zend_Date('1234567890', Zend_Date::TIMESTAMP));
  251. $myDate = new Zend_Date('1234567890', Zend_Date::TIMESTAMP);
  252. $this->assertTrue($myDate->equals($writer->getLastBuildDate()));
  253. }
  254. public function testSetLastBuildDateThrowsExceptionOnInvalidParameter()
  255. {
  256. $writer = new Zend_Feed_Writer_Feed;
  257. try {
  258. $writer->setLastBuildDate('abc');
  259. $this->fail();
  260. } catch (Zend_Feed_Exception $e) {
  261. }
  262. }
  263. public function testGetLastBuildDateReturnsNullIfDateNotSet()
  264. {
  265. $writer = new Zend_Feed_Writer_Feed;
  266. $this->assertTrue(is_null($writer->getLastBuildDate()));
  267. }
  268. public function testGetCopyrightReturnsNullIfDateNotSet()
  269. {
  270. $writer = new Zend_Feed_Writer_Feed;
  271. $this->assertTrue(is_null($writer->getCopyright()));
  272. }
  273. public function testSetsDescription()
  274. {
  275. $writer = new Zend_Feed_Writer_Feed;
  276. $writer->setDescription('abc');
  277. $this->assertEquals('abc', $writer->getDescription());
  278. }
  279. public function testSetDescriptionThrowsExceptionOnInvalidParameter()
  280. {
  281. $writer = new Zend_Feed_Writer_Feed;
  282. try {
  283. $writer->setDescription('');
  284. $this->fail();
  285. } catch (Zend_Feed_Exception $e) {
  286. }
  287. }
  288. public function testGetDescriptionReturnsNullIfDateNotSet()
  289. {
  290. $writer = new Zend_Feed_Writer_Feed;
  291. $this->assertTrue(is_null($writer->getDescription()));
  292. }
  293. public function testSetsId()
  294. {
  295. $writer = new Zend_Feed_Writer_Feed;
  296. $writer->setId('http://www.example.com/id');
  297. $this->assertEquals('http://www.example.com/id', $writer->getId());
  298. }
  299. public function testSetsIdAcceptsUrns()
  300. {
  301. $writer = new Zend_Feed_Writer_Feed;
  302. $writer->setId('urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6');
  303. $this->assertEquals('urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6', $writer->getId());
  304. }
  305. public function testSetsIdAcceptsSimpleTagUri()
  306. {
  307. $writer = new Zend_Feed_Writer_Feed;
  308. $writer->setId('tag:example.org,2010:/foo/bar/');
  309. $this->assertEquals('tag:example.org,2010:/foo/bar/', $writer->getId());
  310. }
  311. public function testSetsIdAcceptsComplexTagUri()
  312. {
  313. $writer = new Zend_Feed_Writer_Feed;
  314. $writer->setId('tag:diveintomark.org,2004-05-27:/archives/2004/05/27/howto-atom-linkblog');
  315. $this->assertEquals('tag:diveintomark.org,2004-05-27:/archives/2004/05/27/howto-atom-linkblog', $writer->getId());
  316. }
  317. public function testSetIdThrowsExceptionOnInvalidParameter()
  318. {
  319. $writer = new Zend_Feed_Writer_Feed;
  320. try {
  321. $writer->setId('');
  322. $this->fail();
  323. } catch (Zend_Feed_Exception $e) {
  324. }
  325. }
  326. public function testSetIdThrowsExceptionOnInvalidUri()
  327. {
  328. $writer = new Zend_Feed_Writer_Feed;
  329. try {
  330. $writer->setId('http://');
  331. $this->fail();
  332. } catch (Zend_Feed_Exception $e) {
  333. }
  334. }
  335. public function testGetIdReturnsNullIfDateNotSet()
  336. {
  337. $writer = new Zend_Feed_Writer_Feed;
  338. $this->assertTrue(is_null($writer->getId()));
  339. }
  340. public function testSetsLanguage()
  341. {
  342. $writer = new Zend_Feed_Writer_Feed;
  343. $writer->setLanguage('abc');
  344. $this->assertEquals('abc', $writer->getLanguage());
  345. }
  346. public function testSetLanguageThrowsExceptionOnInvalidParameter()
  347. {
  348. $writer = new Zend_Feed_Writer_Feed;
  349. try {
  350. $writer->setLanguage('');
  351. $this->fail();
  352. } catch (Zend_Feed_Exception $e) {
  353. }
  354. }
  355. public function testGetLanguageReturnsNullIfDateNotSet()
  356. {
  357. $writer = new Zend_Feed_Writer_Feed;
  358. $this->assertTrue(is_null($writer->getLanguage()));
  359. }
  360. public function testSetsLink()
  361. {
  362. $writer = new Zend_Feed_Writer_Feed;
  363. $writer->setLink('http://www.example.com/id');
  364. $this->assertEquals('http://www.example.com/id', $writer->getLink());
  365. }
  366. public function testSetLinkThrowsExceptionOnEmptyString()
  367. {
  368. $writer = new Zend_Feed_Writer_Feed;
  369. try {
  370. $writer->setLink('');
  371. $this->fail();
  372. } catch (Zend_Feed_Exception $e) {
  373. }
  374. }
  375. public function testSetLinkThrowsExceptionOnInvalidUri()
  376. {
  377. $writer = new Zend_Feed_Writer_Feed;
  378. try {
  379. $writer->setLink('http://');
  380. $this->fail();
  381. } catch (Zend_Feed_Exception $e) {
  382. }
  383. }
  384. public function testGetLinkReturnsNullIfDateNotSet()
  385. {
  386. $writer = new Zend_Feed_Writer_Feed;
  387. $this->assertTrue(is_null($writer->getLink()));
  388. }
  389. public function testSetsEncoding()
  390. {
  391. $writer = new Zend_Feed_Writer_Feed;
  392. $writer->setEncoding('utf-16');
  393. $this->assertEquals('utf-16', $writer->getEncoding());
  394. }
  395. public function testSetEncodingThrowsExceptionOnInvalidParameter()
  396. {
  397. $writer = new Zend_Feed_Writer_Feed;
  398. try {
  399. $writer->setEncoding('');
  400. $this->fail();
  401. } catch (Zend_Feed_Exception $e) {
  402. }
  403. }
  404. public function testGetEncodingReturnsUtf8IfNotSet()
  405. {
  406. $writer = new Zend_Feed_Writer_Feed;
  407. $this->assertEquals('UTF-8', $writer->getEncoding());
  408. }
  409. public function testSetsTitle()
  410. {
  411. $writer = new Zend_Feed_Writer_Feed;
  412. $writer->setTitle('abc');
  413. $this->assertEquals('abc', $writer->getTitle());
  414. }
  415. public function testSetTitleThrowsExceptionOnInvalidParameter()
  416. {
  417. $writer = new Zend_Feed_Writer_Feed;
  418. try {
  419. $writer->setTitle('');
  420. $this->fail();
  421. } catch (Zend_Feed_Exception $e) {
  422. }
  423. }
  424. public function testGetTitleReturnsNullIfDateNotSet()
  425. {
  426. $writer = new Zend_Feed_Writer_Feed;
  427. $this->assertTrue(is_null($writer->getTitle()));
  428. }
  429. public function testSetsGeneratorName()
  430. {
  431. $writer = new Zend_Feed_Writer_Feed;
  432. $writer->setGenerator(array('name'=>'ZFW'));
  433. $this->assertEquals(array('name'=>'ZFW'), $writer->getGenerator());
  434. }
  435. public function testSetsGeneratorVersion()
  436. {
  437. $writer = new Zend_Feed_Writer_Feed;
  438. $writer->setGenerator(array('name'=>'ZFW', 'version' => '1.0'));
  439. $this->assertEquals(array('name'=>'ZFW', 'version' => '1.0'), $writer->getGenerator());
  440. }
  441. public function testSetsGeneratorUri()
  442. {
  443. $writer = new Zend_Feed_Writer_Feed;
  444. $writer->setGenerator(array('name'=>'ZFW', 'uri'=>'http://www.example.com'));
  445. $this->assertEquals(array('name'=>'ZFW', 'uri' => 'http://www.example.com'), $writer->getGenerator());
  446. }
  447. public function testSetsGeneratorThrowsExceptionOnInvalidName()
  448. {
  449. $writer = new Zend_Feed_Writer_Feed;
  450. try {
  451. $writer->setGenerator(array());
  452. $this->fail();
  453. } catch (Zend_Feed_Exception $e) {
  454. }
  455. }
  456. public function testSetsGeneratorThrowsExceptionOnInvalidVersion()
  457. {
  458. $writer = new Zend_Feed_Writer_Feed;
  459. try {
  460. $writer->setGenerator(array('name'=>'ZFW', 'version'=>''));
  461. $this->fail('Should have failed since version is empty');
  462. } catch (Zend_Feed_Exception $e) {
  463. }
  464. }
  465. public function testSetsGeneratorThrowsExceptionOnInvalidUri()
  466. {
  467. $writer = new Zend_Feed_Writer_Feed;
  468. try {
  469. $writer->setGenerator(array('name'=>'ZFW','uri'=>'notauri'));
  470. $this->fail();
  471. } catch (Zend_Feed_Exception $e) {
  472. }
  473. }
  474. /**
  475. * @deprecated
  476. */
  477. public function testSetsGeneratorName_Deprecated()
  478. {
  479. $writer = new Zend_Feed_Writer_Feed;
  480. $writer->setGenerator('ZFW');
  481. $this->assertEquals(array('name'=>'ZFW'), $writer->getGenerator());
  482. }
  483. /**
  484. * @deprecated
  485. */
  486. public function testSetsGeneratorVersion_Deprecated()
  487. {
  488. $writer = new Zend_Feed_Writer_Feed;
  489. $writer->setGenerator('ZFW', '1.0');
  490. $this->assertEquals(array('name'=>'ZFW', 'version' => '1.0'), $writer->getGenerator());
  491. }
  492. /**
  493. * @deprecated
  494. */
  495. public function testSetsGeneratorUri_Deprecated()
  496. {
  497. $writer = new Zend_Feed_Writer_Feed;
  498. $writer->setGenerator('ZFW', null, 'http://www.example.com');
  499. $this->assertEquals(array('name'=>'ZFW', 'uri' => 'http://www.example.com'), $writer->getGenerator());
  500. }
  501. /**
  502. * @deprecated
  503. */
  504. public function testSetsGeneratorThrowsExceptionOnInvalidName_Deprecated()
  505. {
  506. $writer = new Zend_Feed_Writer_Feed;
  507. try {
  508. $writer->setGenerator('');
  509. $this->fail();
  510. } catch (Zend_Feed_Exception $e) {
  511. }
  512. }
  513. /**
  514. * @deprecated
  515. */
  516. public function testSetsGeneratorThrowsExceptionOnInvalidVersion_Deprecated()
  517. {
  518. $writer = new Zend_Feed_Writer_Feed;
  519. try {
  520. $writer->setGenerator('ZFW', '');
  521. $this->fail();
  522. } catch (Zend_Feed_Exception $e) {
  523. }
  524. }
  525. /**
  526. * @deprecated
  527. */
  528. public function testSetsGeneratorThrowsExceptionOnInvalidUri_Deprecated()
  529. {
  530. $writer = new Zend_Feed_Writer_Feed;
  531. try {
  532. $writer->setGenerator('ZFW', null, 'notauri');
  533. $this->fail();
  534. } catch (Zend_Feed_Exception $e) {
  535. }
  536. }
  537. public function testGetGeneratorReturnsNullIfDateNotSet()
  538. {
  539. $writer = new Zend_Feed_Writer_Feed;
  540. $this->assertTrue(is_null($writer->getGenerator()));
  541. }
  542. public function testSetsFeedLink()
  543. {
  544. $writer = new Zend_Feed_Writer_Feed;
  545. $writer->setFeedLink('http://www.example.com/rss', 'RSS');
  546. $this->assertEquals(array('rss'=>'http://www.example.com/rss'), $writer->getFeedLinks());
  547. }
  548. public function testSetsFeedLinkThrowsExceptionOnInvalidType()
  549. {
  550. $writer = new Zend_Feed_Writer_Feed;
  551. try {
  552. $writer->setFeedLink('http://www.example.com/rss', 'abc');
  553. $this->fail();
  554. } catch (Zend_Feed_Exception $e) {
  555. }
  556. }
  557. public function testSetsFeedLinkThrowsExceptionOnInvalidUri()
  558. {
  559. $writer = new Zend_Feed_Writer_Feed;
  560. try {
  561. $writer->setFeedLink('http://', 'rss');
  562. $this->fail();
  563. } catch (Zend_Feed_Exception $e) {
  564. }
  565. }
  566. public function testGetFeedLinksReturnsNullIfNotSet()
  567. {
  568. $writer = new Zend_Feed_Writer_Feed;
  569. $this->assertTrue(is_null($writer->getFeedLinks()));
  570. }
  571. public function testSetsBaseUrl()
  572. {
  573. $writer = new Zend_Feed_Writer_Feed;
  574. $writer->setBaseUrl('http://www.example.com');
  575. $this->assertEquals('http://www.example.com', $writer->getBaseUrl());
  576. }
  577. public function testSetsBaseUrlThrowsExceptionOnInvalidUri()
  578. {
  579. $writer = new Zend_Feed_Writer_Feed;
  580. try {
  581. $writer->setBaseUrl('http://');
  582. $this->fail();
  583. } catch (Zend_Feed_Exception $e) {
  584. }
  585. }
  586. public function testGetBaseUrlReturnsNullIfNotSet()
  587. {
  588. $writer = new Zend_Feed_Writer_Feed;
  589. $this->assertTrue(is_null($writer->getBaseUrl()));
  590. }
  591. public function testAddsHubUrl()
  592. {
  593. $writer = new Zend_Feed_Writer_Feed;
  594. $writer->addHub('http://www.example.com/hub');
  595. $this->assertEquals(array('http://www.example.com/hub'), $writer->getHubs());
  596. }
  597. public function testAddsManyHubUrls()
  598. {
  599. $writer = new Zend_Feed_Writer_Feed;
  600. $writer->addHubs(array('http://www.example.com/hub', 'http://www.example.com/hub2'));
  601. $this->assertEquals(array('http://www.example.com/hub', 'http://www.example.com/hub2'), $writer->getHubs());
  602. }
  603. public function testAddingHubUrlThrowsExceptionOnInvalidUri()
  604. {
  605. $writer = new Zend_Feed_Writer_Feed;
  606. try {
  607. $writer->addHub('http://');
  608. $this->fail();
  609. } catch (Zend_Feed_Exception $e) {
  610. }
  611. }
  612. public function testAddingHubUrlReturnsNullIfNotSet()
  613. {
  614. $writer = new Zend_Feed_Writer_Feed;
  615. $this->assertTrue(is_null($writer->getHubs()));
  616. }
  617. public function testCreatesNewEntryDataContainer()
  618. {
  619. $writer = new Zend_Feed_Writer_Feed;
  620. $entry = $writer->createEntry();
  621. $this->assertTrue($entry instanceof Zend_Feed_Writer_Entry);
  622. }
  623. public function testAddsCategory()
  624. {
  625. $writer = new Zend_Feed_Writer_Feed;
  626. $writer->addCategory(array('term'=>'cat_dog'));
  627. $this->assertEquals(array(array('term'=>'cat_dog')), $writer->getCategories());
  628. }
  629. public function testAddsManyCategories()
  630. {
  631. $writer = new Zend_Feed_Writer_Feed;
  632. $writer->addCategories(array(array('term'=>'cat_dog'),array('term'=>'cat_mouse')));
  633. $this->assertEquals(array(array('term'=>'cat_dog'),array('term'=>'cat_mouse')), $writer->getCategories());
  634. }
  635. public function testAddingCategoryWithoutTermThrowsException()
  636. {
  637. $writer = new Zend_Feed_Writer_Feed;
  638. try {
  639. $writer->addCategory(array('label' => 'Cats & Dogs', 'scheme' => 'http://www.example.com/schema1'));
  640. $this->fail();
  641. } catch (Zend_Feed_Exception $e) {
  642. }
  643. }
  644. public function testAddingCategoryWithInvalidUriAsSchemeThrowsException()
  645. {
  646. $writer = new Zend_Feed_Writer_Feed;
  647. try {
  648. $writer->addCategory(array('term' => 'cat_dog', 'scheme' => 'http://'));
  649. $this->fail();
  650. } catch (Zend_Feed_Exception $e) {
  651. }
  652. }
  653. // Image Tests
  654. public function testSetsImageUri()
  655. {
  656. $writer = new Zend_Feed_Writer_Feed;
  657. $writer->setImage(array(
  658. 'uri' => 'http://www.example.com/logo.gif'
  659. ));
  660. $this->assertEquals(array(
  661. 'uri' => 'http://www.example.com/logo.gif'
  662. ), $writer->getImage());
  663. }
  664. /**
  665. * @expectedException Zend_Feed_Exception
  666. */
  667. public function testSetsImageUriThrowsExceptionOnEmptyUri()
  668. {
  669. $writer = new Zend_Feed_Writer_Feed;
  670. $writer->setImage(array(
  671. 'uri' => ''
  672. ));
  673. }
  674. /**
  675. * @expectedException Zend_Feed_Exception
  676. */
  677. public function testSetsImageUriThrowsExceptionOnMissingUri()
  678. {
  679. $writer = new Zend_Feed_Writer_Feed;
  680. $writer->setImage(array());
  681. }
  682. /**
  683. * @expectedException Zend_Feed_Exception
  684. */
  685. public function testSetsImageUriThrowsExceptionOnInvalidUri()
  686. {
  687. $writer = new Zend_Feed_Writer_Feed;
  688. $writer->setImage(array(
  689. 'uri' => 'http://'
  690. ));
  691. }
  692. public function testSetsImageLink()
  693. {
  694. $writer = new Zend_Feed_Writer_Feed;
  695. $writer->setImage(array(
  696. 'uri' => 'http://www.example.com/logo.gif',
  697. 'link' => 'http://www.example.com'
  698. ));
  699. $this->assertEquals(array(
  700. 'uri' => 'http://www.example.com/logo.gif',
  701. 'link' => 'http://www.example.com'
  702. ), $writer->getImage());
  703. }
  704. public function testSetsImageTitle()
  705. {
  706. $writer = new Zend_Feed_Writer_Feed;
  707. $writer->setImage(array(
  708. 'uri' => 'http://www.example.com/logo.gif',
  709. 'title' => 'Image title'
  710. ));
  711. $this->assertEquals(array(
  712. 'uri' => 'http://www.example.com/logo.gif',
  713. 'title' => 'Image title'
  714. ), $writer->getImage());
  715. }
  716. public function testSetsImageHeight()
  717. {
  718. $writer = new Zend_Feed_Writer_Feed;
  719. $writer->setImage(array(
  720. 'uri' => 'http://www.example.com/logo.gif',
  721. 'height' => '88'
  722. ));
  723. $this->assertEquals(array(
  724. 'uri' => 'http://www.example.com/logo.gif',
  725. 'height' => '88'
  726. ), $writer->getImage());
  727. }
  728. public function testSetsImageWidth()
  729. {
  730. $writer = new Zend_Feed_Writer_Feed;
  731. $writer->setImage(array(
  732. 'uri' => 'http://www.example.com/logo.gif',
  733. 'width' => '88'
  734. ));
  735. $this->assertEquals(array(
  736. 'uri' => 'http://www.example.com/logo.gif',
  737. 'width' => '88'
  738. ), $writer->getImage());
  739. }
  740. public function testSetsImageDescription()
  741. {
  742. $writer = new Zend_Feed_Writer_Feed;
  743. $writer->setImage(array(
  744. 'uri' => 'http://www.example.com/logo.gif',
  745. 'description' => 'Image description'
  746. ));
  747. $this->assertEquals(array(
  748. 'uri' => 'http://www.example.com/logo.gif',
  749. 'description' => 'Image description'
  750. ), $writer->getImage());
  751. }
  752. // Icon Tests
  753. public function testSetsIconUri()
  754. {
  755. $writer = new Zend_Feed_Writer_Feed;
  756. $writer->setIcon(array(
  757. 'uri' => 'http://www.example.com/logo.gif'
  758. ));
  759. $this->assertEquals(array(
  760. 'uri' => 'http://www.example.com/logo.gif'
  761. ), $writer->getIcon());
  762. }
  763. /**
  764. * @expectedException Zend_Feed_Exception
  765. */
  766. public function testSetsIconUriThrowsExceptionOnEmptyUri()
  767. {
  768. $writer = new Zend_Feed_Writer_Feed;
  769. $writer->setIcon(array(
  770. 'uri' => ''
  771. ));
  772. }
  773. /**
  774. * @expectedException Zend_Feed_Exception
  775. */
  776. public function testSetsIconUriThrowsExceptionOnMissingUri()
  777. {
  778. $writer = new Zend_Feed_Writer_Feed;
  779. $writer->setIcon(array());
  780. }
  781. /**
  782. * @expectedException Zend_Feed_Exception
  783. */
  784. public function testSetsIconUriThrowsExceptionOnInvalidUri()
  785. {
  786. $writer = new Zend_Feed_Writer_Feed;
  787. $writer->setIcon(array(
  788. 'uri' => 'http://'
  789. ));
  790. }
  791. public function testGetCategoriesReturnsNullIfNotSet()
  792. {
  793. $writer = new Zend_Feed_Writer_Feed;
  794. $this->assertTrue(is_null($writer->getCategories()));
  795. }
  796. public function testAddsAndOrdersEntriesByDateIfRequested()
  797. {
  798. $writer = new Zend_Feed_Writer_Feed;
  799. $entry = $writer->createEntry();
  800. $entry->setDateCreated(1234567890);
  801. $entry2 = $writer->createEntry();
  802. $entry2->setDateCreated(1230000000);
  803. $writer->addEntry($entry);
  804. $writer->addEntry($entry2);
  805. $writer->orderByDate();
  806. $this->assertEquals(1230000000, $writer->getEntry(1)->getDateCreated()->get(Zend_Date::TIMESTAMP));
  807. }
  808. }