Ticket #554 (closed defect: fixed)

Opened 2 years ago

Last modified 23 months ago

FilteredDataSet and DataSet constructors should use IDatabaseConnection

Reported by: fbeachler Owned by: mlively
Priority: major Milestone: PHPUnit 3.3.2
Component: phpunit Version: PHPUnit 3.2.20
Keywords: DbUnit Cc:
PHP Version: 5.2.5

Description (last modified by sb) (diff)

The constructors for FilteredDataSet and DataSet both require (via type hinting) PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection. They could require PHPUnit_Extensions_Database_DB_IDatabaseConnection instead. This would permit the end-user to implement class that conform to the PHPUnit_Extensions_Database_DB_IDatabaseConnection interface, implementing createDataSet() without necessarily needing a PDO DB connection class.

Perhaps the use of DefaultDatabaseConnection in FilteredDataSet and DataSet was an oversight because even PHPUnit_Extensions_Database_DB_DataSet expects a PHPUnit_Extensions_Database_DB_IDatabaseConnection in its constructor.

Attachments

DBUnit_Diff.txt Download (1.8 KB) - added by fbeachler 2 years ago.
proposed diff to address this issue

Change History

Changed 2 years ago by fbeachler

This is the DIFF we would propose/submit as a fix for this issue:

Index: PHPUnit/Extensions/Database/DB/FilteredDataSet.php =================================================================== --- vendors/PHPUnit/PHPUnit/Extensions/Database/DB/FilteredDataSet.php (revision 27424) +++ vendors/PHPUnit/PHPUnit/Extensions/Database/DB/FilteredDataSet.php (working copy) @@ -74,9 +74,9 @@

/**

  • Creates a new dataset using the given database connection. *

- * @param PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection $databaseConnection + * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection

*/

- public function construct(PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection $databaseConnection, Array $tableNames) + public function construct(PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection, Array $tableNames)

{

parent::construct($databaseConnection); $this->tableNames = $tableNames;

Index: PHPUnit/Extensions/Database/DB/DataSet.php =================================================================== --- vendors/PHPUnit/PHPUnit/Extensions/Database/DB/DataSet.php (revision 27424) +++ vendors/PHPUnit/PHPUnit/Extensions/Database/DB/DataSet.php (working copy) @@ -85,9 +85,9 @@

/**

  • Creates a new dataset using the given database connection. *

- * @param PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection $databaseConnection + * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection

*/

- public function construct(PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection $databaseConnection) + public function construct(PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection)

{

$this->databaseConnection = $databaseConnection;

}

Changed 2 years ago by fbeachler

pasting the diff didn't work so I'm attaching it

Changed 2 years ago by fbeachler

proposed diff to address this issue

Changed 2 years ago by sb

  • status changed from new to assigned
  • description modified (diff)
  • summary changed from PHPUnit/DBUnit: FilteredDataSet and DataSet constructors require DefaultDatabaseConnection impl. instead of IDatabaseConnection interface to FilteredDataSet and DataSet constructors should use IDatabaseConnection
  • owner changed from sb to mlively
  • milestone changed from PHPUnit 3.3 to PHPUnit 3.3.1
  • keywords DbUnit added

Changed 2 years ago by mlively

  • status changed from assigned to accepted

This change cannot be made as proposed. A method is used in the DataSet class (and therefore the FilteredDataSet class): getMetaData(). I do agree that this is a good change to make so I will change the IDatabaseConnection interface to implement this method. This does however constitute an API change that could delay this from making it into a release prior to 3.4. I will leave this decision to Sebastian.

Changed 23 months ago by mlively

  • status changed from accepted to closed
  • resolution set to fixed

(In [3849]) fix #554

Note: See TracTickets for help on using tickets.