diff --git a/core/modules/system/lib/Drupal/system/Tests/Theme/ThemeSettingsTest.php b/core/modules/system/lib/Drupal/system/Tests/Theme/ThemeSettingsTest.php new file mode 100644 index 0000000..8593bae --- /dev/null +++ b/core/modules/system/lib/Drupal/system/Tests/Theme/ThemeSettingsTest.php @@ -0,0 +1,73 @@ + 'Theme settings', + 'description' => 'Tests theme settings functionality.', + 'group' => 'Theme', + ); + } + + function setUp() { + parent::setUp(); + // Theme settings rely on System module's system.theme.global configuration. + $this->installConfig(array('system')); + + if (!isset($this->availableThemes)) { + $discovery = new ExtensionDiscovery(); + $this->availableThemes = $discovery->scan('theme'); + } + } + + /** + * Tests that $theme.settings are imported and used as default theme settings. + */ + function testDefaultConfig() { + $name = 'test_basetheme'; + $path = $this->availableThemes[$name]->getPath(); + $this->assertTrue(file_exists("$path/config/$name.settings.yml")); + $this->container->get('theme_handler')->enable(array($name)); + $this->assertIdentical(theme_get_setting('base', $name), 'only'); + } + + /** + * Tests that the $theme.settings default config file is optional. + */ + function testNoDefaultConfig() { + $name = 'stark'; + $path = $this->availableThemes[$name]->getPath(); + $this->assertFalse(file_exists("$path/config/$name.settings.yml")); + $this->container->get('theme_handler')->enable(array($name)); + $this->assertNotNull(theme_get_setting('features.favicon', $name)); + } + +} diff --git a/core/modules/system/tests/themes/test_basetheme/config/schema/test_basetheme.schema.yml b/core/modules/system/tests/themes/test_basetheme/config/schema/test_basetheme.schema.yml new file mode 100644 index 0000000..9cfe9ec --- /dev/null +++ b/core/modules/system/tests/themes/test_basetheme/config/schema/test_basetheme.schema.yml @@ -0,0 +1,10 @@ +test_basetheme.settings: + type: system.theme.global + label: 'Test base theme settings' + mapping: + base: + type: string + label: 'Base theme setting' + override: + type: string + label: 'Whether the setting has been overridden' diff --git a/core/modules/system/tests/themes/test_basetheme/config/test_basetheme.settings.yml b/core/modules/system/tests/themes/test_basetheme/config/test_basetheme.settings.yml new file mode 100644 index 0000000..4a06f9a --- /dev/null +++ b/core/modules/system/tests/themes/test_basetheme/config/test_basetheme.settings.yml @@ -0,0 +1,4 @@ +features: + favicon: false +base: only +override: base