We will work on Apr 26th (Saturday) and will be off from Apr 30th (Wednesday) until May 2nd (Friday) for public holiday in our country

Commit 4fb73ae6 authored by Ivan Chepurnyi's avatar Ivan Chepurnyi

! Fixed issue #36

parent 350ca36f
......@@ -50,11 +50,71 @@ class EcomDev_PHPUnit_Model_Mysql4_Fixture extends Mage_Core_Model_Mysql4_Abstra
*/
public function loadTableData($tableEntity, $tableData)
{
$tableColumns = $this->_getWriteAdapter()
->describeTable($this->getTable($tableEntity));
$records = array();
foreach ($tableData as $row) {
$records[] = $this->_getTableRecord($row, $tableColumns);
}
$this->_getWriteAdapter()->insertMultiple(
$this->getTable($tableEntity),
$tableData
$records
);
return $this;
}
/**
* Prepares entity table record from array
*
* @param array $row
* @param array $tableColumns list of entity_table columns
* @return array
*/
protected function _getTableRecord($row, $tableColumns)
{
$record = array();
// Fullfil table records with data
foreach ($tableColumns as $columnName => $definition) {
if (isset($row[$columnName])) {
$record[$columnName] = $this->_getTableRecordValue($row[$columnName]);
} elseif ($definition['DEFAULT'] !== null) {
$record[$columnName] = $definition['DEFAULT'];
} else {
$record[$columnName] = (($definition['NULLABLE']) ? null : '');
}
}
return $record;
}
/**
* Processes table record values,
* used for transforming custom values like serialized
* or JSON data
*
*
* @param mixed $value
* @return string
*/
protected function _getTableRecordValue($value)
{
// If it is scalar php type, then just return itself
if (!is_array($value)) {
return $value;
}
if (isset($value['json'])) {
return Mage::helper('core')->jsonEncode($value['json']);
}
if (isset($value['serialized'])) {
return serialize($value['serialized']);
}
throw new InvalidArgumentException('Unrecognized type for DB column');
}
}
\ No newline at end of file
......@@ -266,31 +266,6 @@ abstract class EcomDev_PHPUnit_Model_Mysql4_Fixture_Eav_Abstract extends EcomDev
}
/**
* Prepares entity table record from array
*
* @param array $row
* @param array $tableColumns list of entity_table columns
* @return array
*/
protected function _getTableRecord($row, $tableColumns)
{
$record = array();
// Fullfil table records with data
foreach ($tableColumns as $columnName => $definition) {
if (isset($row[$columnName])) {
$record[$columnName] = $row[$columnName];
} elseif ($definition['DEFAULT'] !== null) {
$record[$columnName] = $definition['DEFAULT'];
} else {
$record[$columnName] = (($definition['NULLABLE']) ? null : '');
}
}
return $record;
}
/**
* Retrieves attribute records for single entity
*
......
......@@ -16,6 +16,7 @@
* @author Ivan Chepurnyi <ivan.chepurnyi@ecomdev.org>
*/
/**
* Test suite for Magento
*
......@@ -29,6 +30,7 @@ class EcomDev_PHPUnit_Test_Suite extends PHPUnit_Framework_TestSuite
const XML_PATH_UNIT_TEST_GROUPS = 'phpunit/suite/groups';
const XML_PATH_UNIT_TEST_MODULES = 'phpunit/suite/modules';
const XML_PATH_UNIT_TEST_APP = 'phpunit/suite/app';
const XML_PATH_UNIT_TEST_SUITE = 'phpunit/suite/test_suite';
const CACHE_TAG = 'ECOMDEV_PHPUNIT';
const CACHE_TYPE = 'ecomdev_phpunit';
......@@ -71,7 +73,14 @@ class EcomDev_PHPUnit_Test_Suite extends PHPUnit_Framework_TestSuite
{
$groups = Mage::getConfig()->getNode(self::XML_PATH_UNIT_TEST_GROUPS);
$modules = Mage::getConfig()->getNode(self::XML_PATH_UNIT_TEST_MODULES);
$testSuiteClass = EcomDev_Utils_Reflection::getRelflection((string) Mage::getConfig()->getNode(self::XML_PATH_UNIT_TEST_SUITE));
if (!$testSuiteClass->isSubclassOf('EcomDev_PHPUnit_Test_Suite_Group')) {
new RuntimeException('Test Suite class should be extended from EcomDev_PHPUnit_Test_Suite_Group');
}
$suite = new self('Magento Test Suite');
// Walk through different groups in modules for finding test cases
foreach ($groups->children() as $group) {
foreach ($modules->children() as $module) {
......@@ -96,8 +105,7 @@ class EcomDev_PHPUnit_Test_Suite extends PHPUnit_Framework_TestSuite
$testCases = self::_loadTestCases($searchPath, $moduleCodeDir);
foreach ($testCases as $className) {
$classReflection = EcomDev_Utils_Reflection::getRelflection($className);
$suite->addTest(new PHPUnit_Framework_TestSuite($classReflection), $currentGroups);
$suite->addTest($testSuiteClass->newInstance($className, $currentGroups));
}
}
}
......
......@@ -51,6 +51,8 @@
<helpers>Helper</helpers>
<blocks>Block</blocks>
</groups>
<!-- Test suite that will be used for creation of each of the tests -->
<test_suite>EcomDev_PHPUnit_Test_Suite_Group</test_suite>
<fixture>
<eav>
<!-- Here goes the list of fixture loaders for EAV
......
......@@ -67,7 +67,7 @@ class EcomDev_Utils_Reflection
$reflectionMethod->setAccessible(true);
if (!empty($args)) {
return $reflectionMethod->invokeArgs($reflectionObject, $args);
return $reflectionMethod->invokeArgs((is_string($object) ? null : $object), $args);
}
return $reflectionMethod->invoke((is_string($object) ? null : $object));
......@@ -96,7 +96,7 @@ class EcomDev_Utils_Reflection
if (isset(self::$_reflectionCache[$objectHash])) {
return self::$_reflectionCache[$objectHash];
}
$reflection = new ReflectionClass($object);
$reflection = new ReflectionObject($object);
self::$_reflectionCache[$objectHash] = $reflection;
return $reflection;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment