Remove old Setting model from integration tests
[MAILPOET-2436]
This commit is contained in:
committed by
Jack Kitterhing
parent
7bddf631c5
commit
40c87d50fe
@ -3,8 +3,9 @@
|
||||
namespace MailPoet\Test\Settings;
|
||||
|
||||
use Codeception\Stub;
|
||||
use MailPoet\Models\Setting;
|
||||
use MailPoet\Entities\SettingEntity;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Settings\SettingsRepository;
|
||||
|
||||
class SettingsControllerTest extends \MailPoetTest {
|
||||
|
||||
@ -13,30 +14,31 @@ class SettingsControllerTest extends \MailPoetTest {
|
||||
|
||||
function _before() {
|
||||
parent::_before();
|
||||
$this->controller = SettingsController::getInstance();
|
||||
$this->controller = $this->di_container->get(SettingsController::class);
|
||||
}
|
||||
|
||||
function testItReturnsStoredValue() {
|
||||
Setting::createOrUpdate(['name' => 'test_key', 'value' => 1]);
|
||||
$this->createOrUpdateSetting('test_key', 1);
|
||||
$this->controller->resetCache();
|
||||
$this->assertEquals(1, $this->controller->get('test_key'));
|
||||
}
|
||||
|
||||
function testItReturnsStoredNestedValue() {
|
||||
Setting::createOrUpdate(['name' => 'test_key', 'value' => serialize(['sub_key' => 'value'])]);
|
||||
$this->createOrUpdateSetting('test_key', serialize(['sub_key' => 'value']));
|
||||
$this->assertEquals('value', $this->controller->get('test_key.sub_key'));
|
||||
}
|
||||
|
||||
function testItReturnsNullForUnknownSetting() {
|
||||
$this->assertEquals(null, $this->controller->get('test_key'));
|
||||
$this->assertEquals(null, $this->controller->get('test_key.sub_key'));
|
||||
Setting::createOrUpdate(['name' => 'test_key', 'value' => serialize(['sub_key' => 'value'])]);
|
||||
$this->createOrUpdateSetting('test_key', serialize(['sub_key' => 'value']));
|
||||
$this->assertEquals(null, $this->controller->get('test_key.wrong_subkey'));
|
||||
}
|
||||
|
||||
function testItReturnsDefaultValueForUnknownSetting() {
|
||||
$this->assertEquals('default', $this->controller->get('test_key', 'default'));
|
||||
$this->assertEquals('default', $this->controller->get('test_key.sub_key', 'default'));
|
||||
Setting::createOrUpdate(['name' => 'test_key', 'value' => serialize(['sub_key' => 'value'])]);
|
||||
$this->createOrUpdateSetting('test_key', serialize(['sub_key' => 'value']));
|
||||
$this->assertEquals('default', $this->controller->get('test_key.wrong_subkey', 'default'));
|
||||
}
|
||||
|
||||
@ -44,13 +46,17 @@ class SettingsControllerTest extends \MailPoetTest {
|
||||
$this->assertEquals(null, $this->controller->fetch('test_key'));
|
||||
$this->assertEquals(null, $this->controller->fetch('test_key.sub_key'));
|
||||
$this->assertEquals('default', $this->controller->fetch('test_key.wrong_subkey', 'default'));
|
||||
Setting::createOrUpdate(['name' => 'test_key', 'value' => serialize(['sub_key' => 'value'])]);
|
||||
$this->createOrUpdateSetting('test_key', serialize(['sub_key' => 'value']));
|
||||
$this->assertEquals('default', $this->controller->get('test_key.sub_key', 'default'));
|
||||
$this->assertEquals('value', $this->controller->fetch('test_key.sub_key', 'default'));
|
||||
}
|
||||
|
||||
function testItReturnsDefaultValueAsFallback() {
|
||||
$settings = Stub::make($this->controller, [
|
||||
'settings_repository' => $this->make(SettingsRepository::class, [
|
||||
'findOneByName' => null,
|
||||
'findAll' => [],
|
||||
]),
|
||||
'getAllDefaults' => function () {
|
||||
return ['default1' => ['default2' => 1]];
|
||||
},
|
||||
@ -62,8 +68,8 @@ class SettingsControllerTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
function testItCanReturnAllSettings() {
|
||||
Setting::createOrUpdate(['name' => 'test_key1', 'value' => 1]);
|
||||
Setting::createOrUpdate(['name' => 'test_key2', 'value' => 2]);
|
||||
$this->createOrUpdateSetting('test_key1', 1);
|
||||
$this->createOrUpdateSetting('test_key2', 2);
|
||||
$all = $this->controller->getAll();
|
||||
$this->assertEquals(1, $all['test_key1']);
|
||||
$this->assertEquals(2, $all['test_key2']);
|
||||
@ -72,14 +78,14 @@ class SettingsControllerTest extends \MailPoetTest {
|
||||
function testItCanSetAtTopLevel() {
|
||||
$this->controller->set('test_key', 1);
|
||||
$this->assertEquals(1, $this->controller->get('test_key'));
|
||||
$db_value = Setting::where('name', 'test_key')->findOne();
|
||||
$this->assertEquals(1, $db_value->value);
|
||||
$db_value = $this->getSettingValue('test_key');
|
||||
$this->assertEquals(1, $db_value);
|
||||
}
|
||||
|
||||
function testItCanSetAtNestedLevel() {
|
||||
$this->controller->set('test_key.key1.key2', 1);
|
||||
$this->assertEquals(1, $this->controller->get('test_key.key1.key2'));
|
||||
$db_value = unserialize(Setting::where('name', 'test_key')->findOne()->value);
|
||||
$db_value = unserialize($this->getSettingValue('test_key'));
|
||||
$this->assertEquals(1, $db_value['key1']['key2']);
|
||||
}
|
||||
|
||||
@ -88,7 +94,7 @@ class SettingsControllerTest extends \MailPoetTest {
|
||||
$this->assertEquals(1, $this->controller->get('test_key.key1.key2'));
|
||||
$this->controller->set('test_key.key1.key2', null);
|
||||
$this->assertNull(null, $this->controller->get('test_key.key1.key2'));
|
||||
$db_value = unserialize(Setting::where('name', 'test_key')->findOne()->value);
|
||||
$db_value = unserialize($this->getSettingValue('test_key'));
|
||||
$this->assertNull($db_value['key1']['key2']);
|
||||
}
|
||||
|
||||
@ -96,19 +102,33 @@ class SettingsControllerTest extends \MailPoetTest {
|
||||
$this->controller->set('test_key.key1', 1);
|
||||
$this->controller->set('test_key.key1.key2', 1);
|
||||
$this->assertEquals(1, $this->controller->get('test_key.key1.key2'));
|
||||
$db_value = unserialize(Setting::where('name', 'test_key')->findOne()->value);
|
||||
$db_value = unserialize($this->getSettingValue('test_key'));
|
||||
$this->assertEquals(1, $db_value['key1']['key2']);
|
||||
}
|
||||
|
||||
function testItLoadsFromDbOnlyOnce() {
|
||||
Setting::createOrUpdate(['name' => 'test_key', 'value' => 1]);
|
||||
$this->createOrUpdateSetting('test_key', 1);
|
||||
$this->assertEquals(1, $this->controller->get('test_key'));
|
||||
Setting::createOrUpdate(['name' => 'test_key', 'value' => 2]);
|
||||
$this->createOrUpdateSetting('test_key', 2);
|
||||
$this->assertEquals(1, $this->controller->get('test_key'));
|
||||
$this->assertEquals(true, true);
|
||||
}
|
||||
|
||||
function _after() {
|
||||
\ORM::raw_execute('TRUNCATE ' . Setting::$_table);
|
||||
$table_name = $this->entity_manager->getClassMetadata(SettingEntity::class)->getTableName();
|
||||
$this->connection->executeUpdate('TRUNCATE ' . $table_name);
|
||||
}
|
||||
|
||||
private function createOrUpdateSetting($name, $value) {
|
||||
$table_name = $this->entity_manager->getClassMetadata(SettingEntity::class)->getTableName();
|
||||
$this->connection->executeUpdate("
|
||||
INSERT INTO $table_name (name, value) VALUES (?, ?)
|
||||
ON DUPLICATE KEY UPDATE value = ?
|
||||
", [$name, $value, $value]);
|
||||
}
|
||||
|
||||
private function getSettingValue($name) {
|
||||
$table_name = $this->entity_manager->getClassMetadata(SettingEntity::class)->getTableName();
|
||||
return $this->connection->executeQuery("SELECT value FROM $table_name WHERE name = ?", [$name])->fetchColumn();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user