FeedTest.php 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857
  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 testSetIdThrowsExceptionOnInvalidParameter()
  306. {
  307. $writer = new Zend_Feed_Writer_Feed;
  308. try {
  309. $writer->setId('');
  310. $this->fail();
  311. } catch (Zend_Feed_Exception $e) {
  312. }
  313. }
  314. public function testSetIdThrowsExceptionOnInvalidUri()
  315. {
  316. $writer = new Zend_Feed_Writer_Feed;
  317. try {
  318. $writer->setId('http://');
  319. $this->fail();
  320. } catch (Zend_Feed_Exception $e) {
  321. }
  322. }
  323. public function testGetIdReturnsNullIfDateNotSet()
  324. {
  325. $writer = new Zend_Feed_Writer_Feed;
  326. $this->assertTrue(is_null($writer->getId()));
  327. }
  328. public function testSetsLanguage()
  329. {
  330. $writer = new Zend_Feed_Writer_Feed;
  331. $writer->setLanguage('abc');
  332. $this->assertEquals('abc', $writer->getLanguage());
  333. }
  334. public function testSetLanguageThrowsExceptionOnInvalidParameter()
  335. {
  336. $writer = new Zend_Feed_Writer_Feed;
  337. try {
  338. $writer->setLanguage('');
  339. $this->fail();
  340. } catch (Zend_Feed_Exception $e) {
  341. }
  342. }
  343. public function testGetLanguageReturnsNullIfDateNotSet()
  344. {
  345. $writer = new Zend_Feed_Writer_Feed;
  346. $this->assertTrue(is_null($writer->getLanguage()));
  347. }
  348. public function testSetsLink()
  349. {
  350. $writer = new Zend_Feed_Writer_Feed;
  351. $writer->setLink('http://www.example.com/id');
  352. $this->assertEquals('http://www.example.com/id', $writer->getLink());
  353. }
  354. public function testSetLinkThrowsExceptionOnEmptyString()
  355. {
  356. $writer = new Zend_Feed_Writer_Feed;
  357. try {
  358. $writer->setLink('');
  359. $this->fail();
  360. } catch (Zend_Feed_Exception $e) {
  361. }
  362. }
  363. public function testSetLinkThrowsExceptionOnInvalidUri()
  364. {
  365. $writer = new Zend_Feed_Writer_Feed;
  366. try {
  367. $writer->setLink('http://');
  368. $this->fail();
  369. } catch (Zend_Feed_Exception $e) {
  370. }
  371. }
  372. public function testGetLinkReturnsNullIfDateNotSet()
  373. {
  374. $writer = new Zend_Feed_Writer_Feed;
  375. $this->assertTrue(is_null($writer->getLink()));
  376. }
  377. public function testSetsEncoding()
  378. {
  379. $writer = new Zend_Feed_Writer_Feed;
  380. $writer->setEncoding('utf-16');
  381. $this->assertEquals('utf-16', $writer->getEncoding());
  382. }
  383. public function testSetEncodingThrowsExceptionOnInvalidParameter()
  384. {
  385. $writer = new Zend_Feed_Writer_Feed;
  386. try {
  387. $writer->setEncoding('');
  388. $this->fail();
  389. } catch (Zend_Feed_Exception $e) {
  390. }
  391. }
  392. public function testGetEncodingReturnsUtf8IfNotSet()
  393. {
  394. $writer = new Zend_Feed_Writer_Feed;
  395. $this->assertEquals('UTF-8', $writer->getEncoding());
  396. }
  397. public function testSetsTitle()
  398. {
  399. $writer = new Zend_Feed_Writer_Feed;
  400. $writer->setTitle('abc');
  401. $this->assertEquals('abc', $writer->getTitle());
  402. }
  403. public function testSetTitleThrowsExceptionOnInvalidParameter()
  404. {
  405. $writer = new Zend_Feed_Writer_Feed;
  406. try {
  407. $writer->setTitle('');
  408. $this->fail();
  409. } catch (Zend_Feed_Exception $e) {
  410. }
  411. }
  412. public function testGetTitleReturnsNullIfDateNotSet()
  413. {
  414. $writer = new Zend_Feed_Writer_Feed;
  415. $this->assertTrue(is_null($writer->getTitle()));
  416. }
  417. public function testSetsGeneratorName()
  418. {
  419. $writer = new Zend_Feed_Writer_Feed;
  420. $writer->setGenerator(array('name'=>'ZFW'));
  421. $this->assertEquals(array('name'=>'ZFW'), $writer->getGenerator());
  422. }
  423. public function testSetsGeneratorVersion()
  424. {
  425. $writer = new Zend_Feed_Writer_Feed;
  426. $writer->setGenerator(array('name'=>'ZFW', 'version' => '1.0'));
  427. $this->assertEquals(array('name'=>'ZFW', 'version' => '1.0'), $writer->getGenerator());
  428. }
  429. public function testSetsGeneratorUri()
  430. {
  431. $writer = new Zend_Feed_Writer_Feed;
  432. $writer->setGenerator(array('name'=>'ZFW', 'uri'=>'http://www.example.com'));
  433. $this->assertEquals(array('name'=>'ZFW', 'uri' => 'http://www.example.com'), $writer->getGenerator());
  434. }
  435. public function testSetsGeneratorThrowsExceptionOnInvalidName()
  436. {
  437. $writer = new Zend_Feed_Writer_Feed;
  438. try {
  439. $writer->setGenerator(array());
  440. $this->fail();
  441. } catch (Zend_Feed_Exception $e) {
  442. }
  443. }
  444. public function testSetsGeneratorThrowsExceptionOnInvalidVersion()
  445. {
  446. $writer = new Zend_Feed_Writer_Feed;
  447. try {
  448. $writer->setGenerator(array('name'=>'ZFW', 'version'=>''));
  449. $this->fail('Should have failed since version is empty');
  450. } catch (Zend_Feed_Exception $e) {
  451. }
  452. }
  453. public function testSetsGeneratorThrowsExceptionOnInvalidUri()
  454. {
  455. $writer = new Zend_Feed_Writer_Feed;
  456. try {
  457. $writer->setGenerator(array('name'=>'ZFW','uri'=>'notauri'));
  458. $this->fail();
  459. } catch (Zend_Feed_Exception $e) {
  460. }
  461. }
  462. /**
  463. * @deprecated
  464. */
  465. public function testSetsGeneratorName_Deprecated()
  466. {
  467. $writer = new Zend_Feed_Writer_Feed;
  468. $writer->setGenerator('ZFW');
  469. $this->assertEquals(array('name'=>'ZFW'), $writer->getGenerator());
  470. }
  471. /**
  472. * @deprecated
  473. */
  474. public function testSetsGeneratorVersion_Deprecated()
  475. {
  476. $writer = new Zend_Feed_Writer_Feed;
  477. $writer->setGenerator('ZFW', '1.0');
  478. $this->assertEquals(array('name'=>'ZFW', 'version' => '1.0'), $writer->getGenerator());
  479. }
  480. /**
  481. * @deprecated
  482. */
  483. public function testSetsGeneratorUri_Deprecated()
  484. {
  485. $writer = new Zend_Feed_Writer_Feed;
  486. $writer->setGenerator('ZFW', null, 'http://www.example.com');
  487. $this->assertEquals(array('name'=>'ZFW', 'uri' => 'http://www.example.com'), $writer->getGenerator());
  488. }
  489. /**
  490. * @deprecated
  491. */
  492. public function testSetsGeneratorThrowsExceptionOnInvalidName_Deprecated()
  493. {
  494. $writer = new Zend_Feed_Writer_Feed;
  495. try {
  496. $writer->setGenerator('');
  497. $this->fail();
  498. } catch (Zend_Feed_Exception $e) {
  499. }
  500. }
  501. /**
  502. * @deprecated
  503. */
  504. public function testSetsGeneratorThrowsExceptionOnInvalidVersion_Deprecated()
  505. {
  506. $writer = new Zend_Feed_Writer_Feed;
  507. try {
  508. $writer->setGenerator('ZFW', '');
  509. $this->fail();
  510. } catch (Zend_Feed_Exception $e) {
  511. }
  512. }
  513. /**
  514. * @deprecated
  515. */
  516. public function testSetsGeneratorThrowsExceptionOnInvalidUri_Deprecated()
  517. {
  518. $writer = new Zend_Feed_Writer_Feed;
  519. try {
  520. $writer->setGenerator('ZFW', null, 'notauri');
  521. $this->fail();
  522. } catch (Zend_Feed_Exception $e) {
  523. }
  524. }
  525. public function testGetGeneratorReturnsNullIfDateNotSet()
  526. {
  527. $writer = new Zend_Feed_Writer_Feed;
  528. $this->assertTrue(is_null($writer->getGenerator()));
  529. }
  530. public function testSetsFeedLink()
  531. {
  532. $writer = new Zend_Feed_Writer_Feed;
  533. $writer->setFeedLink('http://www.example.com/rss', 'RSS');
  534. $this->assertEquals(array('rss'=>'http://www.example.com/rss'), $writer->getFeedLinks());
  535. }
  536. public function testSetsFeedLinkThrowsExceptionOnInvalidType()
  537. {
  538. $writer = new Zend_Feed_Writer_Feed;
  539. try {
  540. $writer->setFeedLink('http://www.example.com/rss', 'abc');
  541. $this->fail();
  542. } catch (Zend_Feed_Exception $e) {
  543. }
  544. }
  545. public function testSetsFeedLinkThrowsExceptionOnInvalidUri()
  546. {
  547. $writer = new Zend_Feed_Writer_Feed;
  548. try {
  549. $writer->setFeedLink('http://', 'rss');
  550. $this->fail();
  551. } catch (Zend_Feed_Exception $e) {
  552. }
  553. }
  554. public function testGetFeedLinksReturnsNullIfNotSet()
  555. {
  556. $writer = new Zend_Feed_Writer_Feed;
  557. $this->assertTrue(is_null($writer->getFeedLinks()));
  558. }
  559. public function testSetsBaseUrl()
  560. {
  561. $writer = new Zend_Feed_Writer_Feed;
  562. $writer->setBaseUrl('http://www.example.com');
  563. $this->assertEquals('http://www.example.com', $writer->getBaseUrl());
  564. }
  565. public function testSetsBaseUrlThrowsExceptionOnInvalidUri()
  566. {
  567. $writer = new Zend_Feed_Writer_Feed;
  568. try {
  569. $writer->setBaseUrl('http://');
  570. $this->fail();
  571. } catch (Zend_Feed_Exception $e) {
  572. }
  573. }
  574. public function testGetBaseUrlReturnsNullIfNotSet()
  575. {
  576. $writer = new Zend_Feed_Writer_Feed;
  577. $this->assertTrue(is_null($writer->getBaseUrl()));
  578. }
  579. public function testAddsHubUrl()
  580. {
  581. $writer = new Zend_Feed_Writer_Feed;
  582. $writer->addHub('http://www.example.com/hub');
  583. $this->assertEquals(array('http://www.example.com/hub'), $writer->getHubs());
  584. }
  585. public function testAddsManyHubUrls()
  586. {
  587. $writer = new Zend_Feed_Writer_Feed;
  588. $writer->addHubs(array('http://www.example.com/hub', 'http://www.example.com/hub2'));
  589. $this->assertEquals(array('http://www.example.com/hub', 'http://www.example.com/hub2'), $writer->getHubs());
  590. }
  591. public function testAddingHubUrlThrowsExceptionOnInvalidUri()
  592. {
  593. $writer = new Zend_Feed_Writer_Feed;
  594. try {
  595. $writer->addHub('http://');
  596. $this->fail();
  597. } catch (Zend_Feed_Exception $e) {
  598. }
  599. }
  600. public function testAddingHubUrlReturnsNullIfNotSet()
  601. {
  602. $writer = new Zend_Feed_Writer_Feed;
  603. $this->assertTrue(is_null($writer->getHubs()));
  604. }
  605. public function testCreatesNewEntryDataContainer()
  606. {
  607. $writer = new Zend_Feed_Writer_Feed;
  608. $entry = $writer->createEntry();
  609. $this->assertTrue($entry instanceof Zend_Feed_Writer_Entry);
  610. }
  611. public function testAddsCategory()
  612. {
  613. $writer = new Zend_Feed_Writer_Feed;
  614. $writer->addCategory(array('term'=>'cat_dog'));
  615. $this->assertEquals(array(array('term'=>'cat_dog')), $writer->getCategories());
  616. }
  617. public function testAddsManyCategories()
  618. {
  619. $writer = new Zend_Feed_Writer_Feed;
  620. $writer->addCategories(array(array('term'=>'cat_dog'),array('term'=>'cat_mouse')));
  621. $this->assertEquals(array(array('term'=>'cat_dog'),array('term'=>'cat_mouse')), $writer->getCategories());
  622. }
  623. public function testAddingCategoryWithoutTermThrowsException()
  624. {
  625. $writer = new Zend_Feed_Writer_Feed;
  626. try {
  627. $writer->addCategory(array('label' => 'Cats & Dogs', 'scheme' => 'http://www.example.com/schema1'));
  628. $this->fail();
  629. } catch (Zend_Feed_Exception $e) {
  630. }
  631. }
  632. public function testAddingCategoryWithInvalidUriAsSchemeThrowsException()
  633. {
  634. $writer = new Zend_Feed_Writer_Feed;
  635. try {
  636. $writer->addCategory(array('term' => 'cat_dog', 'scheme' => 'http://'));
  637. $this->fail();
  638. } catch (Zend_Feed_Exception $e) {
  639. }
  640. }
  641. // Image Tests
  642. public function testSetsImageUri()
  643. {
  644. $writer = new Zend_Feed_Writer_Feed;
  645. $writer->setImage(array(
  646. 'uri' => 'http://www.example.com/logo.gif'
  647. ));
  648. $this->assertEquals(array(
  649. 'uri' => 'http://www.example.com/logo.gif'
  650. ), $writer->getImage());
  651. }
  652. /**
  653. * @expectedException Zend_Feed_Exception
  654. */
  655. public function testSetsImageUriThrowsExceptionOnEmptyUri()
  656. {
  657. $writer = new Zend_Feed_Writer_Feed;
  658. $writer->setImage(array(
  659. 'uri' => ''
  660. ));
  661. }
  662. /**
  663. * @expectedException Zend_Feed_Exception
  664. */
  665. public function testSetsImageUriThrowsExceptionOnMissingUri()
  666. {
  667. $writer = new Zend_Feed_Writer_Feed;
  668. $writer->setImage(array());
  669. }
  670. /**
  671. * @expectedException Zend_Feed_Exception
  672. */
  673. public function testSetsImageUriThrowsExceptionOnInvalidUri()
  674. {
  675. $writer = new Zend_Feed_Writer_Feed;
  676. $writer->setImage(array(
  677. 'uri' => 'http://'
  678. ));
  679. }
  680. public function testSetsImageLink()
  681. {
  682. $writer = new Zend_Feed_Writer_Feed;
  683. $writer->setImage(array(
  684. 'uri' => 'http://www.example.com/logo.gif',
  685. 'link' => 'http://www.example.com'
  686. ));
  687. $this->assertEquals(array(
  688. 'uri' => 'http://www.example.com/logo.gif',
  689. 'link' => 'http://www.example.com'
  690. ), $writer->getImage());
  691. }
  692. public function testSetsImageTitle()
  693. {
  694. $writer = new Zend_Feed_Writer_Feed;
  695. $writer->setImage(array(
  696. 'uri' => 'http://www.example.com/logo.gif',
  697. 'title' => 'Image title'
  698. ));
  699. $this->assertEquals(array(
  700. 'uri' => 'http://www.example.com/logo.gif',
  701. 'title' => 'Image title'
  702. ), $writer->getImage());
  703. }
  704. public function testSetsImageHeight()
  705. {
  706. $writer = new Zend_Feed_Writer_Feed;
  707. $writer->setImage(array(
  708. 'uri' => 'http://www.example.com/logo.gif',
  709. 'height' => '88'
  710. ));
  711. $this->assertEquals(array(
  712. 'uri' => 'http://www.example.com/logo.gif',
  713. 'height' => '88'
  714. ), $writer->getImage());
  715. }
  716. public function testSetsImageWidth()
  717. {
  718. $writer = new Zend_Feed_Writer_Feed;
  719. $writer->setImage(array(
  720. 'uri' => 'http://www.example.com/logo.gif',
  721. 'width' => '88'
  722. ));
  723. $this->assertEquals(array(
  724. 'uri' => 'http://www.example.com/logo.gif',
  725. 'width' => '88'
  726. ), $writer->getImage());
  727. }
  728. public function testSetsImageDescription()
  729. {
  730. $writer = new Zend_Feed_Writer_Feed;
  731. $writer->setImage(array(
  732. 'uri' => 'http://www.example.com/logo.gif',
  733. 'description' => 'Image description'
  734. ));
  735. $this->assertEquals(array(
  736. 'uri' => 'http://www.example.com/logo.gif',
  737. 'description' => 'Image description'
  738. ), $writer->getImage());
  739. }
  740. public function testGetCategoriesReturnsNullIfNotSet()
  741. {
  742. $writer = new Zend_Feed_Writer_Feed;
  743. $this->assertTrue(is_null($writer->getCategories()));
  744. }
  745. public function testAddsAndOrdersEntriesByDateIfRequested()
  746. {
  747. $writer = new Zend_Feed_Writer_Feed;
  748. $entry = $writer->createEntry();
  749. $entry->setDateCreated(1234567890);
  750. $entry2 = $writer->createEntry();
  751. $entry2->setDateCreated(1230000000);
  752. $writer->addEntry($entry);
  753. $writer->addEntry($entry2);
  754. $writer->orderByDate();
  755. $this->assertEquals(1230000000, $writer->getEntry(1)->getDateCreated()->get(Zend_Date::TIMESTAMP));
  756. }
  757. }