fix test bugs

This commit is contained in:
Dennis Eichhorn 2020-12-23 20:16:33 +01:00
parent 51c9d71e02
commit 8fdf9f96e7
8 changed files with 77 additions and 157 deletions

View File

@ -38,6 +38,20 @@ final class NullCache extends ConnectionAbstract
{ {
} }
/**
* {@inheritdoc}
*/
public function increment(int|string $key, int $value = 1) : void
{
}
/**
* {@inheritdoc}
*/
public function decrement(int|string $key, int $value = 1) : void
{
}
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */

View File

@ -348,7 +348,7 @@ class MailHandler
$mailerToolFmt = '%s -oi -t'; $mailerToolFmt = '%s -oi -t';
} }
$mailerTool = \sprintf($mailerToolFmt, \escapeshellcmd($this->sendmail), $mail->sender); $mailerTool = \sprintf($mailerToolFmt, \escapeshellcmd($this->mailerTool), $mail->sender);
$con = \popen($mailerTool, 'w'); $con = \popen($mailerTool, 'w');
if ($con === false) { if ($con === false) {

View File

@ -369,6 +369,7 @@ final class ModuleManager
return true; return true;
} catch (\Exception $e) { } catch (\Exception $e) {
echo $e->getMessage();
return false; // @codeCoverageIgnore return false; // @codeCoverageIgnore
} }
} }
@ -489,7 +490,7 @@ final class ModuleManager
{ {
$installed = $this->getInstalledModules(false); $installed = $this->getInstalledModules(false);
if (isset($installed[$module])) { if (isset($installed[$module])) {
return false; return true;
} }
if (!\is_file($this->modulePath . $module . '/Admin/Installer.php')) { if (!\is_file($this->modulePath . $module . '/Admin/Installer.php')) {

View File

@ -40,163 +40,26 @@ abstract class UninstallerAbstract
*/ */
public static function uninstall(DatabasePool $dbPool, ModuleInfo $info) : void public static function uninstall(DatabasePool $dbPool, ModuleInfo $info) : void
{ {
self::uninitRoutes($info, $appInfo); self::deactivate($dbPool, $info);
self::uninitHooks($info, $appInfo);
self::dropTables($dbPool, $info); self::dropTables($dbPool, $info);
self::unregisterFromDatabase($dbPool, $info); self::unregisterFromDatabase($dbPool, $info);
} }
/** /**
* Uninstall routes. * Activate after install.
* *
* @param string $destRoutePath Destination route path * @param DatabasePool $dbPool Database instance
* @param string $srcRoutePath Source route path * @param ModuleInfo $info Module info
* *
* @return void * @return void
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function uninitRoutes(string $destRoutePath, string $srcRoutePath) : void protected static function deactivate(DatabasePool $dbPool, ModuleInfo $info) : void
{ {
$directories = new Directory(\dirname($info->getPath()) . '/Admin/Routes'); /** @var StatusAbstract $class */
$class = '\Modules\\' . $info->getDirectory() . '\Admin\Status';
/** @var Directory|File $child */ $class::deactivate($dbPool, $info);
foreach ($directories as $child) {
if ($child instanceof Directory) {
foreach ($child as $file) {
if (!\is_dir(__DIR__ . '/../../' . $child->getName() . '/' . \basename($file->getName(), '.php'))
|| ($appInfo !== null && \basename($file->getName(), '.php') !== $appInfo->getInternalName())
) {
continue;
}
self::uninstallRoutes(__DIR__ . '/../../' . $child->getName() . '/' . \basename($file->getName(), '.php') . '/Routes.php', $file->getPath());
}
} elseif ($child instanceof File) {
if (!\is_dir(__DIR__ . '/../../' . $child->getName())
|| ($appInfo !== null && \basename($child->getName(), '.php') !== $appInfo->getInternalName())
) {
continue;
}
self::uninstallRoutes(__DIR__ . '/../../' . $child->getName() . '/Routes.php', $child->getPath());
}
}
}
/**
* Uninstall routes.
*
* @param string $destRoutePath Destination route path
* @param string $srcRoutePath Source route path
*
* @return void
*
* @throws PermissionException
*
* @since 1.0.0
*/
protected static function uninstallRoutes(string $destRoutePath, string $srcRoutePath) : void
{
if (!\is_file($destRoutePath)
|| !\is_file($srcRoutePath)
) {
return;
}
if (!\is_file($destRoutePath)) {
throw new PathException($destRoutePath);
}
if (!\is_writable($destRoutePath)) {
throw new PermissionException($destRoutePath);
}
/** @noinspection PhpIncludeInspection */
$appRoutes = include $destRoutePath;
/** @noinspection PhpIncludeInspection */
$moduleRoutes = include $srcRoutePath;
$appRoutes = ArrayUtils::array_diff_assoc_recursive($appRoutes, $moduleRoutes);
\file_put_contents($destRoutePath, '<?php return ' . ArrayParser::serializeArray($appRoutes) . ';', \LOCK_EX);
}
/**
* Uninstall hooks.
*
* @param string $destHookPath Destination hook path
* @param string $srcHookPath Source hook path
*
* @return void
*
* @since 1.0.0
*/
private static function deactivateHooks(string $destHookPath, string $srcHookPath) : void
{
$directories = new Directory(\dirname($info->getPath()) . '/Admin/Hooks');
/** @var Directory|File $child */
foreach ($directories as $child) {
if ($child instanceof Directory) {
foreach ($child as $file) {
if (!\is_dir(__DIR__ . '/../../' . $child->getName() . '/' . \basename($file->getName(), '.php'))
|| ($appInfo !== null && \basename($file->getName(), '.php') !== $appInfo->getInternalName())
) {
continue;
}
self::uninstallHooks(__DIR__ . '/../../' . $child->getName() . '/' . \basename($file->getName(), '.php') . '/Hooks.php', $file->getPath());
}
} elseif ($child instanceof File) {
if (!\is_dir(__DIR__ . '/../../' . $child->getName())
|| ($appInfo !== null && \basename($child->getName(), '.php') !== $appInfo->getInternalName())
) {
continue;
}
self::uninstallHooks(__DIR__ . '/../../' . $child->getName() . '/Hooks.php', $child->getPath());
}
}
}
/**
* Uninstall hooks.
*
* @param string $destHookPath Destination hook path
* @param string $srcHookPath Source hook path
*
* @return void
*
* @throws PermissionException
*
* @since 1.0.0
*/
protected static function uninstallHooks(string $destHookPath, string $srcHookPath) : void
{
if (!\is_file($destHookPath)
|| !\is_file($srcHookPath)
) {
return;
}
if (!\is_file($destHookPath)) {
throw new PathException($destHookPath);
}
if (!\is_writable($destHookPath)) {
throw new PermissionException($destHookPath);
}
/** @noinspection PhpIncludeInspection */
$appHooks = include $destHookPath;
/** @noinspection PhpIncludeInspection */
$moduleHooks = include $srcHookPath;
$appHooks = ArrayUtils::array_diff_assoc_recursive($appHooks, $moduleHooks);
\file_put_contents($destHookPath, '<?php return ' . ArrayParser::serializeArray($appHooks) . ';', \LOCK_EX);
} }
/** /**

View File

@ -436,8 +436,8 @@ final class ArrayUtils
{ {
$diff = []; $diff = [];
foreach ($values1 as $key => $value) { foreach ($values1 as $key => $value) {
if (!\is_array($value)) { if (\is_array($value)) {
if (!array_key_exists($key, $value2) || !\is_array($values2[$key])) { if (!array_key_exists($key, $values2) || !\is_array($values2[$key])) {
$diff[$key] = $value; $diff[$key] = $value;
} else { } else {
$subDiff = self::array_diff_assoc_recursive($value, $values2[$key]); $subDiff = self::array_diff_assoc_recursive($value, $values2[$key]);
@ -445,8 +445,8 @@ final class ArrayUtils
$diff[$key] = $subDiff; $diff[$key] = $subDiff;
} }
} }
} elseif ($values[$key] !== $value || !\array_key_exists($key, $values2)) { } elseif (!\array_key_exists($key, $values2) || $values2[$key] !== $value) {
$diff[$key] == $value; $diff[$key] = $value;
} }
} }

View File

@ -74,4 +74,48 @@ class CsvSettings
return $results[0]; return $results[0];
} }
/**
* Get csv string delimiter based on string content.
*
* @param string $content File content
* @param int $checkLines Lines to check for evaluation
* @param string[] $delimiters Potential delimiters
*
* @return string
*
* @since 1.0.0
*/
public static function getStringDelimiter(string $content, int $checkLines = 2, array $delimiters = [',', "\t", ';', '|', ':']) : string
{
$results = [];
$lines = \explode("\n", $content);
$i = 0;
do {
$line = $lines[$i];
foreach ($delimiters as $delimiter) {
$regExp = '/[' . $delimiter . ']/';
$fields = \preg_split($regExp, $line);
if ($fields === false) {
return ';'; // @codeCoverageIgnore
}
if (\count($fields) > 1) {
if (!empty($results[$delimiter])) {
++$results[$delimiter];
} else {
$results[$delimiter] = 1;
}
}
}
++$i;
} while ($i < $checkLines);
$results = \array_keys($results, \max($results));
return $results[0];
}
} }

View File

@ -247,7 +247,6 @@ abstract class ViewAbstract implements RenderableInterface
} catch (\Throwable $e) { } catch (\Throwable $e) {
\ob_end_clean(); \ob_end_clean();
$ob = ''; $ob = '';
echo $e->getMessage();
} finally { } finally {
return $ob; return $ob;
} }

View File

@ -16,7 +16,6 @@ namespace phpOMS\tests\Message;
require_once __DIR__ . '/../../Autoloader.php'; require_once __DIR__ . '/../../Autoloader.php';
use phpOMS\Message\Mail\Mail;
use phpOMS\Message\Mail\MailHandler; use phpOMS\Message\Mail\MailHandler;
use phpOMS\Message\Mail\SubmitType; use phpOMS\Message\Mail\SubmitType;
use phpOMS\Message\Mail\Email; use phpOMS\Message\Mail\Email;
@ -30,17 +29,17 @@ use phpOMS\Message\Mail\Imap;
class MailHandlerTest extends \PHPUnit\Framework\TestCase class MailHandlerTest extends \PHPUnit\Framework\TestCase
{ {
public function testSendTextWithMail() : void public function testSendTextWithMail() : void
{/* {
$mailer = new MailHandler(); $mailer = new MailHandler();
$mailer->setMailer(SubmitType::MAIL); $mailer->setMailer(SubmitType::MAIL);
$mail = new Email(); $mail = new Email();
$mail->setFrom('d.eichhorn@orange-management.org', 'Dennis Eichhorn'); $mail->setFrom('dennis.eichhorn@orange-management.org', 'Dennis Eichhorn');
$mail->addTo('coyle.maguire@googlemail.com', 'Donald Duck'); $mail->addTo('info@orange-management.org', 'Dennis Eichhorn');
$mail->subject = 'Test email'; $mail->subject = 'Test email';
$mail->body = 'This is some content'; $mail->body = 'This is some content';
self::assertTrue($mailer->send($mail));*/ self::assertTrue($mailer->send($mail));
} }
public function testReceiveMailWithImap() : void public function testReceiveMailWithImap() : void