set('alternate_base_folder', __DIR__ . '/TinyMCECombinedGeneratorTest'); Director::config()->set('alternate_base_url', 'http://www.mysite.com/basedir/'); SSViewer::config()->set('themes', [ SSViewer::DEFAULT_THEME ]); TinyMCEConfig::config()->set('base_dir', 'tinymce'); } public function testConfig() { // Disable nonces $c = new TinyMCEConfig(); $c->setTheme('testtheme'); $c->setOption('language', 'en'); $c->disablePlugins('table', 'emoticons', 'paste', 'code', 'link', 'importcss'); $c->enablePlugins( array( 'plugin1' => 'mycode/plugin1.js', // 'plugin2' => '/anotherbase/mycode/plugin2.js', 'plugin3' => 'https://www.google.com/mycode/plugin3.js', 'plugin4' => null, 'plugin5' => null, 'plugin6' => '/basedir/mycode/plugin6.js', 'plugin7' => '/basedir/mycode/plugin7.js', ) ); HTMLEditorConfig::set_config('testconfig', $c); // Get config for this /** @var TinyMCECombinedGenerator $generator */ $generator = Injector::inst()->create(TinyMCECombinedGenerator::class); $this->assertEquals( '_tinymce/tinymce-testconfig-6422b3814d.js', $generator->generateFilename($c), "Filename for config: " . json_encode($c->getAttributes()) . " should match expected value" ); $content = $generator->generateContent($c); $this->assertStringStartsWith("var tinyMCEPreInit={base:'tinymce',suffix:'.min'};\n", $content); // Main script file $this->assertContains("/* tinymce.js */\n", $content); // Locale file $this->assertContains("/* en.js */\n", $content); // Local plugins $this->assertContains("/* plugin1.js */\n", $content); $this->assertContains("/* plugin4.min.js */\n", $content); $this->assertContains("/* plugin4/langs/en.js */\n", $content); $this->assertContains("/* plugin5.js */\n", $content); $this->assertContains("/* plugin6.js */\n", $content); // Exclude non-local plugins $this->assertNotContains('plugin2.js', $content); $this->assertNotContains('plugin3.js', $content); // Exclude missing file $this->assertNotContains('plugin7.js', $content); // Check themes $this->assertContains("/* theme.js */\n", $content); $this->assertContains("/* testtheme/langs/en.js */\n", $content); // Register done scripts $this->assertStringEndsWith( <<