Add tests for Import/Export models

This commit is contained in:
Samuel Georges 2015-08-04 21:03:42 +10:00
parent 54e06694da
commit 4e99ea6435
2 changed files with 104 additions and 0 deletions

View File

@ -0,0 +1,51 @@
<?php
use Backend\Models\ExportModel;
if (!class_exists('Model')) class_alias('October\Rain\Database\Model', 'Model');
class ExampleExportModel extends ExportModel
{
public function exportData($columns, $sessionKey = null)
{
return [];
}
}
class ExportModelTest extends TestCase
{
//
// Helpers
//
protected static function callProtectedMethod($object, $name, $params = [])
{
$className = get_class($object);
$class = new ReflectionClass($className);
$method = $class->getMethod($name);
$method->setAccessible(true);
return $method->invokeArgs($object, $params);
}
//
// Tests
//
public function testEncodeArrayValue()
{
$model = new ExampleExportModel;
$data = ['foo', 'bar'];
$result = self::callProtectedMethod($model, 'encodeArrayValue', [$data]);
$this->assertEquals('foo|bar', $result);
$data = ['dps | heals | tank', 'paladin', 'berserker', 'gunner'];
$result = self::callProtectedMethod($model, 'encodeArrayValue', [$data]);
$this->assertEquals('dps \| heals \| tank|paladin|berserker|gunner', $result);
$data = ['art direction', 'roman empire', 'sci-fi'];
$result = self::callProtectedMethod($model, 'encodeArrayValue', [$data, '-']);
$this->assertEquals('art direction-roman empire-sci\-fi', $result);
}
}

View File

@ -0,0 +1,53 @@
<?php
use Backend\Models\ImportModel;
if (!class_exists('Model')) class_alias('October\Rain\Database\Model', 'Model');
class ExampleImportModel extends ImportModel
{
public $rules = [];
public function importData($results, $sessionKey = null)
{
return [];
}
}
class ImportModelTest extends TestCase
{
//
// Helpers
//
protected static function callProtectedMethod($object, $name, $params = [])
{
$className = get_class($object);
$class = new ReflectionClass($className);
$method = $class->getMethod($name);
$method->setAccessible(true);
return $method->invokeArgs($object, $params);
}
//
// Tests
//
public function testDecodeArrayValue()
{
$model = new ExampleImportModel;
$data = 'foo|bar';
$result = self::callProtectedMethod($model, 'decodeArrayValue', [$data]);
$this->assertEquals(['foo', 'bar'], $result);
$data = 'dps \| heals \| tank|paladin|berserker|gunner';
$result = self::callProtectedMethod($model, 'decodeArrayValue', [$data]);
$this->assertEquals(['dps | heals | tank', 'paladin', 'berserker', 'gunner'], $result);
$data = 'art direction-roman empire-sci\-fi';
$result = self::callProtectedMethod($model, 'decodeArrayValue', [$data, '-']);
$this->assertEquals(['art direction', 'roman empire', 'sci-fi'], $result);
}
}