From: Dan Brown Date: Tue, 16 Mar 2021 17:55:19 +0000 (+0000) Subject: Added testing for the back-end theme system done so far X-Git-Tag: v21.04~1^2~11^2~10 X-Git-Url: http://source.bookstackapp.com/bookstack/commitdiff_plain/a5d2a26fccbc1ffd2f41707954047f13cc12fa57 Added testing for the back-end theme system done so far --- diff --git a/tests/ThemeTest.php b/tests/ThemeTest.php index 51fdfe70d..8faf7711e 100644 --- a/tests/ThemeTest.php +++ b/tests/ThemeTest.php @@ -1,43 +1,74 @@ usingThemeFolder(function() { + $translationPath = theme_path('/lang/en'); + File::makeDirectory($translationPath, 0777, true); - // Create a folder and configure a theme - $this->themeFolderName = 'testing_theme_' . rtrim(base64_encode(time()), "="); - config()->set('view.theme', $this->themeFolderName); - $this->themeFolderPath = theme_path(''); - File::makeDirectory($this->themeFolderPath); + $customTranslations = ' \'Sandwiches\']; + '; + file_put_contents($translationPath . '/entities.php', $customTranslations); + + $homeRequest = $this->actingAs($this->getViewer())->get('/'); + $homeRequest->assertElementContains('header nav', 'Sandwiches'); + }); } - public function tearDown(): void + public function test_theme_functions_file_used_and_app_boot_event_runs() { - // Cleanup the custom theme folder we created - File::deleteDirectory($this->themeFolderPath); + $this->usingThemeFolder(function($themeFolder) { + $functionsFile = theme_path('functions.php'); + app()->alias('cat', 'dog'); + file_put_contents($functionsFile, "alias('cat', 'dog');});"); + $this->runWithEnv('APP_THEME', $themeFolder, function() { + $this->assertEquals('cat', $this->app->getAlias('dog')); + }); + }); + } - parent::tearDown(); + public function test_event_commonmark_environment_configure() + { + $callbackCalled = false; + $callback = function($environment) use (&$callbackCalled) { + $this->assertInstanceOf(ConfigurableEnvironmentInterface::class, $environment); + $callbackCalled = true; + return $environment; + }; + Theme::listen(ThemeEvents::COMMONMARK_ENVIRONMENT_CONFIGURE, $callback); + + $page = Page::query()->first(); + $content = new PageContent($page); + $content->setNewMarkdown('# test'); + + $this->assertTrue($callbackCalled); } - public function test_translation_text_can_be_overriden_via_theme() + protected function usingThemeFolder(callable $callback) { - $translationPath = theme_path('/lang/en'); - File::makeDirectory($translationPath, 0777, true); + // Create a folder and configure a theme + $themeFolderName = 'testing_theme_' . rtrim(base64_encode(time()), "="); + config()->set('view.theme', $themeFolderName); + $themeFolderPath = theme_path(''); + File::makeDirectory($themeFolderPath); - $customTranslations = ' \'Sandwiches\']; - '; - file_put_contents($translationPath . '/entities.php', $customTranslations); + call_user_func($callback, $themeFolderName); - $homeRequest = $this->actingAs($this->getViewer())->get('/'); - $homeRequest->assertElementContains('header nav', 'Sandwiches'); + // Cleanup the custom theme folder we created + File::deleteDirectory($themeFolderPath); } } \ No newline at end of file