[ZF-10069] Zend_Feed_Pubsubhubbub:
authorramon <ramon@44c647ce-9c0f-0410-b52a-842ac1e357ba>
Wed, 30 Jun 2010 19:11:27 +0000 (30 19:11 +0000)
committerramon <ramon@44c647ce-9c0f-0410-b52a-842ac1e357ba>
Wed, 30 Jun 2010 19:11:27 +0000 (30 19:11 +0000)
- Fixed condition wrong

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@22507 44c647ce-9c0f-0410-b52a-842ac1e357ba

library/Zend/Feed/Pubsubhubbub/Model/Subscription.php
tests/Zend/Feed/Pubsubhubbub/AllTests.php
tests/Zend/Feed/Pubsubhubbub/Model/AllTests.php [copied from tests/Zend/Feed/Pubsubhubbub/AllTests.php with 56% similarity]
tests/Zend/Feed/Pubsubhubbub/Model/SubscriptionTest.php [new file with mode: 0644]

index 0ba23e0..2db4c20 100644 (file)
@@ -26,6 +26,9 @@ require_once 'Zend/Feed/Pubsubhubbub/Model/ModelAbstract.php';
 /** @see Zend_Feed_Pubsubhubbub_Model_SubscriptionInterface */
 require_once 'Zend/Feed/Pubsubhubbub/Model/SubscriptionInterface.php';
 
+/** @see Zend_Date */
+require_once 'Zend/Date.php';
+
 /**
  * @category   Zend
  * @package    Zend_Feed_Pubsubhubbub
@@ -37,7 +40,7 @@ class Zend_Feed_Pubsubhubbub_Model_Subscription
     extends Zend_Feed_Pubsubhubbub_Model_ModelAbstract
     implements Zend_Feed_Pubsubhubbub_Model_SubscriptionInterface
 {
-    
+
     /**
      * Save subscription to RDMBS
      *
@@ -53,10 +56,10 @@ class Zend_Feed_Pubsubhubbub_Model_Subscription
             );
         }
         $result = $this->_db->find($data['id']);
-        if ($result) {
+        if (count($result)) {
             $data['created_time'] = $result->current()->created_time;
             $now = new Zend_Date;
-            if ($data['lease_seconds']) {
+            if (isset($data['lease_seconds'])) {
                 $data['expiration_time'] = $now->add($data['lease_seconds'], Zend_Date::SECOND)
                 ->get('yyyy-MM-dd HH:mm:ss');
             }
@@ -70,11 +73,11 @@ class Zend_Feed_Pubsubhubbub_Model_Subscription
         $this->_db->insert($data);
         return true;
     }
-    
+
     /**
      * Get subscription by ID/key
-     * 
-     * @param  string $key 
+     *
+     * @param  string $key
      * @return array
      */
     public function getSubscription($key)
@@ -85,16 +88,16 @@ class Zend_Feed_Pubsubhubbub_Model_Subscription
                 .' of "' . $key . '" must be a non-empty string');
         }
         $result = $this->_db->find($key);
-        if ($result) {
-            return (array) $result->current();
+        if (count($result)) {
+            return $result->current()->toArray();
         }
         return false;
     }
 
     /**
      * Determine if a subscription matching the key exists
-     * 
-     * @param  string $key 
+     *
+     * @param  string $key
      * @return bool
      */
     public function hasSubscription($key)
@@ -105,12 +108,12 @@ class Zend_Feed_Pubsubhubbub_Model_Subscription
                 .' of "' . $key . '" must be a non-empty string');
         }
         $result = $this->_db->find($key);
-        if ($result) {
+        if (count($result)) {
             return true;
         }
         return false;
     }
-    
+
     /**
      * Delete a subscription
      *
@@ -120,7 +123,7 @@ class Zend_Feed_Pubsubhubbub_Model_Subscription
     public function deleteSubscription($key)
     {
         $result = $this->_db->find($key);
-        if ($result) {
+        if (count($result)) {
             $this->_db->delete(
                 $this->_db->getAdapter()->quoteInto('id = ?', $key)
             );
@@ -128,5 +131,5 @@ class Zend_Feed_Pubsubhubbub_Model_Subscription
         }
         return false;
     }
-    
+
 }
index 2958573..28d630c 100644 (file)
@@ -29,6 +29,7 @@ require_once 'Zend/Feed/Pubsubhubbub/PubsubhubbubTest.php';
 require_once 'Zend/Feed/Pubsubhubbub/PublisherTest.php';
 require_once 'Zend/Feed/Pubsubhubbub/SubscriberTest.php';
 require_once 'Zend/Feed/Pubsubhubbub/SubscriberHttpTest.php';
+require_once 'Zend/Feed/Pubsubhubbub/Model/AllTests.php';
 require_once 'Zend/Feed/Pubsubhubbub/Subscriber/CallbackTest.php';
 
 
@@ -56,6 +57,7 @@ class Zend_Feed_Pubsubhubbub_AllTests
         $suite->addTestSuite('Zend_Feed_Pubsubhubbub_PublisherTest');
         $suite->addTestSuite('Zend_Feed_Pubsubhubbub_SubscriberTest');
         $suite->addTestSuite('Zend_Feed_Pubsubhubbub_SubscriberHttpTest');
+        $suite->addTest(Zend_Feed_Pubsubhubbub_Model_AllTests::suite());
         $suite->addTestSuite('Zend_Feed_Pubsubhubbub_Subscriber_CallbackTest');
 
         return $suite;
  */
 
 if (!defined('PHPUnit_MAIN_METHOD')) {
-    define('PHPUnit_MAIN_METHOD', 'Zend_Feed_Pubsubhubbub_AllTests::main');
+    define('PHPUnit_MAIN_METHOD', 'Zend_Feed_Pubsubhubbub_Model_AllTests::main');
 }
 
-require_once dirname(dirname(dirname(dirname(__FILE__)))) . DIRECTORY_SEPARATOR . 'TestHelper.php';
-
-require_once 'Zend/Feed/Pubsubhubbub/PubsubhubbubTest.php';
-require_once 'Zend/Feed/Pubsubhubbub/PublisherTest.php';
-require_once 'Zend/Feed/Pubsubhubbub/SubscriberTest.php';
-require_once 'Zend/Feed/Pubsubhubbub/SubscriberHttpTest.php';
-require_once 'Zend/Feed/Pubsubhubbub/Subscriber/CallbackTest.php';
+require_once dirname(dirname(dirname(dirname(dirname(__FILE__))))) . DIRECTORY_SEPARATOR . 'TestHelper.php';
 
+require_once 'Zend/Feed/Pubsubhubbub/Model/SubscriptionTest.php';
 
 /**
  * @category   Zend
  * @package    Zend_Feed
  * @subpackage UnitTests
  * @group      Zend_Feed
- * @group      Zend_Feed_Subsubhubbub
+ * @group      Zend_Feed_Pubsubhubbub
  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
-class Zend_Feed_Pubsubhubbub_AllTests
+class Zend_Feed_Pubsubhubbub_Model_AllTests
 {
     public static function main()
     {
@@ -51,17 +46,11 @@ class Zend_Feed_Pubsubhubbub_AllTests
     public static function suite()
     {
         $suite = new PHPUnit_Framework_TestSuite('Zend Framework - Zend');
-
-        $suite->addTestSuite('Zend_Feed_Pubsubhubbub_PubsubhubbubTest');
-        $suite->addTestSuite('Zend_Feed_Pubsubhubbub_PublisherTest');
-        $suite->addTestSuite('Zend_Feed_Pubsubhubbub_SubscriberTest');
-        $suite->addTestSuite('Zend_Feed_Pubsubhubbub_SubscriberHttpTest');
-        $suite->addTestSuite('Zend_Feed_Pubsubhubbub_Subscriber_CallbackTest');
-
+        $suite->addTestSuite('Zend_Feed_Pubsubhubbub_Model_SubscriptionTest');
         return $suite;
     }
 }
 
-if (PHPUnit_MAIN_METHOD == 'Zend_Feed_Pubsubhubbub_AllTests::main') {
+if (PHPUnit_MAIN_METHOD == 'Zend_Feed_Pubsubhubbub_Model_AllTests::main') {
     Zend_Feed_Pubsubhubbub_AllTests::main();
 }
diff --git a/tests/Zend/Feed/Pubsubhubbub/Model/SubscriptionTest.php b/tests/Zend/Feed/Pubsubhubbub/Model/SubscriptionTest.php
new file mode 100644 (file)
index 0000000..974c1af
--- /dev/null
@@ -0,0 +1,97 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to [email protected] so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    UnitTests
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id$
+ */
+
+require_once dirname(dirname(dirname(dirname(dirname(__FILE__))))) . DIRECTORY_SEPARATOR . 'TestHelper.php';
+
+require_once 'Zend/Feed/Pubsubhubbub/Model/Subscription.php';
+/**
+ * @category   Zend
+ * @package    Zend_Feed
+ * @subpackage UnitTests
+ * @group      Zend_Feed
+ * @group      Zend_Feed_Pubsubhubbub_Model
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Feed_Pubsubhubbub_Model_SubscriptionTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * @group ZF-10069
+     */
+    public function testAllOperations()
+    {
+        $this->_initDb();
+        $subscription = new Zend_Feed_Pubsubhubbub_Model_Subscription();
+        $id = uniqid();
+        $this->assertFalse($subscription->hasSubscription($id));
+        $this->assertFalse($subscription->getSubscription($id));
+        $this->assertFalse($subscription->deleteSubscription($id));
+        $this->assertTrue($subscription->setSubscription(array('id' => $id)));
+
+        $this->assertTrue($subscription->hasSubscription($id));
+        $dataSubscription = $subscription->getSubscription($id);
+        $this->assertType('array', $dataSubscription);
+        $keys = array('id', 'topic_url', 'hub_url',
+                      'created_time', 'lease_seconds',
+                      'verify_token', 'secret',
+                      'expiration_time', 'subscription_state');
+
+        $this->assertSame($keys, array_keys($dataSubscription));
+        $this->assertFalse($subscription->setSubscription(array('id' => $id)));
+        $this->assertTrue($subscription->deleteSubscription($id));
+    }
+
+    public function testImpemetsSubscriptionInterface()
+    {
+        $reflection = new ReflectionClass('Zend_Feed_Pubsubhubbub_Model_Subscription');
+        $this->assertTrue($reflection->implementsInterface('Zend_Feed_Pubsubhubbub_Model_SubscriptionInterface'));
+        unset($reflection);
+    }
+
+    protected function _initDb()
+    {
+        if (!extension_loaded('pdo')
+            && !in_array('sqlite', PDO::getAvailableDrivers())) {
+            $this->markTestSkipped('Test only with pdo_sqlite');
+        }
+        $db = Zend_Db::factory('Pdo_Sqlite', array('dbname' => ':memory:'));
+        Zend_Db_Table::setDefaultAdapter($db);
+        $this->_createTable();
+    }
+
+    protected function _createTable()
+    {
+        $sql = "CREATE TABLE subscription ("
+             .      "id varchar(32) NOT NULL DEFAULT '', "
+             .      "topic_url varchar(255) DEFAULT NULL, "
+             .      "hub_url varchar(255) DEFAULT NULL, "
+             .      "created_time datetime DEFAULT NULL, "
+             .      "lease_seconds bigint(20) DEFAULT NULL, "
+             .      "verify_token varchar(255) DEFAULT NULL, "
+             .      "secret varchar(255) DEFAULT NULL, "
+             .      "expiration_time datetime DEFAULT NULL, "
+             .      "subscription_state varchar(12) DEFAULT NULL, "
+             .      "PRIMARY KEY (id) "
+             . ");";
+
+       Zend_Db_Table::getDefaultAdapter()->getConnection()->query($sql);
+    }
+}
\ No newline at end of file