Tests metadata applied to configuration objects.
function testSchemaData() {
// Try some simple properties.
$meta = config_typed()
->get('system.site');
$property = $meta
->get('name');
$this
->assertTrue(is_a($property, 'Drupal\\Core\\TypedData\\Type\\String'), 'Got the right wrapper fo the site name property.');
$this
->assertEqual($property
->getType(), 'label', 'Got the right string type for site name data.');
$this
->assertEqual($property
->getValue(), 'Drupal', 'Got the right string value for site name data.');
$property = $meta
->get('page')
->get('front');
$this
->assertTrue(is_a($property, 'Drupal\\Core\\TypedData\\Type\\String'), 'Got the right wrapper fo the page.front property.');
$this
->assertEqual($property
->getType(), 'path', 'Got the right type for page.front data (undefined).');
$this
->assertEqual($property
->getValue(), 'user', 'Got the right value for page.front data.');
// Check nested array of properties.
$list = $meta
->get('page');
$this
->assertEqual(count($list), 3, 'Got a list with the right number of properties for site page data');
$this
->assertTrue(isset($list['front']) && isset($list['403']) && isset($list['404']), 'Got a list with the right properties for site page data.');
$this
->assertEqual($list['front']
->getValue(), 'user', 'Got the right value for page.front data from the list.');
// And test some ComplexDataInterface methods.
$properties = $list
->getProperties();
$this
->assertTrue(count($properties) == 3 && $properties['front'] == $list['front'], 'Got the right properties for site page.');
$values = $list
->getPropertyValues();
$this
->assertTrue(count($values) == 3 && $values['front'] == 'user', 'Got the right property values for site page.');
// Now let's try something more complex, with nested objects.
$wrapper = config_typed()
->get('image.style.large');
$effects = $wrapper
->get('effects');
// The function is_array() doesn't work with ArrayAccess, so we use count().
$this
->assertTrue(count($effects) == 1, 'Got an array with effects for image.style.large data');
$ieid = key($effects
->getValue());
$effect = $effects[$ieid];
$this
->assertTrue(count($effect['data']) && $effect['name']
->getValue() == 'image_scale', 'Got data for the image scale effect from metadata.');
$this
->assertEqual($effect['data']['width']
->getType(), 'integer', 'Got the right type for the scale effect width.');
$this
->assertEqual($effect['data']['width']
->getValue(), 480, 'Got the right value for the scale effect width.');
// Finally update some object using a configuration wrapper.
$new_slogan = 'Site slogan for testing configuration metadata';
$wrapper = config_typed()
->get('system.site');
$wrapper
->set('slogan', $new_slogan);
$site_slogan = $wrapper
->get('slogan');
$this
->assertEqual($site_slogan
->getValue(), $new_slogan, 'Successfully updated the contained configuration data');
}