Ver código fonte

ZF-7385 - Fix bug where QueryTable derived data tables throw php warning when the result contains no rows.

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@17114 44c647ce-9c0f-0410-b52a-842ac1e357ba
beberlei 16 anos atrás
pai
commit
3832f98416

+ 18 - 0
library/Zend/Test/PHPUnit/Db/DataSet/QueryTable.php

@@ -65,4 +65,22 @@ class Zend_Test_PHPUnit_Db_DataSet_QueryTable extends PHPUnit_Extensions_Databas
             $this->data = $stmt->fetchAll(Zend_Db::FETCH_ASSOC);
         }
     }
+
+    /**
+     * Create Table Metadata
+     */
+    protected function createTableMetaData()
+    {
+        if ($this->tableMetaData === NULL)
+        {
+            $this->loadData();
+            $keys = array();
+            if(count($this->data) > 0) {
+                $keys = array_keys($this->data[0]);
+            }
+            $this->tableMetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData(
+                $this->tableName, $keys
+            );
+        }
+    }
 }

+ 19 - 2
tests/Zend/Test/PHPUnit/Db/DataSet/QueryTableTest.php

@@ -103,8 +103,25 @@ class Zend_Test_PHPUnit_Db_DataSet_QueryTableTest extends Zend_Test_PHPUnit_Db_D
         $this->decorateConnectionGetConnectionWith($adapterMock);
 
         $queryTable = new Zend_Test_PHPUnit_Db_DataSet_QueryTable("foo", $fixtureSql, $this->connectionMock);
-        $queryTable->getRowCount();
-        $queryTable->getRowCount();
+        $this->assertEquals(1, $queryTable->getRowCount());
+        $this->assertEquals(1, $queryTable->getRowCount());
         $row = $queryTable->getRow(0);
+        $this->assertEquals(array('foo' => 'bar'), $row);
+    }
+
+    public function testQueryTableWithoutRows()
+    {
+        $statementMock = new Zend_Test_DbStatement();
+        $adapterMock = new Zend_Test_DbAdapter();
+        $adapterMock->appendStatementToStack($statementMock);
+
+        $this->decorateConnectionGetConnectionWith($adapterMock);
+        $queryTable = new Zend_Test_PHPUnit_Db_DataSet_QueryTable("foo", null, $this->connectionMock);
+
+        $metadata = $queryTable->getTableMetaData();
+        $this->assertType('PHPUnit_Extensions_Database_DataSet_ITableMetaData', $metadata);
+        $this->assertEquals(array(), $metadata->getColumns());
+        $this->assertEquals(array(), $metadata->getPrimaryKeys());
+        $this->assertEquals("foo", $metadata->getTableName());
     }
 }