Optimize module tests

This commit is contained in:
Dennis Eichhorn 2017-11-15 14:13:15 +01:00
parent 041d604f2b
commit 3993033465
3 changed files with 53 additions and 42 deletions

View File

@ -34,6 +34,7 @@ class Auth
* Constructor.
*
* @since 1.0.0
* @codeCoverageIgnore
*/
private function __construct()
{

View File

@ -35,6 +35,7 @@ class CacheFactory
* Constructor.
*
* @since 1.0.0
* @codeCoverageIgnore
*/
private function __construct()
{

View File

@ -183,14 +183,16 @@ class ModuleManager
/**
* Get all installed modules that are active (not just on this uri).
*
* @param bool $useCache Use Cache or load new
*
* @return array
*
* @since 1.0.0
*/
public function getActiveModules() : array
public function getActiveModules(bool $useCache = true) : array
{
if ($this->active === null) {
if ($this->active === null || !$useCache) {
switch ($this->app->dbPool->get('select')->getType()) {
case DatabaseType::MYSQL:
$sth = $this->app->dbPool->get('select')->con->prepare('SELECT `module_path` FROM `' . $this->app->dbPool->get('select')->prefix . 'module` WHERE `module_active` = 1');
@ -203,6 +205,11 @@ class ModuleManager
return $this->active;
}
public function isActive(string $module) : bool
{
return in_array($module, $this->getActiveModules(false));
}
/**
* Get all modules in the module directory.
*
@ -245,51 +252,18 @@ class ModuleManager
return [];
}
/**
* Deactivate module.
*
* @param string $module Module name
*
* @return bool
*
* @since 1.0.0
*/
public function deactivate(string $module) : bool
{
$installed = $this->getInstalledModules();
if (isset($installed[$module])) {
return false;
}
try {
$info = $this->loadInfo($module);
$this->deactivateModule($info);
return true;
} catch (PathException $e) {
// todo: handle module doesn't exist or files are missing
//echo $e->getMessage();
return false;
} catch (\Exception $e) {
//echo $e->getMessage();
return false;
}
}
/**
* Get all installed modules.
*
* @param bool $useCache Use Cache
*
* @return array
*
* @since 1.0.0
*/
public function getInstalledModules() : array
public function getInstalledModules(bool $useCache = true) : array
{
if ($this->installed === null) {
if ($this->installed === null || !$useCache) {
switch ($this->app->dbPool->get('select')->getType()) {
case DatabaseType::MYSQL:
$sth = $this->app->dbPool->get('select')->con->prepare('SELECT `module_id`,`module_theme`,`module_version` FROM `' . $this->app->dbPool->get('select')->prefix . 'module`');
@ -325,6 +299,41 @@ class ModuleManager
return $info;
}
/**
* Deactivate module.
*
* @param string $module Module name
*
* @return bool
*
* @since 1.0.0
*/
public function deactivate(string $module) : bool
{
$installed = $this->getInstalledModules(false);
if (!isset($installed[$module])) {
return false;
}
try {
$info = $this->loadInfo($module);
$this->deactivateModule($info);
return true;
} catch (PathException $e) {
// todo: handle module doesn't exist or files are missing
//echo $e->getMessage();
return false;
} catch (\Exception $e) {
//echo $e->getMessage();
return false;
}
}
/**
* Deactivate module.
*
@ -359,9 +368,9 @@ class ModuleManager
*/
public function activate(string $module) : bool
{
$installed = $this->getInstalledModules();
$installed = $this->getInstalledModules(false);
if (isset($installed[$module])) {
if (!isset($installed[$module])) {
return false;
}
@ -441,7 +450,7 @@ class ModuleManager
*/
public function install(string $module) : bool
{
$installed = $this->getInstalledModules();
$installed = $this->getInstalledModules(false);
if (isset($installed[$module])) {
return false;