test fixes

This commit is contained in:
Dennis Eichhorn 2021-10-25 20:06:48 +02:00
parent 3267ae6b24
commit 56010f1f3d
19 changed files with 495 additions and 34 deletions

View File

@ -70,6 +70,8 @@ use phpOMS\Utils\IO\Zip\Zip;
* @license OMS License 1.0
* @link https://orange-management.org
* @since 1.0.0
*
* @codeCoverageIgnore
*/
final class Importer extends ImporterAbstract
{

View File

@ -21,6 +21,8 @@ namespace Modules\Exchange\Interfaces\GSD\Model;
* @license OMS License 1.0
* @link https://orange-management.org
* @since 1.0.0
*
* @codeCoverageIgnore
*/
class GSDAddress
{

View File

@ -21,6 +21,8 @@ namespace Modules\Exchange\Interfaces\GSD\Model;
* @license OMS License 1.0
* @link https://orange-management.org
* @since 1.0.0
*
* @codeCoverageIgnore
*/
class GSDArticle
{

View File

@ -21,6 +21,8 @@ namespace Modules\Exchange\Interfaces\GSD\Model;
* @license OMS License 1.0
* @link https://orange-management.org
* @since 1.0.0
*
* @codeCoverageIgnore
*/
class GSDCostCenter implements \JsonSerializable
{

View File

@ -21,6 +21,8 @@ namespace Modules\Exchange\Interfaces\GSD\Model;
* @license OMS License 1.0
* @link https://orange-management.org
* @since 1.0.0
*
* @codeCoverageIgnore
*/
class GSDCostObject implements \JsonSerializable
{

View File

@ -21,6 +21,8 @@ namespace Modules\Exchange\Interfaces\GSD\Model;
* @license OMS License 1.0
* @link https://orange-management.org
* @since 1.0.0
*
* @codeCoverageIgnore
*/
class GSDCustomer
{

View File

@ -21,6 +21,8 @@ namespace Modules\Exchange\Interfaces\GSD\Model;
* @license OMS License 1.0
* @link https://orange-management.org
* @since 1.0.0
*
* @codeCoverageIgnore
*/
class GSDSupplier
{

View File

@ -24,6 +24,8 @@ use phpOMS\Message\RequestAbstract;
* @license OMS License 1.0
* @link https://orange-management.org
* @since 1.0.0
*
* @codeCoverageIgnore
*/
final class Importer extends ImporterAbstract
{

View File

@ -55,13 +55,13 @@ final class Exporter extends ExporterAbstract
* @param \DateTime $start Start time (inclusive)
* @param \DateTime $end End time (inclusive)
*
* @return void
* @return array
*
* @since 1.0.0
*/
public function export(\DateTime $start, \DateTime $end) : void
public function export(\DateTime $start, \DateTime $end) : array
{
$this->exportLanguage();
return $this->exportLanguage();
}
/**

View File

@ -46,6 +46,8 @@ class ExchangeLog implements \JsonSerializable, ArrayableInterface
/**
* Fields.
*
* What where the values used in the exchange form to reproduce this output (exchange specific)?
*
* @var array
* @since 1.0.0
*/
@ -59,6 +61,12 @@ class ExchangeLog implements \JsonSerializable, ArrayableInterface
*/
private int $type = ExchangeType::IMPORT;
/**
* Exchange specific subtype.
*
* @var string
* @since 1.0.0
*/
public string $subtype = '';
/**
@ -133,30 +141,6 @@ class ExchangeLog implements \JsonSerializable, ArrayableInterface
return $this->id;
}
/**
* @return string
*
* @since 1.0.0
*/
public function getMessage() : string
{
return $this->message;
}
/**
* Set message
*
* @param string $message Log message
*
* @return void
*
* @since 1.0.0
*/
public function setMessage(string $message) : void
{
$this->message = $message;
}
/**
* Get fields.
*
@ -193,7 +177,7 @@ class ExchangeLog implements \JsonSerializable, ArrayableInterface
'message' => $this->message,
'type' => $this->type,
'fields' => $this->fields,
'datetime' => $this->createdAt,
'createdAt' => $this->createdAt,
];
}

View File

@ -98,7 +98,7 @@ class InterfaceManager
*/
public function getInterfacePath() : string
{
return $this->info['path'];
return $this->info['path'] ?? '';
}
/**
@ -110,7 +110,7 @@ class InterfaceManager
*/
public function getName() : string
{
return $this->info['name'];
return $this->info['name'] ?? '';
}
/**
@ -122,7 +122,7 @@ class InterfaceManager
*/
public function hasImport() : bool
{
return $this->info['import'];
return $this->info['import'] ?? false;
}
/**
@ -134,7 +134,7 @@ class InterfaceManager
*/
public function hasExport() : bool
{
return $this->info['export'];
return $this->info['export'] ?? false;
}
/**
@ -187,13 +187,13 @@ class InterfaceManager
*
* @since 1.0.0
*/
public function set(string $path, $data, string $delim = '/') : void
public function set(string $path, mixed $data, string $delim = '/') : void
{
if (!\is_scalar($data) && !\is_array($data) && !($data instanceof \JsonSerializable)) {
throw new \InvalidArgumentException('Type of $data "' . \gettype($data) . '" is not supported.');
}
ArrayUtils::setArray($path, $this->info, $data, $delim, true);
$this->info = ArrayUtils::setArray($path, $this->info, $data, $delim, true);
}
/**

View File

@ -0,0 +1,55 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Exchange\tests\Interfacs\OMS;
use Modules\Exchange\Interfaces\OMS\Exporter;
use phpOMS\Localization\L11nManager;
use phpOMS\DataStorage\Database\Connection\NullConnection;
use phpOMS\Uri\HttpUri;
use phpOMS\Message\Http\HttpRequest;
/**
* @internal
*/
final class ExporterTest extends \PHPUnit\Framework\TestCase
{
private Exporter $exporter;
/**
* {@inheritdoc}
*/
protected function setUp() : void
{
$this->exporter = new Exporter(new NullConnection(), new L11nManager('Api'));
}
/**
* @covers Modules\Exchange\Interfaces\OMS\Exporter
* @group module
*/
public function testLanguageExport() : void
{
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('id', '123');
$request->setData('type', 'language');
$export = $this->exporter->exportFromRequest($request);
self::assertCount(4, $export);
self::assertGreaterThan(100, \strlen($export['content']));
self::assertEquals($export['content'], $this->exporter->export(new \DateTime('now'), new \DateTime('now'))['content']);
}
}

View File

@ -0,0 +1,70 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Exchange\tests\Interfacs\OMS;
use Modules\Exchange\Interfaces\OMS\Importer;
use phpOMS\Localization\L11nManager;
use phpOMS\DataStorage\Database\Connection\NullConnection;
use phpOMS\Uri\HttpUri;
use phpOMS\Message\Http\HttpRequest;
/**
* @internal
*/
final class ImporterTest extends \PHPUnit\Framework\TestCase
{
private Importer $importer;
/**
* {@inheritdoc}
*/
protected function setUp() : void
{
$this->importer = new Importer(new NullConnection(), new NullConnection(), new L11nManager('Api'));
}
/**
* @covers Modules\Exchange\Interfaces\OMS\Importer
* @group module
*/
public function testLanguageImport() : void
{
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('id', '123');
$request->setData('type', 'language');
if (!\is_file()) {
\copy(__DIR__ . '/test.csv', __DIR__ . '/test_tmp.csv');
}
TestUtils::setMember($request, 'files', [
'file0' => [
'name' => 'test.csv',
'type' => 'csv',
'tmp_name' => __DIR__ . '/test_tmp.csv',
'error' => \UPLOAD_ERR_OK,
'size' => \filesize(__DIR__ . '/test_tmp.csv'),
],
]);
$export = $this->importer->importFromRequest($request);
self::assertEquals(
\date('Y-m-d'),
\date('Y-m-d', \filemtime(__DIR__ . '/../../../../TestModule/Theme/Backend/Lang/en.lang.php'))
);
}
}

View File

@ -0,0 +1,3 @@
"Module";"Theme";"File";"ID";"en";"ar";"cs";"da";"de";"el";"es";"fi";"fr";"hu";"it";"ja";"ko";"no";"pl";"pt";"ru";"sv";"th";"tr";"uk";"zh"
"TestModule";"Backend";"";"Test1";"Test1";"TEST1";"test1";"test1";"";"test1";"test1";"test1";"test1";"test1";"test1";"Test1を";"TEST1";"test1";"test1";"Test1";"Test1";"test1";"test1";"Test1";"Test1";"测试1"
"TestModule";"Backend";"";"Test2";"Test2";"TEST2";"test2";"test2";"";"test2";"test2";"test2";"test2";"test2";"test2";"Test2を";"TEST2";"test2";"test2";"test2";"Test2";"test2";"Test2";"Test2";"Test2";"TEST2"
1 Module Theme File ID en ar cs da de el es fi fr hu it ja ko no pl pt ru sv th tr uk zh
2 TestModule Backend Test1 Test1 TEST1 test1 test1 test1 test1 test1 test1 test1 test1 Test1を TEST1 test1 test1 Test1 Test1 test1 test1 Test1 Test1 测试1
3 TestModule Backend Test2 Test2 TEST2 test2 test2 test2 test2 test2 test2 test2 test2 Test2を TEST2 test2 test2 test2 Test2 test2 Test2 Test2 Test2 TEST2

View File

@ -0,0 +1,95 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Exchange\tests\Models;
use Modules\Exchange\Models\ExchangeLog;
use Modules\Exchange\Models\ExchangeType;
/**
* @internal
*/
final class ExchangeLogTest extends \PHPUnit\Framework\TestCase
{
private ExchangeLog $log;
/**
* {@inheritdoc}
*/
protected function setUp() : void
{
$this->log = new ExchangeLog();
}
/**
* @covers Modules\Exchange\Models\ExchangeLog
* @group module
*/
public function testDefault() : void
{
self::assertEquals(0, $this->log->getId());
self::assertEquals('', $this->log->message);
self::assertEquals('', $this->log->subtype);
self::assertEquals(0, $this->log->exchange);
self::assertEquals(0, $this->log->createdBy);
self::assertEquals(ExchangeType::IMPORT, $this->log->getType());
self::assertInstanceOf('\DateTimeImmutable', $this->log->createdAt);
}
/**
* @covers Modules\Exchange\Models\ExchangeLog
* @group module
*/
public function testTypeInputOutput() : void
{
$this->log->setType(ExchangeType::EXPORT);
self::assertEquals(ExchangeType::EXPORT, $this->log->getType());
}
/**
* @covers Modules\Exchange\Models\ExchangeLog
* @group module
*/
public function testFieldsInputOutput() : void
{
$this->log->setFields($fields = [
'name' => 'test',
'start' => 'now',
]);
self::assertEquals($fields, $this->log->getFields());
}
/**
* @covers Modules\Exchange\Models\ExchangeLog
* @group module
*/
public function testSerialize() : void
{
$this->log->message = '123456';
$this->log->setType(ExchangeType::EXPORT);
$serialized = $this->log->jsonSerialize();
unset($serialized['createdAt']);
self::assertEquals(
[
'id' => 0,
'message' => '123456',
'type' => ExchangeType::EXPORT,
'fields' => [],
],
$serialized
);
}
}

View File

@ -0,0 +1,53 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Exchange\tests\Models;
use Modules\Exchange\Models\ExporterAbstract;
use phpOMS\Message\RequestAbstract;
use phpOMS\Message\Http\HttpRequest;
use phpOMS\DataStorage\Database\Connection\SQLiteConnection;
use phpOMS\Uri\HttpUri;
use phpOMS\Localization\L11nManager;
/**
* @internal
*/
final class ExporterAbstractTest extends \PHPUnit\Framework\TestCase
{
private ExporterAbstract $class;
/**
* {@inheritdoc}
*/
protected function setUp() : void
{
$this->class = new class(
new SQLiteConnection($GLOBALS['CONFIG']['db']['core']['sqlite']['admin']),
new L11nManager('placeholder')
) extends ExporterAbstract {
public function exportFromRequest(RequestAbstract $request) : array
{
return [$this->local, $this->l11n];
}
};
}
public function testMembers() : void
{
$result = $this->class->exportFromRequest(new HttpRequest(new HttpUri('')));
self::assertInstanceOf('\phpOMS\DataStorage\Database\Connection\ConnectionAbstract', $result[0]);
self::assertInstanceOf(L11nManager::class, $result[1]);
}
}

View File

@ -0,0 +1,56 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Exchange\tests\Models;
use Modules\Exchange\Models\ImporterAbstract;
use phpOMS\Message\RequestAbstract;
use phpOMS\Message\Http\HttpRequest;
use phpOMS\DataStorage\Database\Connection\SQLiteConnection;
use phpOMS\DataStorage\Database\Connection\NullConnection;
use phpOMS\Uri\HttpUri;
use phpOMS\Localization\L11nManager;
/**
* @internal
*/
final class ImporterAbstractTest extends \PHPUnit\Framework\TestCase
{
private ImporterAbstract $class;
/**
* {@inheritdoc}
*/
protected function setUp() : void
{
$this->class = new class(
new SQLiteConnection($GLOBALS['CONFIG']['db']['core']['sqlite']['admin']),
new NullConnection(),
new L11nManager('placeholder')
) extends ImporterAbstract {
public function importFromRequest(RequestAbstract $request) : array
{
return [$this->local, $this->remote, $this->l11n];
}
};
}
public function testMembers() : void
{
$result = $this->class->importFromRequest(new HttpRequest(new HttpUri('')));
self::assertInstanceOf('\phpOMS\DataStorage\Database\Connection\ConnectionAbstract', $result[0]);
self::assertInstanceOf('\phpOMS\DataStorage\Database\Connection\ConnectionAbstract', $result[1]);
self::assertInstanceOf(L11nManager::class, $result[2]);
}
}

View File

@ -0,0 +1,121 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Exchange\tests\Models;
use Modules\Exchange\Models\InterfaceManager;
use Modules\Exchange\Models\ExchangeType;
/**
* @internal
*/
final class InterfaceManagerTest extends \PHPUnit\Framework\TestCase
{
private InterfaceManager $interface;
/**
* {@inheritdoc}
*/
protected function setUp() : void
{
$this->interface = new InterfaceManager();
}
/**
* @covers Modules\Exchange\Models\InterfaceManager
* @group module
*/
public function testDefault() : void
{
self::assertEquals(0, $this->interface->getId());
self::assertEquals('', $this->interface->getPath());
self::assertEquals('', $this->interface->getName());
self::assertEquals('', $this->interface->getInterfacePath());
self::assertFalse($this->interface->hasImport());
self::assertFalse($this->interface->hasExport());
self::assertEquals([], $this->interface->get());
}
/**
* @covers Modules\Exchange\Models\InterfaceManager
* @group module
*/
public function testLoadInputOutput() : void
{
$this->interface = new InterfaceManager(__DIR__ . '/testInterface.json');
$this->interface->load();
self::assertEquals(
\json_decode(\file_get_contents(__DIR__ . '/testInterface.json'), true),
$this->interface->get()
);
}
/**
* @covers Modules\Exchange\Models\InterfaceManager
* @group module
*/
public function testSetInputOutput() : void
{
$this->interface = new InterfaceManager(__DIR__ . '/testInterface.json');
$this->interface->load();
$this->interface->set('website', 'https://orange-management.org');
self::assertEquals('https://orange-management.org', $this->interface->get()['website']);
self::assertNotEquals(
\json_decode(\file_get_contents(__DIR__ . '/testInterface.json'), true),
$this->interface->get()
);
$this->interface->update();
self::assertEquals(
\json_decode(\file_get_contents(__DIR__ . '/testInterface.json'), true),
$this->interface->get()
);
$this->interface->set('website', '');
$this->interface->update();
}
/**
* @covers Modules\Exchange\Models\InterfaceManager
* @group module
*/
public function testInvalidPathLoad() : void
{
$this->expectException(\phpOMS\System\File\PathException::class);
$this->interface->load();
}
/**
* @covers Modules\Exchange\Models\InterfaceManager
* @group module
*/
public function testInvalidPathUpdate() : void
{
$this->expectException(\phpOMS\System\File\PathException::class);
$this->interface->update();
}
/**
* @covers Modules\Exchange\Models\InterfaceManager
* @group module
*/
public function testInvalidDataSet() : void
{
$this->expectException(\InvalidArgumentException::class);
$this->interface->set('test/path', new InterfaceManager());
}
}

View File

@ -0,0 +1,8 @@
{
"name": "OMS",
"version": "1.0.0",
"website": "",
"path": "OMS",
"export": true,
"import": true
}