/tests/ZendTest/Feed/Writer/DeletedTest.php

https://github.com/cgmartin/zf2 · PHP · 259 lines · 186 code · 40 blank · 33 comment · 0 complexity · 5c4dfae45cebe0f3d6870df50376a4c5 MD5 · raw file

  1. <?php
  2. /**
  3. * Zend Framework (http://framework.zend.com/)
  4. *
  5. * @link http://github.com/zendframework/zf2 for the canonical source repository
  6. * @copyright Copyright (c) 2005-2013 Zend Technologies USA Inc. (http://www.zend.com)
  7. * @license http://framework.zend.com/license/new-bsd New BSD License
  8. */
  9. namespace ZendTest\Feed\Writer;
  10. use DateTime;
  11. use Zend\Feed\Writer;
  12. /**
  13. * @group Zend_Feed
  14. * @group Zend_Feed_Writer
  15. */
  16. class DeletedTest extends \PHPUnit_Framework_TestCase
  17. {
  18. public function testSetsReference()
  19. {
  20. $entry = new Writer\Deleted;
  21. $entry->setReference('http://www.example.com/id');
  22. $this->assertEquals('http://www.example.com/id', $entry->getReference());
  23. }
  24. public function testSetReferenceThrowsExceptionOnInvalidParameter()
  25. {
  26. $entry = new Writer\Deleted;
  27. try {
  28. $entry->setReference('');
  29. $this->fail();
  30. } catch (Writer\Exception\ExceptionInterface $e) {
  31. }
  32. }
  33. public function testGetReferenceReturnsNullIfNotSet()
  34. {
  35. $entry = new Writer\Deleted;
  36. $this->assertTrue(is_null($entry->getReference()));
  37. }
  38. public function testSetWhenDefaultsToCurrentTime()
  39. {
  40. $entry = new Writer\Deleted;
  41. $entry->setWhen();
  42. $dateNow = new DateTime();
  43. $this->assertTrue($dateNow >= $entry->getWhen());
  44. }
  45. public function testSetWhenUsesGivenUnixTimestamp()
  46. {
  47. $entry = new Writer\Deleted;
  48. $entry->setWhen(1234567890);
  49. $myDate = new DateTime('@' . 1234567890);
  50. $this->assertEquals($myDate, $entry->getWhen());
  51. }
  52. /**
  53. * @group ZF-12070
  54. */
  55. public function testSetWhenUsesGivenUnixTimestampWhenItIsLessThanTenDigits()
  56. {
  57. $entry = new Writer\Deleted;
  58. $entry->setWhen(123456789);
  59. $myDate = new DateTime('@' . 123456789);
  60. $this->assertEquals($myDate, $entry->getWhen());
  61. }
  62. /**
  63. * @group ZF-11610
  64. */
  65. public function testSetWhenUsesGivenUnixTimestampWhenItIsAVerySmallInteger()
  66. {
  67. $entry = new Writer\Deleted;
  68. $entry->setWhen(123);
  69. $myDate = new DateTime('@' . 123);
  70. $this->assertEquals($myDate, $entry->getWhen());
  71. }
  72. public function testSetWhenUsesDateTimeObject()
  73. {
  74. $myDate = new DateTime('@' . 1234567890);
  75. $entry = new Writer\Deleted;
  76. $entry->setWhen($myDate);
  77. $this->assertEquals($myDate, $entry->getWhen());
  78. }
  79. public function testSetWhenThrowsExceptionOnInvalidParameter()
  80. {
  81. $entry = new Writer\Deleted;
  82. try {
  83. $entry->setWhen('abc');
  84. $this->fail();
  85. } catch (Writer\Exception\ExceptionInterface $e) {
  86. }
  87. }
  88. public function testGetWhenReturnsNullIfDateNotSet()
  89. {
  90. $entry = new Writer\Deleted;
  91. $this->assertTrue(is_null($entry->getWhen()));
  92. }
  93. public function testAddsByNameFromArray()
  94. {
  95. $entry = new Writer\Deleted;
  96. $entry->setBy(array('name'=>'Joe'));
  97. $this->assertEquals(array('name'=>'Joe'), $entry->getBy());
  98. }
  99. public function testAddsByEmailFromArray()
  100. {
  101. $entry = new Writer\Deleted;
  102. $entry->setBy(array('name'=>'Joe','email'=>'joe@example.com'));
  103. $this->assertEquals(array('name'=>'Joe', 'email' => 'joe@example.com'), $entry->getBy());
  104. }
  105. public function testAddsByUriFromArray()
  106. {
  107. $entry = new Writer\Deleted;
  108. $entry->setBy(array('name'=>'Joe','uri'=>'http://www.example.com'));
  109. $this->assertEquals(array('name'=>'Joe', 'uri' => 'http://www.example.com'), $entry->getBy());
  110. }
  111. public function testAddByThrowsExceptionOnInvalidNameFromArray()
  112. {
  113. $entry = new Writer\Deleted;
  114. try {
  115. $entry->setBy(array('name'=>''));
  116. $this->fail();
  117. } catch (Writer\Exception\ExceptionInterface $e) {
  118. }
  119. }
  120. public function testAddByThrowsExceptionOnInvalidEmailFromArray()
  121. {
  122. $entry = new Writer\Deleted;
  123. try {
  124. $entry->setBy(array('name'=>'Joe','email'=>''));
  125. $this->fail();
  126. } catch (Writer\Exception\ExceptionInterface $e) {
  127. }
  128. }
  129. public function testAddByThrowsExceptionOnInvalidUriFromArray()
  130. {
  131. $this->markTestIncomplete('Pending Zend\URI fix for validation');
  132. $entry = new Writer\Deleted;
  133. try {
  134. $entry->setBy(array('name'=>'Joe','uri'=>'notauri'));
  135. $this->fail();
  136. } catch (Writer\Exception\ExceptionInterface $e) {
  137. }
  138. }
  139. public function testAddByThrowsExceptionIfNameOmittedFromArray()
  140. {
  141. $entry = new Writer\Deleted;
  142. try {
  143. $entry->setBy(array('uri'=>'notauri'));
  144. $this->fail();
  145. } catch (Writer\Exception\ExceptionInterface $e) {
  146. }
  147. }
  148. /**
  149. * @covers Zend\Feed\Writer\Deleted::getBy
  150. */
  151. public function testGetBy()
  152. {
  153. $entry = new Writer\Deleted;
  154. $by = $entry->getBy();
  155. $this->assertNull($by);
  156. $entry->setBy(array('name'=>'Joe','email'=>'joe@example.com'));
  157. $this->assertEquals(array('name'=>'Joe', 'email' => 'joe@example.com'), $entry->getBy());
  158. }
  159. public function testSetByException()
  160. {
  161. $entry = new Writer\Deleted;
  162. $this->setExpectedException('Zend\Feed\Writer\Exception\InvalidArgumentException',
  163. 'Invalid parameter: "uri" array value must be a non-empty string and valid URI/IRI');
  164. $entry->setBy(array('name' => 'joe','email'=>'joe@example.com', 'uri'=> ''));
  165. }
  166. /**
  167. * @covers Zend\Feed\Writer\Deleted::getComment
  168. * @covers Zend\Feed\Writer\Deleted::setComment
  169. * @covers Zend\Feed\Writer\Deleted::remove
  170. */
  171. public function testCommentAndRemove()
  172. {
  173. $entry = new Writer\Deleted;
  174. $comment = $entry->getComment();
  175. $this->assertNull($comment);
  176. $entry->setComment('foo');
  177. $this->assertEquals('foo', $entry->getComment());
  178. $entry->remove('comment');
  179. $this->assertNull($entry->getComment());
  180. }
  181. /**
  182. * @covers Zend\Feed\Writer\Deleted::getEncoding
  183. * @covers Zend\Feed\Writer\Deleted::setEncoding
  184. */
  185. public function testEncoding()
  186. {
  187. $entry = new Writer\Deleted;
  188. $encoding = $entry->getEncoding();
  189. $this->assertEquals('UTF-8', $encoding);
  190. $entry->setEncoding('ISO-8859-1');
  191. $this->assertEquals('ISO-8859-1', $entry->getEncoding());
  192. $this->setExpectedException('Zend\Feed\Writer\Exception\InvalidArgumentException',
  193. 'Invalid parameter: parameter must be a non-empty string');
  194. $entry->setEncoding(null);
  195. }
  196. /**
  197. * @covers Zend\Feed\Writer\Deleted::getType
  198. * @covers Zend\Feed\Writer\Deleted::setType
  199. */
  200. public function testType()
  201. {
  202. $entry = new Writer\Deleted;
  203. $type = $entry->getType();
  204. $this->assertNull($type);
  205. $entry->setType('atom');
  206. $this->assertEquals('atom', $entry->getType());
  207. }
  208. public function testFluentInterface()
  209. {
  210. $entry = new Writer\Deleted;
  211. $result = $entry->setType('type')
  212. ->setBy(array('name' => 'foo'))
  213. ->setComment('comment')
  214. ->setEncoding('utf-8')
  215. ->setReference('foo')
  216. ->setWhen(null);
  217. $this->assertSame($result, $entry);
  218. }
  219. }