diff --git a/README.md b/README.md index ffd9396..e1d52a7 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ## Introduction Aids core and module developers in testing their code against -a set of sample data and behaviour. +a set of sample data and behaviour. * Shows all core form fields, including their disabled and readonly state * Shows sample GridField instance including data @@ -25,17 +25,32 @@ For example, to test the tagfield module, remove the `frameworktest/code/tagfiel The module creates some default pages for different CMS behaviours. The CMS is intended to be perform well with a couple of thousand pages. -If you want to test the CMS behaviour for a large and nested tree, +If you want to test the CMS behaviour for a large and nested tree, the module includes a simple generator task: `dev/tasks/FTPageMakerTask`. It will create 3^5 pages by default, so takes a while to run through. +## Configuring the amount of data + +Both `FTPageMagerTask` and `FTFileMakerTask` allow the amount of generated content to be configured. +To do this, pass a comma-seprarated list of integers representing the amount of records to create at each +depth. + +`$ vendor/bin/sake dev/tasks/FTPageMakerTask pageCounts=10,200,5,5` + +`$ vendor/bin/sake dev/tasks/FTFileMakerTask fileCounts=5,300,55,5 folderCounts=1,5,5,5` + +## Guaranteed unique images + +The `FTFileMakerTask` will randomly watermark each reference to your images by default. If you want to disable this, +set the `uniqueImages` config variable to `false`. + ## Blocks When [dnadesign/silverstripe-elemental](https://github.com/dnadesign/silverstripe-elemental) is installed, the `FTPageMakerTask` can also generate blocks within those pages automatically. It has a few hardcoded sample data structures for common block types, and randomly creates a number of blocks, as well as randomly choosing to publish them. -Relies on files and images being available to add as sample data. +Relies on files and images being available to add as sample data. Additional setup: diff --git a/code/tasks/FTFileMakerTask.php b/code/tasks/FTFileMakerTask.php index 82ddfd9..0d80ffe 100644 --- a/code/tasks/FTFileMakerTask.php +++ b/code/tasks/FTFileMakerTask.php @@ -185,6 +185,18 @@ class FTFileMakerTask extends BuildTask /** @var Member */ protected $anonymousMember = null; + /** + * Allow override of the fileCountByDepth + * @var array + */ + protected $fileCounts = []; + + /** + * Allow override of the folderCountByDepth + * @var array + */ + protected $folderCounts = []; + public function run($request) { set_time_limit(0); @@ -209,6 +221,26 @@ class FTFileMakerTask extends BuildTask $this->reset(); } + $fileCounts = $request->getVar('fileCounts'); + if ($fileCounts) { + $counts = explode(',', $fileCounts); + $this->fileCounts = array_map(function ($int) { + return (int) trim($int); + }, $counts); + } else { + $this->fileCounts = self::config()->get('fileCountByDepth'); + } + + $folderCounts = $request->getVar('folderCounts'); + if ($folderCounts) { + $counts = explode(',', $folderCounts); + $this->folderCounts = array_map(function ($int) { + return (int) trim($int); + }, $counts); + } else { + $this->folderCounts = self::config()->get('folderCountByDepth'); + } + echo "Downloading fixtures" . $this->lineBreak; $fixtureFilePaths = $this->downloadFixtureFiles(); @@ -302,8 +334,8 @@ class FTFileMakerTask extends BuildTask protected function generateFiles($fixtureFilePaths, $depth = 0, $prefix = "0", $parentID = 0) { - $folderCount = self::config()->get('folderCountByDepth')[$depth]; - $fileCount = self::config()->get('fileCountByDepth')[$depth]; + $folderCount = $this->folderCounts[$depth]; + $fileCount = $this->fileCounts[$depth]; $doSetFolderPermissions = (bool) self::config()->get('doSetFolderPermissions');