View source
<?php
namespace Drupal\Tests\social_branding\Kernel\GraphQL;
use Drupal\Tests\social_graphql\Kernel\SocialGraphQLTestBase;
use Drupal\social_branding\Wrappers\Color;
class BrandingGraphQLTest extends SocialGraphQLTestBase {
public static $modules = [
"social_branding",
"social_branding_test",
];
public static $configSchemaCheckerExclusions = [
'bootstrap.settings',
'socialbase.settings',
'socialblue.settings',
];
protected function setUp() : void {
parent::setUp();
$this->container
->get('theme_installer')
->install([
'socialblue',
]);
$this->container
->get('config.factory')
->getEditable('system.theme')
->set('default', 'socialblue')
->save();
$this->container
->get('config.factory')
->getEditable('system.site')
->set('name', 'Open Social')
->save();
}
public function testCommunityBrandingFieldsPresence() : void {
$system_information = $this
->config('system.site');
$system_theme = $this
->config('system.theme');
$config = $this
->config('socialblue.settings');
$config
->set('logo.path', 'public://logo.png')
->save();
$expected_logo_url = 'http://localhost/' . $this->siteDirectory . '/files/logo.png';
$this
->setUpCurrentUser();
$this
->assertResults('
query {
about {
name
}
branding {
logoUrl
colorScheme {
primary {
css
hexRGB
rgba {
red
green
blue
alpha
}
}
secondary {
css
hexRGB
rgba {
red
green
blue
alpha
}
}
accentBackground {
css
hexRGB
rgba {
red
green
blue
alpha
}
}
accentText {
css
hexRGB
rgba {
red
green
blue
alpha
}
}
link {
css
hexRGB
rgba {
red
green
blue
alpha
}
}
navbarBackground {
css
hexRGB
rgba {
red
green
blue
alpha
}
}
navbarText {
css
hexRGB
rgba {
red
green
blue
alpha
}
}
navbarActiveBackground {
css
hexRGB
rgba {
red
green
blue
alpha
}
}
navbarActiveText {
css
hexRGB
rgba {
red
green
blue
alpha
}
}
navbarSecondaryBackground {
css
hexRGB
rgba {
red
green
blue
alpha
}
}
navbarSecondaryText {
css
hexRGB
rgba {
red
green
blue
alpha
}
}
}
}
preferredFeatures {
machineName
}
}
', [], [
'about' => [
'name' => $system_information
->get('name'),
],
'branding' => [
'logoUrl' => $expected_logo_url,
'colorScheme' => [
'primary' => [
'css' => $this
->getColor($config
->get('color_primary'))
->css(),
'hexRGB' => $this
->getColor($config
->get('color_primary'))
->hexRgb(),
'rgba' => [
'red' => $this
->getColor($config
->get('color_primary'))
->red(),
'green' => $this
->getColor($config
->get('color_primary'))
->green(),
'blue' => $this
->getColor($config
->get('color_primary'))
->blue(),
'alpha' => $this
->getColor($config
->get('color_primary'))
->alpha(),
],
],
'secondary' => [
'css' => $this
->getColor($config
->get('color_secondary'))
->css(),
'hexRGB' => $this
->getColor($config
->get('color_secondary'))
->hexRgb(),
'rgba' => [
'red' => $this
->getColor($config
->get('color_secondary'))
->red(),
'green' => $this
->getColor($config
->get('color_secondary'))
->green(),
'blue' => $this
->getColor($config
->get('color_secondary'))
->blue(),
'alpha' => $this
->getColor($config
->get('color_secondary'))
->alpha(),
],
],
'accentBackground' => [
'css' => $this
->getColor($config
->get('color_accent'))
->css(),
'hexRGB' => $this
->getColor($config
->get('color_accent'))
->hexRgb(),
'rgba' => [
'red' => $this
->getColor($config
->get('color_accent'))
->red(),
'green' => $this
->getColor($config
->get('color_accent'))
->green(),
'blue' => $this
->getColor($config
->get('color_accent'))
->blue(),
'alpha' => $this
->getColor($config
->get('color_accent'))
->alpha(),
],
],
'accentText' => [
'css' => $this
->getColor($config
->get('color_accent_text'))
->css(),
'hexRGB' => $this
->getColor($config
->get('color_accent_text'))
->hexRgb(),
'rgba' => [
'red' => $this
->getColor($config
->get('color_accent_text'))
->red(),
'green' => $this
->getColor($config
->get('color_accent_text'))
->green(),
'blue' => $this
->getColor($config
->get('color_accent_text'))
->blue(),
'alpha' => $this
->getColor($config
->get('color_accent_text'))
->alpha(),
],
],
'link' => [
'css' => $this
->getColor($config
->get('color_link'))
->css(),
'hexRGB' => $this
->getColor($config
->get('color_link'))
->hexRgb(),
'rgba' => [
'red' => $this
->getColor($config
->get('color_link'))
->red(),
'green' => $this
->getColor($config
->get('color_link'))
->green(),
'blue' => $this
->getColor($config
->get('color_link'))
->blue(),
'alpha' => $this
->getColor($config
->get('color_link'))
->alpha(),
],
],
'navbarBackground' => [
'css' => $this
->getColor($config
->get('color_navbar_bg'))
->css(),
'hexRGB' => $this
->getColor($config
->get('color_navbar_bg'))
->hexRgb(),
'rgba' => [
'red' => $this
->getColor($config
->get('color_navbar_bg'))
->red(),
'green' => $this
->getColor($config
->get('color_navbar_bg'))
->green(),
'blue' => $this
->getColor($config
->get('color_navbar_bg'))
->blue(),
'alpha' => $this
->getColor($config
->get('color_navbar_bg'))
->alpha(),
],
],
'navbarText' => [
'css' => $this
->getColor($config
->get('color_navbar_text'))
->css(),
'hexRGB' => $this
->getColor($config
->get('color_navbar_text'))
->hexRgb(),
'rgba' => [
'red' => $this
->getColor($config
->get('color_navbar_text'))
->red(),
'green' => $this
->getColor($config
->get('color_navbar_text'))
->green(),
'blue' => $this
->getColor($config
->get('color_navbar_text'))
->blue(),
'alpha' => $this
->getColor($config
->get('color_navbar_text'))
->alpha(),
],
],
'navbarActiveBackground' => [
'css' => $this
->getColor($config
->get("color_navbar_active_bg'"))
->css(),
'hexRGB' => $this
->getColor($config
->get("color_navbar_active_bg'"))
->hexRgb(),
'rgba' => [
'red' => $this
->getColor($config
->get("color_navbar_active_bg'"))
->red(),
'green' => $this
->getColor($config
->get("color_navbar_active_bg'"))
->green(),
'blue' => $this
->getColor($config
->get("color_navbar_active_bg'"))
->blue(),
'alpha' => $this
->getColor($config
->get("color_navbar_active_bg'"))
->alpha(),
],
],
'navbarActiveText' => [
'css' => $this
->getColor($config
->get("color_navbar_active_text'"))
->css(),
'hexRGB' => $this
->getColor($config
->get("color_navbar_active_text'"))
->hexRgb(),
'rgba' => [
'red' => $this
->getColor($config
->get("color_navbar_active_text'"))
->red(),
'green' => $this
->getColor($config
->get("color_navbar_active_text'"))
->green(),
'blue' => $this
->getColor($config
->get("color_navbar_active_text'"))
->blue(),
'alpha' => $this
->getColor($config
->get("color_navbar_active_text'"))
->alpha(),
],
],
'navbarSecondaryBackground' => [
'css' => $this
->getColor($config
->get("color_navbar_sec_bg'"))
->css(),
'hexRGB' => $this
->getColor($config
->get("color_navbar_sec_bg'"))
->hexRgb(),
'rgba' => [
'red' => $this
->getColor($config
->get("color_navbar_sec_bg'"))
->red(),
'green' => $this
->getColor($config
->get("color_navbar_sec_bg'"))
->green(),
'blue' => $this
->getColor($config
->get("color_navbar_sec_bg'"))
->blue(),
'alpha' => $this
->getColor($config
->get("color_navbar_sec_bg'"))
->alpha(),
],
],
'navbarSecondaryText' => [
'css' => $this
->getColor($config
->get("color_navbar_sec_text'"))
->css(),
'hexRGB' => $this
->getColor($config
->get("color_navbar_sec_text'"))
->hexRgb(),
'rgba' => [
'red' => $this
->getColor($config
->get("color_navbar_sec_text'"))
->red(),
'green' => $this
->getColor($config
->get("color_navbar_sec_text'"))
->green(),
'blue' => $this
->getColor($config
->get("color_navbar_sec_text'"))
->blue(),
'alpha' => $this
->getColor($config
->get("color_navbar_sec_text'"))
->alpha(),
],
],
],
],
'preferredFeatures' => [
[
'machineName' => 'feature1',
],
[
'machineName' => 'feature2',
],
[
'machineName' => 'feature0',
],
],
], $this
->defaultCacheMetaData()
->addCacheableDependency($system_information)
->addCacheableDependency($system_theme)
->addCacheableDependency($config));
}
public function testLogoUrlCanReturnNull() : void {
$system_theme = $this
->config('system.theme');
$this
->setUpCurrentUser();
$this
->assertResults('
query {
branding {
logoUrl
}
}
', [], [
'branding' => [
'logoUrl' => NULL,
],
], $this
->defaultCacheMetaData()
->addCacheableDependency($system_theme));
}
public function testBrandingColorSchemeCanReturnNull() : void {
$system_theme = $this
->config('system.theme');
$system_theme
->set('default', 'bootstrap')
->save();
$this
->setUpCurrentUser();
$this
->assertResults('
query {
branding {
colorScheme {
primary {
hexRGB
css
rgba {
alpha
blue
green
red
}
}
}
}
}
', [], [
'branding' => [
'colorScheme' => NULL,
],
], $this
->defaultCacheMetaData()
->addCacheableDependency($system_theme));
}
public function testPreferredFeaturesReturnEmptyArray() : void {
$system_theme = $this
->config('system.theme');
$this
->setUpCurrentUser();
\Drupal::service('module_installer')
->uninstall([
'social_branding_test',
], FALSE);
$this
->assertFalse(\Drupal::moduleHandler()
->moduleExists('social_branding_test'), 'Test preferred features module is disabled.');
$this
->assertResults('
query {
preferredFeatures {
machineName
}
}
', [], [
'preferredFeatures' => [],
], $this
->defaultCacheMetaData()
->addCacheContexts([
'languages:language_interface',
]));
}
private function getColor(string $color) : Color {
return new Color($color);
}
}