FeedTest.php 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  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. * @feed Zend
  16. * @package Zend_Gdata_App
  17. * @subpackage UnitTests
  18. * @copyright Copyright (c) 2006 Zend Technologies USA Inc. (http://www.zend.com);
  19. * @license http://framework.zend.com/license/new-bsd New BSD License
  20. */
  21. require_once 'Zend/Gdata/App/Feed.php';
  22. require_once 'Zend/Gdata/App.php';
  23. /**
  24. * @package Zend_Gdata_App
  25. * @subpackage UnitTests
  26. */
  27. class Zend_Gdata_App_FeedTest extends PHPUnit_Framework_TestCase
  28. {
  29. public function setUp() {
  30. $this->feedText = file_get_contents(
  31. 'Zend/Gdata/App/_files/FeedSample1.xml',
  32. true);
  33. $this->feed = new Zend_Gdata_App_Feed();
  34. }
  35. public function testEmptyFeedShouldHaveEmptyExtensionsList() {
  36. $this->assertTrue(is_array($this->feed->extensionElements));
  37. $this->assertTrue(count($this->feed->extensionElements) == 0);
  38. }
  39. public function testEmptyFeedToAndFromStringShouldMatch() {
  40. $feedXml = $this->feed->saveXML();
  41. $newFeed = new Zend_Gdata_App_Feed();
  42. $newFeed->transferFromXML($feedXml);
  43. $newFeedXml = $newFeed->saveXML();
  44. $this->assertTrue($feedXml == $newFeedXml);
  45. }
  46. public function testConvertFeedToAndFromString() {
  47. $this->feed->transferFromXML($this->feedText);
  48. $feedXml = $this->feed->saveXML();
  49. $newFeed = new Zend_Gdata_App_Feed();
  50. $newFeed->transferFromXML($feedXml);
  51. $this->assertEquals(1, count($newFeed->entry));
  52. $this->assertEquals('dive into mark', $newFeed->title->text);
  53. $this->assertEquals('text', $newFeed->title->type);
  54. $this->assertEquals('2005-07-31T12:29:29Z', $newFeed->updated->text);
  55. $this->assertEquals('tag:example.org,2003:3', $newFeed->id->text);
  56. $this->assertEquals(2, count($newFeed->link));
  57. $this->assertEquals('http://example.org/',
  58. $newFeed->getAlternateLink()->href);
  59. $this->assertEquals('en',
  60. $newFeed->getAlternateLink()->hrefLang);
  61. $this->assertEquals('text/html',
  62. $newFeed->getAlternateLink()->type);
  63. $this->assertEquals('http://example.org/feed.atom',
  64. $newFeed->getSelfLink()->href);
  65. $this->assertEquals('application/atom+xml',
  66. $newFeed->getSelfLink()->type);
  67. $this->assertEquals('Copyright (c) 2003, Mark Pilgrim',
  68. $newFeed->rights->text);
  69. $entry = $newFeed->entry[0];
  70. $this->assertEquals('Atom draft-07 snapshot', $entry->title->text);
  71. $this->assertEquals('tag:example.org,2003:3.2397',
  72. $entry->id->text);
  73. $this->assertEquals('2005-07-31T12:29:29Z', $entry->updated->text);
  74. $this->assertEquals('2003-12-13T08:29:29-04:00',
  75. $entry->published->text);
  76. $this->assertEquals('Mark Pilgrim',
  77. $entry->author[0]->name->text);
  78. $this->assertEquals('http://example.org/',
  79. $entry->author[0]->uri->text);
  80. $this->assertEquals(2, count($entry->contributor));
  81. $this->assertEquals('Sam Ruby',
  82. $entry->contributor[0]->name->text);
  83. $this->assertEquals('Joe Gregorio',
  84. $entry->contributor[1]->name->text);
  85. $this->assertEquals('xhtml', $entry->content->type);
  86. }
  87. public function testCanAddIndividualEntries() {
  88. $this->feed->transferFromXML($this->feedText);
  89. $this->assertEquals(1, count($this->feed->entry));
  90. $oldTitle = $this->feed->entry[0]->title->text;
  91. $newEntry = new Zend_Gdata_App_Entry();
  92. $newEntry->setTitle(new Zend_Gdata_App_Extension_Title("Foo"));
  93. $this->feed->addEntry($newEntry);
  94. $this->assertEquals(2, count($this->feed->entry));
  95. $this->assertEquals($oldTitle, $this->feed->entry[0]->title->text);
  96. $this->assertEquals("Foo", $this->feed->entry[1]->title->text);
  97. }
  98. public function testCanSetAndGetEtag() {
  99. $data = "W/&amp;FooBarBaz&amp;";
  100. $this->feed->setEtag($data);
  101. $this->assertEquals($this->feed->getEtag(), $data);
  102. }
  103. public function testSetServicePropagatesToChildren() {
  104. // Setup
  105. $entries = array(new Zend_Gdata_App_Entry(),
  106. new Zend_Gdata_App_Entry());
  107. foreach ($entries as $entry) {
  108. $this->feed->addEntry($entry);
  109. }
  110. // Set new service instance and test for propagation
  111. $s = new Zend_Gdata_App();
  112. $this->feed->setService($s);
  113. $this->assertEquals('Zend_Gdata_App',
  114. get_class($this->feed->getService()));
  115. foreach ($entries as $entry) {
  116. $this->assertEquals('Zend_Gdata_App',
  117. get_class($entry->getService()));
  118. }
  119. // Set null service instance and test for propagation
  120. $s = null;
  121. $this->feed->setService($s);
  122. $this->assertEquals(null, get_class($this->feed->getService()));
  123. foreach ($entries as $entry) {
  124. $this->assertEquals(null, get_class($entry->getService()));
  125. }
  126. }
  127. public function testCanSetMajorProtocolVersion()
  128. {
  129. $expectedVersion = 42;
  130. $this->feed->setMajorProtocolVersion($expectedVersion);
  131. $receivedVersion = $this->feed->getMajorProtocolVersion();
  132. $this->assertEquals($expectedVersion, $receivedVersion);
  133. }
  134. public function testCanSetMinorProtocolVersion()
  135. {
  136. $expectedVersion = 42;
  137. $this->feed->setMinorProtocolVersion($expectedVersion);
  138. $receivedVersion = $this->feed->getMinorProtocolVersion();
  139. $this->assertEquals($expectedVersion, $receivedVersion);
  140. }
  141. public function testEntriesInheritFeedVersionOnCreate()
  142. {
  143. $major = 98;
  144. $minor = 12;
  145. $this->feed->setMajorProtocolVersion($major);
  146. $this->feed->setMinorProtocolVersion($minor);
  147. $this->feed->transferFromXML($this->feedText);
  148. foreach ($this->feed->entries as $entry) {
  149. $this->assertEquals($major, $entry->getMajorProtocolVersion());
  150. $this->assertEquals($minor, $entry->getMinorProtocolVersion());
  151. }
  152. }
  153. public function testEntriesInheritFeedVersionOnUpdate()
  154. {
  155. $major = 98;
  156. $minor = 12;
  157. $this->feed->transferFromXML($this->feedText);
  158. $this->feed->setMajorProtocolVersion($major);
  159. $this->feed->setMinorProtocolVersion($minor);
  160. foreach ($this->feed->entries as $entry) {
  161. $this->assertEquals($major, $entry->getMajorProtocolVersion());
  162. $this->assertEquals($minor, $entry->getMinorProtocolVersion());
  163. }
  164. }
  165. public function testDefaultMajorProtocolVersionIs1()
  166. {
  167. $this->assertEquals(1, $this->feed->getMajorProtocolVersion());
  168. }
  169. public function testDefaultMinorProtocolVersionIsNull()
  170. {
  171. $this->assertNull($this->feed->getMinorProtocolVersion());
  172. }
  173. public function testLookupNamespaceUsesCurrentVersion()
  174. {
  175. $prefix = 'test';
  176. $v1TestString = 'TEST-v1';
  177. $v2TestString = 'TEST-v2';
  178. Zend_Gdata_App_Base::flushNamespaceLookupCache();
  179. $feed = $this->feed;
  180. $feed->registerNamespace($prefix, $v1TestString, 1, 0);
  181. $feed->registerNamespace($prefix, $v2TestString, 2, 0);
  182. $feed->setMajorProtocolVersion(1);
  183. $result = $feed->lookupNamespace($prefix);
  184. $this->assertEquals($v1TestString, $result);
  185. $feed->setMajorProtocolVersion(2);
  186. $result = $feed->lookupNamespace($prefix);
  187. $this->assertEquals($v2TestString, $result);
  188. $feed->setMajorProtocolVersion(null); // Should default to latest
  189. $result = $feed->lookupNamespace($prefix);
  190. }
  191. public function testLookupNamespaceObeysParentBehavior()
  192. {
  193. $prefix = 'test';
  194. $testString10 = 'TEST-v1-0';
  195. $testString20 = 'TEST-v2-0';
  196. $testString11 = 'TEST-v1-1';
  197. $testString21 = 'TEST-v2-1';
  198. $testString12 = 'TEST-v1-2';
  199. $testString22 = 'TEST-v2-2';
  200. Zend_Gdata_App_Base::flushNamespaceLookupCache();
  201. $feed = $this->feed;
  202. $feed->registerNamespace($prefix, $testString10, 1, 0);
  203. $feed->registerNamespace($prefix, $testString20, 2, 0);
  204. $feed->registerNamespace($prefix, $testString11, 1, 1);
  205. $feed->registerNamespace($prefix, $testString21, 2, 1);
  206. $feed->registerNamespace($prefix, $testString12, 1, 2);
  207. $feed->registerNamespace($prefix, $testString22, 2, 2);
  208. // Assumes default version (1)
  209. $result = $feed->lookupNamespace($prefix, 1, null);
  210. $this->assertEquals($testString12, $result);
  211. $result = $feed->lookupNamespace($prefix, 2, null);
  212. $this->assertEquals($testString22, $result);
  213. $result = $feed->lookupNamespace($prefix, 1, 1);
  214. $this->assertEquals($testString11, $result);
  215. $result = $feed->lookupNamespace($prefix, 2, 1);
  216. $this->assertEquals($testString21, $result);
  217. $result = $feed->lookupNamespace($prefix, null, null);
  218. $this->assertEquals($testString12, $result);
  219. $result = $feed->lookupNamespace($prefix, null, 1);
  220. $this->assertEquals($testString11, $result);
  221. // Override to retrieve latest version
  222. $feed->setMajorProtocolVersion(null);
  223. $result = $feed->lookupNamespace($prefix, null, null);
  224. $this->assertEquals($testString22, $result);
  225. $result = $feed->lookupNamespace($prefix, null, 1);
  226. $this->assertEquals($testString21, $result);
  227. }
  228. }