Browse Source

Fixed Zend_Feed_Reader setGenerator() parameter to accept array parameter. Previous signature will be marked as deprecated (remove in ZF 2.0). Fixes ZF-9161

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@22094 44c647ce-9c0f-0410-b52a-842ac1e357ba
padraic 15 years ago
parent
commit
f007d1a6b6
2 changed files with 112 additions and 20 deletions
  1. 37 14
      library/Zend/Feed/Writer/Feed/FeedAbstract.php
  2. 75 6
      tests/Zend/Feed/Writer/FeedTest.php

+ 37 - 14
library/Zend/Feed/Writer/Feed/FeedAbstract.php

@@ -226,24 +226,47 @@ class Zend_Feed_Writer_Feed_FeedAbstract
      */
     public function setGenerator($name, $version = null, $uri = null)
     {
-        if (empty($name) || !is_string($name)) {
-            require_once 'Zend/Feed/Exception.php';
-            throw new Zend_Feed_Exception('Invalid parameter: "name" must be a non-empty string');
-        }
-        $generator = array('name' => $name);
-        if (isset($version)) {
-            if (empty($version) || !is_string($version)) {
+        if (is_array($name)) {
+            $data = $name;
+            if (empty($data['name']) || !is_string($data['name'])) {
                 require_once 'Zend/Feed/Exception.php';
-                throw new Zend_Feed_Exception('Invalid parameter: "version" must be a non-empty string');
+                throw new Zend_Feed_Exception('Invalid parameter: "name" must be a non-empty string');
             }
-            $generator['version'] = $version;
-        }
-        if (isset($uri)) {
-            if (empty($uri) || !is_string($uri) || !Zend_Uri::check($uri)) {
+            $generator = array('name' => $data['name']);
+            if (isset($data['version'])) {
+                if (empty($data['version']) || !is_string($data['version'])) {
+                    require_once 'Zend/Feed/Exception.php';
+                    throw new Zend_Feed_Exception('Invalid parameter: "version" must be a non-empty string');
+                }
+                $generator['version'] = $data['version'];
+            }
+            if (isset($data['uri'])) {
+                if (empty($data['uri']) || !is_string($data['uri']) || !Zend_Uri::check($data['uri'])) {
+                    require_once 'Zend/Feed/Exception.php';
+                    throw new Zend_Feed_Exception('Invalid parameter: "uri" must be a non-empty string and a valid URI/IRI');
+                }
+                $generator['uri'] = $data['uri'];
+            }
+        } else {
+            if (empty($name) || !is_string($name)) {
                 require_once 'Zend/Feed/Exception.php';
-                throw new Zend_Feed_Exception('Invalid parameter: "uri" must be a non-empty string and a valid URI/IRI');
+                throw new Zend_Feed_Exception('Invalid parameter: "name" must be a non-empty string');
+            }
+            $generator = array('name' => $name);
+            if (isset($version)) {
+                if (empty($version) || !is_string($version)) {
+                    require_once 'Zend/Feed/Exception.php';
+                    throw new Zend_Feed_Exception('Invalid parameter: "version" must be a non-empty string');
+                }
+                $generator['version'] = $version;
+            }
+            if (isset($uri)) {
+                if (empty($uri) || !is_string($uri) || !Zend_Uri::check($uri)) {
+                    require_once 'Zend/Feed/Exception.php';
+                    throw new Zend_Feed_Exception('Invalid parameter: "uri" must be a non-empty string and a valid URI/IRI');
+                }
+                $generator['uri'] = $uri;
             }
-            $generator['uri'] = $uri;
         }
         $this->_data['generator'] = $generator;
     }

+ 75 - 6
tests/Zend/Feed/Writer/FeedTest.php

@@ -436,21 +436,21 @@ class Zend_Feed_Writer_FeedTest extends PHPUnit_Framework_TestCase
     public function testSetsGeneratorName()
     {
         $writer = new Zend_Feed_Writer_Feed;
-        $writer->setGenerator('ZFW');
+        $writer->setGenerator(array('name'=>'ZFW'));
         $this->assertEquals(array('name'=>'ZFW'), $writer->getGenerator());
     }
 
     public function testSetsGeneratorVersion()
     {
         $writer = new Zend_Feed_Writer_Feed;
-        $writer->setGenerator('ZFW', '1.0');
+        $writer->setGenerator(array('name'=>'ZFW', 'version' => '1.0'));
         $this->assertEquals(array('name'=>'ZFW', 'version' => '1.0'), $writer->getGenerator());
     }
 
     public function testSetsGeneratorUri()
     {
         $writer = new Zend_Feed_Writer_Feed;
-        $writer->setGenerator('ZFW', null, 'http://www.example.com');
+        $writer->setGenerator(array('name'=>'ZFW', 'uri'=>'http://www.example.com'));
         $this->assertEquals(array('name'=>'ZFW', 'uri' => 'http://www.example.com'), $writer->getGenerator());
     }
 
@@ -458,7 +458,7 @@ class Zend_Feed_Writer_FeedTest extends PHPUnit_Framework_TestCase
     {
         $writer = new Zend_Feed_Writer_Feed;
         try {
-            $writer->setGenerator('');
+            $writer->setGenerator(array());
             $this->fail();
         } catch (Zend_Feed_Exception $e) {
         }
@@ -468,8 +468,8 @@ class Zend_Feed_Writer_FeedTest extends PHPUnit_Framework_TestCase
     {
         $writer = new Zend_Feed_Writer_Feed;
         try {
-            $writer->addAuthor('ZFW', '');
-            $this->fail();
+            $writer->setGenerator(array('name'=>'ZFW', 'version'=>''));
+            $this->fail('Should have failed since version is empty');
         } catch (Zend_Feed_Exception $e) {
         }
     }
@@ -478,6 +478,75 @@ class Zend_Feed_Writer_FeedTest extends PHPUnit_Framework_TestCase
     {
         $writer = new Zend_Feed_Writer_Feed;
         try {
+            $writer->setGenerator(array('name'=>'ZFW','uri'=>'notauri'));
+            $this->fail();
+        } catch (Zend_Feed_Exception $e) {
+        }
+    }
+
+    /**
+     * @deprecated
+     */
+    public function testSetsGeneratorName_Deprecated()
+    {
+        $writer = new Zend_Feed_Writer_Feed;
+        $writer->setGenerator('ZFW');
+        $this->assertEquals(array('name'=>'ZFW'), $writer->getGenerator());
+    }
+
+    /**
+     * @deprecated
+     */
+    public function testSetsGeneratorVersion_Deprecated()
+    {
+        $writer = new Zend_Feed_Writer_Feed;
+        $writer->setGenerator('ZFW', '1.0');
+        $this->assertEquals(array('name'=>'ZFW', 'version' => '1.0'), $writer->getGenerator());
+    }
+
+    /**
+     * @deprecated
+     */
+    public function testSetsGeneratorUri_Deprecated()
+    {
+        $writer = new Zend_Feed_Writer_Feed;
+        $writer->setGenerator('ZFW', null, 'http://www.example.com');
+        $this->assertEquals(array('name'=>'ZFW', 'uri' => 'http://www.example.com'), $writer->getGenerator());
+    }
+
+    /**
+     * @deprecated
+     */
+    public function testSetsGeneratorThrowsExceptionOnInvalidName_Deprecated()
+    {
+        $writer = new Zend_Feed_Writer_Feed;
+        try {
+            $writer->setGenerator('');
+            $this->fail();
+        } catch (Zend_Feed_Exception $e) {
+        }
+    }
+
+    /**
+     * @deprecated
+     */
+    public function testSetsGeneratorThrowsExceptionOnInvalidVersion_Deprecated()
+    {
+        $writer = new Zend_Feed_Writer_Feed;
+        try {
+            $writer->setGenerator('ZFW', '');
+            $this->fail();
+        } catch (Zend_Feed_Exception $e) {
+        }
+    }
+
+    /**
+     * @deprecated
+     */
+    public function testSetsGeneratorThrowsExceptionOnInvalidUri_Deprecated()
+    {
+        $writer = new Zend_Feed_Writer_Feed;
+        try {
             $writer->setGenerator('ZFW', null, 'notauri');
             $this->fail();
         } catch (Zend_Feed_Exception $e) {