/** * Builds a list of fields */ public function fieldList() { $custom_fields = $this->storage->listAll('ds.field.'); if (!empty($custom_fields)) { $rows = array(); foreach ($custom_fields as $config) { $field_value = $this->config($config)->get(); $row = array(); $row[] = array('data' => array('#plain_text' => $field_value['label'])); $row[] = isset($field_value['type_label']) ? $field_value['type_label'] : $this->t('Unknown'); $row[] = $field_value['id']; $row[] = ucwords(str_replace('_', ' ', implode(', ', $field_value['entities']))); $operations = array(); $operations['edit'] = array('title' => $this->t('Edit'), 'url' => new Url('ds.manage_field', array('field_key' => $field_value['id']))); $operations['delete'] = array('title' => $this->t('Delete'), 'url' => new Url('ds.delete_field', array('field_key' => $field_value['id']))); $this->moduleHandler->alter('ds_field_operations', $operations, $field_value); $row[] = array('data' => array('#type' => 'operations', '#subtype' => 'ds', '#links' => $operations)); $rows[] = $row; } $build = array('#theme' => 'table', '#header' => array('Label', 'Type', 'Machine name', 'Entities', 'Operations'), '#rows' => $rows); } else { $build = array('#markup' => $this->t('No custom fields have been defined.')); } return $build; }
/** * Tests an invalid storage. */ public function testInvalidStorage() { $name = 'config_test.storage'; // Write something to the valid storage to prove that the storages do not // pollute one another. $data = array('foo' => 'bar'); $result = $this->storage->write($name, $data); $this->assertIdentical($result, TRUE); $raw_data = $this->read($name); $this->assertIdentical($raw_data, $data); // Reading from a non-existing storage bin returns FALSE. $result = $this->invalidStorage->read($name); $this->assertIdentical($result, FALSE); // Deleting from a non-existing storage bin throws an exception. try { $this->invalidStorage->delete($name); $this->fail('Exception not thrown upon deleting from a non-existing storage bin.'); } catch (\Exception $e) { $class = get_class($e); $this->pass($class . ' thrown upon deleting from a non-existing storage bin.'); } // Listing on a non-existing storage bin returns an empty array. $result = $this->invalidStorage->listAll(); $this->assertIdentical($result, array()); // Writing to a non-existing storage bin creates the bin. $this->invalidStorage->write($name, array('foo' => 'bar')); $result = $this->invalidStorage->read($name); $this->assertIdentical($result, array('foo' => 'bar')); }
/** * Tests storage CRUD operations. * * @todo Coverage: Trigger PDOExceptions / Database exceptions. */ function testCRUD() { $name = 'config_test.storage'; // Checking whether a non-existing name exists returns FALSE. $this->assertIdentical($this->storage->exists($name), FALSE); // Reading a non-existing name returns FALSE. $data = $this->storage->read($name); $this->assertIdentical($data, FALSE); // Writing data returns TRUE and the data has been written. $data = array('foo' => 'bar'); $result = $this->storage->write($name, $data); $this->assertIdentical($result, TRUE); $raw_data = $this->read($name); $this->assertIdentical($raw_data, $data); // Checking whether an existing name exists returns TRUE. $this->assertIdentical($this->storage->exists($name), TRUE); // Writing the identical data again still returns TRUE. $result = $this->storage->write($name, $data); $this->assertIdentical($result, TRUE); // Listing all names returns all. $names = $this->storage->listAll(); $this->assertTrue(in_array('system.performance', $names)); $this->assertTrue(in_array($name, $names)); // Listing all names with prefix returns names with that prefix only. $names = $this->storage->listAll('config_test.'); $this->assertFalse(in_array('system.performance', $names)); $this->assertTrue(in_array($name, $names)); // Rename the configuration storage object. $new_name = 'config_test.storage_rename'; $this->storage->rename($name, $new_name); $raw_data = $this->read($new_name); $this->assertIdentical($raw_data, $data); // Rename it back so further tests work. $this->storage->rename($new_name, $name); // Deleting an existing name returns TRUE. $result = $this->storage->delete($name); $this->assertIdentical($result, TRUE); // Deleting a non-existing name returns FALSE. $result = $this->storage->delete($name); $this->assertIdentical($result, FALSE); // Deleting all names with prefix deletes the appropriate data and returns // TRUE. $files = array('config_test.test.biff', 'config_test.test.bang', 'config_test.test.pow'); foreach ($files as $name) { $this->storage->write($name, $data); } $result = $this->storage->deleteAll('config_test.'); $names = $this->storage->listAll('config_test.'); $this->assertIdentical($result, TRUE); $this->assertIdentical($names, array()); // Test renaming an object that does not exist throws an exception. try { $this->storage->rename('config_test.storage_does_not_exist', 'config_test.storage_does_not_exist_rename'); } catch (\Exception $e) { $class = get_class($e); $this->pass($class . ' thrown upon renaming a nonexistent storage bin.'); } // Test renaming to an object that already exists throws an exception. try { $this->storage->rename('system.cron', 'system.performance'); } catch (\Exception $e) { $class = get_class($e); $this->pass($class . ' thrown upon renaming a nonexistent storage bin.'); } }