From a5d2a26fccbc1ffd2f41707954047f13cc12fa57 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Tue, 16 Mar 2021 17:55:19 +0000 Subject: [PATCH] Added testing for the back-end theme system done so far --- tests/ThemeTest.php | 83 +++++++++++++++++++++++++++++++-------------- 1 file changed, 57 insertions(+), 26 deletions(-) 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); - } - - public function tearDown(): void - { - // Cleanup the custom theme folder we created - File::deleteDirectory($this->themeFolderPath); - - parent::tearDown(); - } - - public function test_translation_text_can_be_overriden_via_theme() - { - $translationPath = theme_path('/lang/en'); - File::makeDirectory($translationPath, 0777, true); - - $customTranslations = ' \'Sandwiches\']; '; - file_put_contents($translationPath . '/entities.php', $customTranslations); + file_put_contents($translationPath . '/entities.php', $customTranslations); - $homeRequest = $this->actingAs($this->getViewer())->get('/'); - $homeRequest->assertElementContains('header nav', 'Sandwiches'); + $homeRequest = $this->actingAs($this->getViewer())->get('/'); + $homeRequest->assertElementContains('header nav', 'Sandwiches'); + }); + } + + public function test_theme_functions_file_used_and_app_boot_event_runs() + { + $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')); + }); + }); + } + + 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); + } + + protected function usingThemeFolder(callable $callback) + { + // 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); + + call_user_func($callback, $themeFolderName); + + // Cleanup the custom theme folder we created + File::deleteDirectory($themeFolderPath); } } \ No newline at end of file