1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace SilverStripe\Forms\Tests\HTMLEditor; |
4
|
|
|
|
5
|
|
|
use SilverStripe\Control\Director; |
6
|
|
|
use SilverStripe\Core\Manifest\ModuleResourceLoader; |
7
|
|
|
use SilverStripe\Dev\SapphireTest; |
8
|
|
|
use SilverStripe\Forms\HTMLEditor\TinyMCEConfig; |
9
|
|
|
|
10
|
|
|
class TinyMCEConfigTest extends SapphireTest |
11
|
|
|
{ |
12
|
|
|
|
13
|
|
|
public function testEditorIdentifier() |
14
|
|
|
{ |
15
|
|
|
$config = TinyMCEConfig::get('myconfig'); |
16
|
|
|
$this->assertEquals('myconfig', $config->getOption('editorIdentifier')); |
17
|
|
|
} |
18
|
|
|
|
19
|
|
|
/** |
20
|
|
|
* Ensure that all TinyMCEConfig.tinymce_lang are valid |
21
|
|
|
*/ |
22
|
|
|
public function testLanguagesValid() |
23
|
|
|
{ |
24
|
|
|
$configDir = TinyMCEConfig::config()->get('base_dir'); |
25
|
|
|
if (!$configDir) { |
26
|
|
|
$this->markTestSkipped("Test skipped without TinyMCE resources folder being installed"); |
27
|
|
|
} |
28
|
|
|
|
29
|
|
|
$langs = Director::baseFolder() . '/' . ModuleResourceLoader::resourcePath($configDir) . '/langs'; |
30
|
|
|
|
31
|
|
|
// Test all langs exist as real files |
32
|
|
|
foreach (TinyMCEConfig::config()->get('tinymce_lang') as $locale => $resource) { |
33
|
|
|
// Check valid |
34
|
|
|
$this->assertFileExists( |
35
|
|
|
"{$langs}/{$resource}.js", |
36
|
|
|
"Locale code {$locale} maps to {$resource}.js which exists" |
37
|
|
|
); |
38
|
|
|
// Check we don't simplify to locale when a specific version exists |
39
|
|
|
if (strpos($resource, '_') === false) { |
40
|
|
|
$this->assertFileNotExists( |
41
|
|
|
"{$langs}/{$locale}.js", |
42
|
|
|
"Locale code {$locale} doesn't map to simple {$resource}.js when a better {$locale}.js is available" |
43
|
|
|
); |
44
|
|
|
} |
45
|
|
|
} |
46
|
|
|
} |
47
|
|
|
|
48
|
|
|
public function testGetContentCSS() |
49
|
|
|
{ |
50
|
|
|
TinyMCEConfig::config()->set('editor_css', [ |
51
|
|
|
'silverstripe/framework:tests/php/Forms/HTMLEditor.css' |
52
|
|
|
]); |
53
|
|
|
|
54
|
|
|
// Test default config |
55
|
|
|
$config = new TinyMCEConfig(); |
56
|
|
|
$this->assertContains('silverstripe/framework:tests/php/Forms/HTMLEditor.css', $config->getContentCSS()); |
57
|
|
|
|
58
|
|
|
// Test manual disable |
59
|
|
|
$config->setContentCSS([]); |
60
|
|
|
$this->assertEmpty($config->getContentCSS()); |
61
|
|
|
|
62
|
|
|
// Test replacement config |
63
|
|
|
$config->setContentCSS([ |
64
|
|
|
'silverstripe/framework:tests/php/Forms/HTMLEditor_another.css' |
65
|
|
|
]); |
66
|
|
|
$this->assertEquals( |
67
|
|
|
[ 'silverstripe/framework:tests/php/Forms/HTMLEditor_another.css'], |
68
|
|
|
$config->getContentCSS() |
69
|
|
|
); |
70
|
|
|
} |
71
|
|
|
|
72
|
|
|
public function testProvideI18nEntities() |
73
|
|
|
{ |
74
|
|
|
TinyMCEConfig::config()->set('image_size_presets', [ |
75
|
|
|
['i18n' => TinyMCEConfig::class . '.TEST', 'text' => 'Foo bar'], |
76
|
|
|
['text' => 'No translation key'], |
77
|
|
|
['i18n' => TinyMCEConfig::class . '.NO_TRANSLATION_TEXT'], |
78
|
|
|
['i18n' => TinyMCEConfig::class . '.TEST_TWO', 'text' => 'Bar foo'], |
79
|
|
|
]); |
80
|
|
|
|
81
|
|
|
$config = TinyMCEConfig::create(); |
82
|
|
|
$translations = $config->provideI18nEntities(); |
83
|
|
|
|
84
|
|
|
$this->assertEquals( |
85
|
|
|
3, |
86
|
|
|
sizeof($translations), |
87
|
|
|
'Only two presets have valid translation + the generic PIXEL_WIDTH one' |
88
|
|
|
); |
89
|
|
|
$this->assertEquals('Foo bar', $translations[TinyMCEConfig::class . '.TEST']); |
90
|
|
|
$this->assertEquals('Bar foo', $translations[TinyMCEConfig::class . '.TEST_TWO']); |
91
|
|
|
$this->assertEquals('{width} pixels', $translations[TinyMCEConfig::class . '.PIXEL_WIDTH']); |
92
|
|
|
} |
93
|
|
|
} |
94
|
|
|
|