more unit-testing, enhancements in Store-functions

Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann
2019-06-11 12:10:56 +02:00
parent 7a94a43053
commit a07a9e6a88
2 changed files with 70 additions and 33 deletions

View File

@@ -115,7 +115,7 @@ class Store
$returnvalue = self::storeSettingField($fieldname, $fielddata, $newfieldvalue); $returnvalue = self::storeSettingField($fieldname, $fielddata, $newfieldvalue);
if ($returnvalue !== false && is_array($fielddata) && isset($fielddata['settinggroup']) && $fielddata['settinggroup'] == 'panel' && isset($fielddata['varname']) && $fielddata['varname'] == 'default_theme') { if ($returnvalue !== false && is_array($fielddata) && isset($fielddata['settinggroup']) && $fielddata['settinggroup'] == 'panel' && isset($fielddata['varname']) && $fielddata['varname'] == 'default_theme') {
// now, if changing themes is disabled we recursivly set // now, if changing themes is disabled we manually set
// the new theme (customers and admin, depending on settings) // the new theme (customers and admin, depending on settings)
if (Settings::Get('panel.allow_theme_change_customer') == '0') { if (Settings::Get('panel.allow_theme_change_customer') == '0') {
$upd_stmt = Database::prepare(" $upd_stmt = Database::prepare("
@@ -171,18 +171,14 @@ class Store
public static function storeSettingFieldInsertBindTask($fieldname, $fielddata, $newfieldvalue) public static function storeSettingFieldInsertBindTask($fieldname, $fielddata, $newfieldvalue)
{ {
if (is_array($fielddata) && isset($fielddata['settinggroup']) && $fielddata['settinggroup'] != '' && isset($fielddata['varname']) && $fielddata['varname'] != '') { // first save the setting itself
if (Settings::Set($fielddata['settinggroup'] . '.' . $fielddata['varname'], $newfieldvalue) !== false) { $returnvalue = self::storeSettingField($fieldname, $fielddata, $newfieldvalue);
return array(
$fielddata['settinggroup'] . '.' . $fielddata['varname'] => $newfieldvalue if ($returnvalue !== false) {
); \Froxlor\System\Cronjob::inserttask('4');
} else {
return false;
} }
} else {
return false; return false;
} }
}
public static function storeSettingHostname($fieldname, $fielddata, $newfieldvalue) public static function storeSettingHostname($fieldname, $fielddata, $newfieldvalue)
{ {
@@ -297,25 +293,9 @@ class Store
$returnvalue = self::storeSettingField($fieldname, $fielddata, $newfieldvalue); $returnvalue = self::storeSettingField($fieldname, $fielddata, $newfieldvalue);
if ($returnvalue !== false && is_array($fielddata) && isset($fielddata['settinggroup']) && $fielddata['settinggroup'] == 'catchall' && isset($fielddata['varname']) && $fielddata['varname'] == 'catchall_enabled' && $newfieldvalue == '0') { if ($returnvalue !== false && is_array($fielddata) && isset($fielddata['settinggroup']) && $fielddata['settinggroup'] == 'catchall' && isset($fielddata['varname']) && $fielddata['varname'] == 'catchall_enabled' && $newfieldvalue == '0') {
Database::query("
$result_stmt = Database::query(" UPDATE `" . TABLE_MAIL_VIRTUAL . "` SET `iscatchall` = '0' WHERE `iscatchall` = '1'
SELECT `id`, `email`, `email_full`, `iscatchall` FROM `" . TABLE_MAIL_VIRTUAL . "`
WHERE `iscatchall` = '1'
"); ");
if (Database::num_rows() > 0) {
$upd_stmt = Database::prepare("
UPDATE `" . TABLE_MAIL_VIRTUAL . "` SET `email` = :email, `iscatchall` = '0' WHERE `id` = :id
");
while ($result_row = $result_stmt->fetch(\PDO::FETCH_ASSOC)) {
Database::pexecute($upd_stmt, array(
'email' => $result_row['email_full'],
'id' => $result_row['id']
));
}
}
} }
return $returnvalue; return $returnvalue;

View File

@@ -94,4 +94,61 @@ class StoreTest extends TestCase
// we assume there are entries // we assume there are entries
$this->assertTrue(count($current_result) > 0); $this->assertTrue(count($current_result) > 0);
} }
public function testStoreSettingDefaultTheme()
{
$current_theme = Settings::Get('panel.default_theme');
// allow theme changing for admins/customers so a new default won't overwrite
Settings::Set('panel.allow_theme_change_customer', 1);
Settings::Set('panel.allow_theme_change_admin', 1);
$fielddata = array(
'label' => 'panel_default_theme',
'settinggroup' => 'panel',
'varname' => 'default_theme'
);
Store::storeSettingDefaultTheme('panel_default_theme', $fielddata, "newTheme");
$this->assertTrue($current_theme != Settings::Get('panel.default_theme'));
$this->assertEquals("newTheme", Settings::Get('panel.default_theme'));
// validate admin/customer field did not change
$sel_stmt = Database::prepare("
SELECT * FROM `" . TABLE_PANEL_ADMINS . "`
WHERE `theme` = :newtheme
");
Database::pexecute($sel_stmt, array('newtheme' => "newTheme"));
$current_result = $sel_stmt->fetchAll(\PDO::FETCH_ASSOC);
// we assume there are entries
$this->assertTrue(count($current_result) == 0);
$sel_stmt = Database::prepare("
SELECT * FROM `" . TABLE_PANEL_CUSTOMERS . "`
WHERE `theme` = :newtheme
");
Database::pexecute($sel_stmt, array('newtheme' => "newTheme"));
$current_result = $sel_stmt->fetchAll(\PDO::FETCH_ASSOC);
// we assume there are entries
$this->assertTrue(count($current_result) == 0);
// now do not allow changing of themes so the theme should get updated for all admins/customers
// allow theme changing for admins/customers so a new default won't overwrite
Settings::Set('panel.allow_theme_change_customer', 0);
Settings::Set('panel.allow_theme_change_admin', 0);
Store::storeSettingDefaultTheme('panel_default_theme', $fielddata, "newTheme");
// validate admin/customer field did change
$sel_stmt = Database::prepare("
SELECT * FROM `" . TABLE_PANEL_ADMINS . "`
WHERE `theme` = :newtheme
");
Database::pexecute($sel_stmt, array('newtheme' => "newTheme"));
$current_result = $sel_stmt->fetchAll(\PDO::FETCH_ASSOC);
// we assume there are entries
$this->assertTrue(count($current_result) > 0);
$sel_stmt = Database::prepare("
SELECT * FROM `" . TABLE_PANEL_CUSTOMERS . "`
WHERE `theme` = :newtheme
");
Database::pexecute($sel_stmt, array('newtheme' => "newTheme"));
$current_result = $sel_stmt->fetchAll(\PDO::FETCH_ASSOC);
// we assume there are entries
$this->assertTrue(count($current_result) > 0);
// set back to default
Store::storeSettingDefaultTheme('panel_default_theme', $fielddata, $current_theme);
}
} }