silverstripe /
cwp
| 1 | <?php |
||
| 2 | |||
| 3 | namespace CWP\CWP\Tests\Tasks; |
||
| 4 | |||
| 5 | use CWP\CWP\Tasks\PopulateThemeSampleDataTask; |
||
| 6 | use SilverStripe\UserForms\Model\UserDefinedForm; |
||
|
0 ignored issues
–
show
|
|||
| 7 | use SilverStripe\Dev\BuildTask; |
||
| 8 | use SilverStripe\Control\HTTPRequest; |
||
| 9 | use SilverStripe\Dev\SapphireTest; |
||
| 10 | |||
| 11 | class PopulateThemeSampleDataTaskTest extends SapphireTest |
||
| 12 | { |
||
| 13 | protected $usesDatabase = true; |
||
| 14 | |||
| 15 | /** |
||
| 16 | * Ensure that the "contact" user form is only created once |
||
| 17 | */ |
||
| 18 | public function testOnlyCreateContactFormOnce() |
||
| 19 | { |
||
| 20 | if (!class_exists(UserDefinedForm::class)) { |
||
| 21 | $this->markTestSkipped('This test requires the userforms module to be installed'); |
||
| 22 | } |
||
| 23 | |||
| 24 | $createdMessage = 'Created "contact" UserDefinedForm'; |
||
| 25 | |||
| 26 | $task = new PopulateThemeSampleDataTask; |
||
| 27 | |||
| 28 | // Run the task |
||
| 29 | $this->assertContains($createdMessage, $this->bufferedTask($task)); |
||
| 30 | |||
| 31 | // Run a second time |
||
| 32 | $this->assertNotContains($createdMessage, $this->bufferedTask($task)); |
||
| 33 | |||
| 34 | // Change the page name |
||
| 35 | $form = UserDefinedForm::get()->filter('URLSegment', 'contact')->first(); |
||
| 36 | $form->URLSegment = 'testing'; |
||
| 37 | $form->write(); |
||
| 38 | |||
| 39 | // Ensure the old version is still detected in draft, so not recreated |
||
| 40 | $this->assertNotContains($createdMessage, $this->bufferedTask($task)); |
||
| 41 | |||
| 42 | // Delete the page, then ensure it's recreated again (DataObject::delete will remove staged versions) |
||
| 43 | $form->delete(); |
||
| 44 | $this->assertContains($createdMessage, $this->bufferedTask($task)); |
||
| 45 | } |
||
| 46 | |||
| 47 | /** |
||
| 48 | * Run a BuildTask while buffering its output, and return the result |
||
| 49 | * |
||
| 50 | * @param BuildTask $task |
||
| 51 | * @return string |
||
| 52 | */ |
||
| 53 | protected function bufferedTask(BuildTask $task) |
||
| 54 | { |
||
| 55 | ob_start(); |
||
| 56 | $task->run(new HTTPRequest('GET', '/')); |
||
| 57 | return ob_get_clean(); |
||
| 58 | } |
||
| 59 | } |
||
| 60 |
The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g.
excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths