44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| /**
 | |
|  * Based entirely off of dereuromark's plugins as I was having trouble getting fixtures to load
 | |
|  * after moving the plugins outside of an existing cakephp app's plugins folder
 | |
|  *
 | |
|  * @link https://github.com/dereuromark/cakephp-tools/blob/master/tests/schema.php
 | |
|  */
 | |
| use Cake\Utility\Inflector;
 | |
| 
 | |
| $tables = [];
 | |
| 
 | |
| /**
 | |
|  * @var \DirectoryIterator<\DirectoryIterator> $iterator
 | |
|  */
 | |
| $iterator = new DirectoryIterator(__DIR__ . DS . 'Fixture');
 | |
| foreach ($iterator as $file) {
 | |
| 	if (!preg_match('/(\w+)Fixture.php$/', (string)$file, $matches)) {
 | |
| 		continue;
 | |
| 	}
 | |
| 
 | |
| 	$name = $matches[1];
 | |
| 	$tableName = Inflector::underscore($name);
 | |
| 	$class = 'CakeProducts\\Test\\Fixture\\' . $name . 'Fixture';
 | |
| 	try {
 | |
| 		$object = (new ReflectionClass($class))->getProperty('fields');
 | |
| 	} catch (ReflectionException $e) {
 | |
| 		continue;
 | |
| 	}
 | |
| 
 | |
| 	$array = $object->getDefaultValue();
 | |
| 	$constraints = $array['_constraints'] ?? [];
 | |
| 	$indexes = $array['_indexes'] ?? [];
 | |
| 	unset($array['_constraints'], $array['_indexes'], $array['_options']);
 | |
| 	$table = [
 | |
| 		'table' => $tableName,
 | |
| 		'columns' => $array,
 | |
| 		'constraints' => $constraints,
 | |
| 		'indexes' => $indexes,
 | |
| 	];
 | |
| 	$tables[$tableName] = $table;
 | |
| }
 | |
| 
 | |
| return $tables;
 |