1
0
Fork 0
mirror of https://github.com/Oreolek/yii2-nested-sets.git synced 2024-05-25 20:28:10 +03:00

Added new ArrayDataSet for unit tests purposes

This commit is contained in:
Alexander Kochetov 2015-01-03 18:09:47 +03:00
parent 580e981919
commit 590d8e38c3

62
tests/ArrayDataSet.php Normal file
View file

@ -0,0 +1,62 @@
<?php
/**
* @link https://github.com/creocoder/yii2-nested-sets-behavior
* @copyright Copyright (c) 2015 Alexander Kochetov
* @license http://opensource.org/licenses/BSD-3-Clause
*/
namespace tests;
/**
* ArrayDataSet
*/
class ArrayDataSet extends \PHPUnit_Extensions_Database_DataSet_AbstractDataSet
{
/**
* @var array
*/
protected $tables = array();
/**
* @param array $data
*/
public function __construct(array $data)
{
foreach ($data AS $tableName => $rows) {
$columns = array();
if (isset($rows[0])) {
$columns = array_keys($rows[0]);
}
$metaData = new \PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData($tableName, $columns);
$table = new \PHPUnit_Extensions_Database_DataSet_DefaultTable($metaData);
foreach ($rows AS $row) {
$table->addRow($row);
}
$this->tables[$tableName] = $table;
}
}
/**
* @inheritdoc
*/
protected function createIterator($reverse = false)
{
return new \PHPUnit_Extensions_Database_DataSet_DefaultTableIterator($this->tables, $reverse);
}
/**
* @inheritdoc
*/
public function getTable($tableName)
{
if (!isset($this->tables[$tableName])) {
throw new \InvalidArgumentException("$tableName is not a table in the current database.");
}
return $this->tables[$tableName];
}
}