annotate core/modules/views/src/Tests/ViewTestData.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\views\Tests;
Chris@0 4
Chris@0 5 use Drupal\Core\Config\FileStorage;
Chris@0 6
Chris@0 7 /**
Chris@0 8 * Provides tests view data and the base test schema with sample data records.
Chris@0 9 *
Chris@0 10 * The methods will be used by both views test base classes.
Chris@0 11 *
Chris@0 12 * @see \Drupal\Tests\views\Kernel\ViewsKernelTestBase.
Chris@0 13 * @see \Drupal\views\Tests\ViewTestBase.
Chris@0 14 */
Chris@0 15 class ViewTestData {
Chris@0 16
Chris@0 17 /**
Chris@0 18 * Create test views from config.
Chris@0 19 *
Chris@0 20 * @param string $class
Chris@0 21 * The name of the test class. Installs the listed test views *in order*.
Chris@0 22 * @param array $modules
Chris@0 23 * The module directories to look in for test views.
Chris@0 24 */
Chris@0 25 public static function createTestViews($class, array $modules) {
Chris@0 26 $views = [];
Chris@0 27 while ($class) {
Chris@0 28 if (property_exists($class, 'testViews')) {
Chris@0 29 $views = array_merge($views, $class::$testViews);
Chris@0 30 }
Chris@0 31 $class = get_parent_class($class);
Chris@0 32 }
Chris@0 33 if (!empty($views)) {
Chris@0 34 $storage = \Drupal::entityManager()->getStorage('view');
Chris@0 35 $module_handler = \Drupal::moduleHandler();
Chris@0 36 foreach ($modules as $module) {
Chris@0 37 $config_dir = drupal_get_path('module', $module) . '/test_views';
Chris@0 38 if (!is_dir($config_dir) || !$module_handler->moduleExists($module)) {
Chris@0 39 continue;
Chris@0 40 }
Chris@0 41
Chris@0 42 $file_storage = new FileStorage($config_dir);
Chris@0 43 $available_views = $file_storage->listAll('views.view.');
Chris@0 44 foreach ($views as $id) {
Chris@0 45 $config_name = 'views.view.' . $id;
Chris@0 46 if (in_array($config_name, $available_views)) {
Chris@0 47 $storage
Chris@0 48 ->create($file_storage->read($config_name))
Chris@0 49 ->save();
Chris@0 50 }
Chris@0 51 }
Chris@0 52 }
Chris@0 53 }
Chris@0 54
Chris@0 55 // Rebuild the router once.
Chris@0 56 \Drupal::service('router.builder')->rebuild();
Chris@0 57 }
Chris@0 58
Chris@0 59 /**
Chris@0 60 * Returns the schema definition.
Chris@0 61 *
Chris@0 62 * @internal
Chris@0 63 */
Chris@0 64 public static function schemaDefinition() {
Chris@0 65 $schema['views_test_data'] = [
Chris@0 66 'description' => 'Basic test table for Views tests.',
Chris@0 67 'fields' => [
Chris@0 68 'id' => [
Chris@0 69 'type' => 'serial',
Chris@0 70 'unsigned' => TRUE,
Chris@0 71 'not null' => TRUE,
Chris@0 72 ],
Chris@0 73 'name' => [
Chris@0 74 'description' => "A person's name",
Chris@0 75 'type' => 'varchar_ascii',
Chris@0 76 'length' => 255,
Chris@0 77 'not null' => TRUE,
Chris@0 78 'default' => '',
Chris@0 79 ],
Chris@0 80 'age' => [
Chris@0 81 'description' => "The person's age",
Chris@0 82 'type' => 'int',
Chris@0 83 'unsigned' => TRUE,
Chris@0 84 'not null' => TRUE,
Chris@0 85 'default' => 0,
Chris@0 86 ],
Chris@0 87 'job' => [
Chris@0 88 'description' => "The person's job",
Chris@0 89 'type' => 'varchar',
Chris@0 90 'length' => 255,
Chris@0 91 'not null' => TRUE,
Chris@0 92 'default' => 'Undefined',
Chris@0 93 ],
Chris@0 94 'created' => [
Chris@0 95 'description' => "The creation date of this record",
Chris@0 96 'type' => 'int',
Chris@0 97 'unsigned' => TRUE,
Chris@0 98 'not null' => TRUE,
Chris@0 99 'default' => 0,
Chris@0 100 ],
Chris@0 101 'status' => [
Chris@0 102 'description' => "The status of this record",
Chris@0 103 'type' => 'int',
Chris@0 104 'unsigned' => TRUE,
Chris@0 105 'not null' => TRUE,
Chris@0 106 'default' => 0,
Chris@0 107 ],
Chris@0 108 ],
Chris@0 109 'primary key' => ['id'],
Chris@0 110 'unique keys' => [
Chris@17 111 'name' => ['name'],
Chris@0 112 ],
Chris@0 113 'indexes' => [
Chris@0 114 'ages' => ['age'],
Chris@0 115 ],
Chris@0 116 ];
Chris@0 117 return $schema;
Chris@0 118 }
Chris@0 119
Chris@0 120 /**
Chris@0 121 * Returns the views data definition.
Chris@0 122 */
Chris@0 123 public static function viewsData() {
Chris@0 124 // Declaration of the base table.
Chris@0 125 $data['views_test_data']['table'] = [
Chris@0 126 'group' => 'Views test',
Chris@0 127 'base' => [
Chris@0 128 'field' => 'id',
Chris@0 129 'title' => 'Views test data',
Chris@0 130 'help' => 'Users who have created accounts on your site.',
Chris@0 131 ],
Chris@0 132 ];
Chris@0 133
Chris@0 134 // Declaration of fields.
Chris@0 135 $data['views_test_data']['id'] = [
Chris@0 136 'title' => 'ID',
Chris@0 137 'help' => 'The test data ID',
Chris@0 138 'field' => [
Chris@0 139 'id' => 'numeric',
Chris@0 140 ],
Chris@0 141 'argument' => [
Chris@0 142 'id' => 'numeric',
Chris@0 143 ],
Chris@0 144 'filter' => [
Chris@0 145 'id' => 'numeric',
Chris@0 146 ],
Chris@0 147 'sort' => [
Chris@0 148 'id' => 'standard',
Chris@0 149 ],
Chris@0 150 ];
Chris@0 151 $data['views_test_data']['name'] = [
Chris@0 152 'title' => 'Name',
Chris@0 153 'help' => 'The name of the person',
Chris@0 154 'field' => [
Chris@0 155 'id' => 'standard',
Chris@0 156 ],
Chris@0 157 'argument' => [
Chris@0 158 'id' => 'string',
Chris@0 159 ],
Chris@0 160 'filter' => [
Chris@0 161 'id' => 'string',
Chris@0 162 ],
Chris@0 163 'sort' => [
Chris@0 164 'id' => 'standard',
Chris@0 165 ],
Chris@0 166 ];
Chris@0 167 $data['views_test_data']['age'] = [
Chris@0 168 'title' => 'Age',
Chris@0 169 'help' => 'The age of the person',
Chris@0 170 'field' => [
Chris@0 171 'id' => 'numeric',
Chris@0 172 ],
Chris@0 173 'argument' => [
Chris@0 174 'id' => 'numeric',
Chris@0 175 ],
Chris@0 176 'filter' => [
Chris@0 177 'id' => 'numeric',
Chris@0 178 ],
Chris@0 179 'sort' => [
Chris@0 180 'id' => 'standard',
Chris@0 181 ],
Chris@0 182 ];
Chris@0 183 $data['views_test_data']['job'] = [
Chris@0 184 'title' => 'Job',
Chris@0 185 'help' => 'The job of the person',
Chris@0 186 'field' => [
Chris@0 187 'id' => 'standard',
Chris@0 188 ],
Chris@0 189 'argument' => [
Chris@0 190 'id' => 'string',
Chris@0 191 ],
Chris@0 192 'filter' => [
Chris@0 193 'id' => 'string',
Chris@0 194 ],
Chris@0 195 'sort' => [
Chris@0 196 'id' => 'standard',
Chris@0 197 ],
Chris@0 198 ];
Chris@0 199 $data['views_test_data']['created'] = [
Chris@0 200 'title' => 'Created',
Chris@0 201 'help' => 'The creation date of this record',
Chris@0 202 'field' => [
Chris@0 203 'id' => 'date',
Chris@0 204 ],
Chris@0 205 'argument' => [
Chris@0 206 'id' => 'date',
Chris@0 207 ],
Chris@0 208 'filter' => [
Chris@0 209 'id' => 'date',
Chris@0 210 ],
Chris@0 211 'sort' => [
Chris@0 212 'id' => 'date',
Chris@0 213 ],
Chris@0 214 ];
Chris@0 215 $data['views_test_data']['status'] = [
Chris@0 216 'title' => 'Status',
Chris@0 217 'help' => 'The status of this record',
Chris@0 218 'field' => [
Chris@0 219 'id' => 'boolean',
Chris@0 220 ],
Chris@0 221 'filter' => [
Chris@0 222 'id' => 'boolean',
Chris@0 223 ],
Chris@0 224 'sort' => [
Chris@0 225 'id' => 'standard',
Chris@0 226 ],
Chris@0 227 ];
Chris@0 228 return $data;
Chris@0 229 }
Chris@0 230
Chris@0 231 /**
Chris@0 232 * Returns a very simple test dataset.
Chris@0 233 */
Chris@0 234 public static function dataSet() {
Chris@0 235 return [
Chris@0 236 [
Chris@0 237 'name' => 'John',
Chris@0 238 'age' => 25,
Chris@0 239 'job' => 'Singer',
Chris@0 240 'created' => gmmktime(0, 0, 0, 1, 1, 2000),
Chris@0 241 'status' => 1,
Chris@0 242 ],
Chris@0 243 [
Chris@0 244 'name' => 'George',
Chris@0 245 'age' => 27,
Chris@0 246 'job' => 'Singer',
Chris@0 247 'created' => gmmktime(0, 0, 0, 1, 2, 2000),
Chris@0 248 'status' => 0,
Chris@0 249 ],
Chris@0 250 [
Chris@0 251 'name' => 'Ringo',
Chris@0 252 'age' => 28,
Chris@0 253 'job' => 'Drummer',
Chris@0 254 'created' => gmmktime(6, 30, 30, 1, 1, 2000),
Chris@0 255 'status' => 1,
Chris@0 256 ],
Chris@0 257 [
Chris@0 258 'name' => 'Paul',
Chris@0 259 'age' => 26,
Chris@0 260 'job' => 'Songwriter',
Chris@0 261 'created' => gmmktime(6, 0, 0, 1, 1, 2000),
Chris@0 262 'status' => 0,
Chris@0 263 ],
Chris@0 264 [
Chris@0 265 'name' => 'Meredith',
Chris@0 266 'age' => 30,
Chris@0 267 'job' => 'Speaker',
Chris@0 268 'created' => gmmktime(6, 30, 10, 1, 1, 2000),
Chris@0 269 'status' => 1,
Chris@0 270 ],
Chris@0 271 ];
Chris@0 272 }
Chris@0 273
Chris@0 274 }