BxDolInstallMariaDbSqlTest.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. class BxDolInstallMariaDbSqlTest extends \PHPUnit\Framework\TestCase
  3. {
  4. public function testVectorTablesLiveInMariaDbSql(): void
  5. {
  6. $sSystem = file_get_contents(__DIR__ . '/../../../install/sql/system.sql');
  7. $sMaria = file_get_contents(__DIR__ . '/../../../install/sql/mariadb.sql');
  8. $this->assertIsString($sSystem);
  9. $this->assertIsString($sMaria);
  10. $this->assertDoesNotMatchRegularExpression('/CREATE TABLE[^;]*sys_agents_vector_mariadb_(1024|384)/is', $sSystem);
  11. $this->assertStringContainsString('CREATE TABLE IF NOT EXISTS `sys_agents_vector_mariadb_1024`', $sMaria);
  12. $this->assertStringContainsString('CREATE TABLE IF NOT EXISTS `sys_agents_vector_mariadb_384`', $sMaria);
  13. }
  14. public function testMariaDbSqlRunsOnlyOnSupportedMariaDb(): void
  15. {
  16. $oConfig = $this->installer();
  17. $oMethod = new ReflectionMethod(BxDolInstallSiteConfig::class, 'shouldRunMariaDbSql');
  18. $this->assertTrue($oMethod->invoke($oConfig, $this->version('11.8.2-MariaDB-ubu2404')));
  19. $this->assertTrue($oMethod->invoke($oConfig, $this->version('5.5.5-11.7.2-MariaDB')));
  20. $this->assertFalse($oMethod->invoke($oConfig, $this->version('10.11.6-MariaDB-1:10.11.6+maria~ubu2204')));
  21. $this->assertFalse($oMethod->invoke($oConfig, $this->version('11.6.2-MariaDB')));
  22. $this->assertFalse($oMethod->invoke($oConfig, $this->version('8.0.36')));
  23. $this->assertFalse($oMethod->invoke($oConfig, $this->version('9.0.0')));
  24. }
  25. private function installer(): BxDolInstallSiteConfig
  26. {
  27. if (!defined('BX_DOL_INSTALL'))
  28. define('BX_DOL_INSTALL', true);
  29. if (!defined('BX_INSTALL_DIR'))
  30. define('BX_INSTALL_DIR', dirname(__DIR__, 3) . '/install/');
  31. require_once dirname(__DIR__, 3) . '/install/classes/BxDolInstallSiteConfig.php';
  32. return (new ReflectionClass(BxDolInstallSiteConfig::class))->newInstanceWithoutConstructor();
  33. }
  34. private function version(string $sVersion): object
  35. {
  36. return new class($sVersion) {
  37. public function __construct(private string $sVersion)
  38. {
  39. }
  40. public function getOne($sQuery)
  41. {
  42. return $this->sVersion;
  43. }
  44. };
  45. }
  46. }