FeedTest.php 24 KB

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