PageRenderTime 38ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/tests/tests/Core/Config/DatabaseSaverTest.php

http://github.com/concrete5/concrete5
PHP | 131 lines | 101 code | 29 blank | 1 comment | 2 complexity | f16e9fbc7449f2e68a48dcf95c5301e9 MD5 | raw file
Possible License(s): MIT, LGPL-2.1, MPL-2.0-no-copyleft-exception, BSD-3-Clause
  1. <?php
  2. use Concrete\Core\Config\DatabaseSaver;
  3. class DatabaseSaverTest extends ConcreteDatabaseTestCase
  4. {
  5. /** @var DatabaseSaver */
  6. protected $saver;
  7. protected $tables = array('Config');
  8. public function setUp()
  9. {
  10. parent::setUp();
  11. $this->saver = new DatabaseSaver();
  12. }
  13. public function testSave()
  14. {
  15. $group = md5(time() . uniqid());
  16. $item = 'this.is.the.test.key';
  17. $value = $group;
  18. $this->saver->save($item, $value, 'testing', $group);
  19. $db = Database::getActiveConnection();
  20. $result = $db->executeQuery(
  21. 'SELECT configValue FROM Config WHERE configItem=? AND configGroup=?',
  22. array($item, $group));
  23. $array = (array) $result->fetch();
  24. $saved_value = array_shift($array);
  25. $this->assertEquals($value, $saved_value, "Failed to save.");
  26. }
  27. public function testSaveNonUnique()
  28. {
  29. $group1 = $value1 = md5(time() . uniqid());
  30. $group2 = $value2 = md5(time() . uniqid());
  31. $item = 'this.is.the.test.key';
  32. $this->saver->save($item, $value1, 'testing', $group1);
  33. $this->saver->save($item, $value2, 'testing', $group2);
  34. $db = Database::getActiveConnection();
  35. $result = $db->executeQuery(
  36. 'SELECT configValue FROM Config WHERE configItem=? AND configGroup=?',
  37. array($item, $group1));
  38. $array = (array) $result->fetch();
  39. $saved_value = array_shift($array);
  40. $this->assertEquals($value1, $saved_value, "Failed to save.");
  41. $result = $db->executeQuery(
  42. 'SELECT configValue FROM Config WHERE configItem=? AND configGroup=?',
  43. array($item, $group2));
  44. $array = (array) $result->fetch();
  45. $saved_value = array_shift($array);
  46. $this->assertEquals($value2, $saved_value, "Failed to save.");
  47. }
  48. public function testSavingArray()
  49. {
  50. $array = array(
  51. 'test' => true,
  52. 'test2' => true,
  53. );
  54. $this->saver->save('testing', $array, '', 'test');
  55. $db = Database::getActiveConnection();
  56. $result = $db->executeQuery(
  57. 'SELECT configValue FROM Config WHERE configItem=? AND configGroup=?',
  58. array('testing.test', 'test'));
  59. $array = (array) $result->fetch();
  60. $saved_value1 = array_shift($array);
  61. $result = $db->executeQuery(
  62. 'SELECT configValue FROM Config WHERE configItem=? AND configGroup=?',
  63. array('testing.test', 'test'));
  64. $array = (array) $result->fetch();
  65. $saved_value2 = array_shift($array);
  66. $this->assertTrue($saved_value1 === $saved_value2 && (bool) $saved_value1 == true, 'Failed to save array.');
  67. }
  68. public function testSavingArrayOverArray()
  69. {
  70. $group = md5(time() . uniqid());
  71. $this->saver->save('test.array', array(1, 2), 'testing', $group);
  72. $this->saver->save('test.array', array(1), 'testing', $group);
  73. $db = Database::getActiveConnection();
  74. $result = $db->executeQuery(
  75. 'SELECT configValue FROM Config WHERE configItem LIKE ? AND configGroup=?',
  76. array('test.array%', $group));
  77. $array = array_map(function ($item) {
  78. return $item['configValue'];
  79. }, (array) $result->fetchAll());
  80. $this->assertEquals(array(1), $array, "Saver doesn't save correctly");
  81. }
  82. public function testSavingNamespacedConfig()
  83. {
  84. $group = md5(time() . uniqid());
  85. $namespace = md5(time() . uniqid());
  86. $item = 'this.is.the.test.key';
  87. $value = $group;
  88. $this->saver->save($item, $value, 'testing', $group, $namespace);
  89. $db = Database::getActiveConnection();
  90. $result = $db->executeQuery(
  91. 'SELECT configValue FROM Config WHERE configItem=? AND configGroup=? AND configNamespace=?',
  92. array($item, $group, $namespace));
  93. $array = (array) $result->fetch();
  94. $saved_value = array_shift($array);
  95. $this->assertEquals($value, $saved_value, "Failed to save namespaced item.");
  96. }
  97. }