Skip to content

Commit

Permalink
API Replace Extension subclasses
Browse files Browse the repository at this point in the history
  • Loading branch information
emteknetnz committed Aug 23, 2024
1 parent 13186bb commit cf923c2
Showing 1 changed file with 16 additions and 4 deletions.
20 changes: 16 additions & 4 deletions src/Context/FixtureContext.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
use SilverStripe\Dev\FixtureFactory;
use SilverStripe\Dev\YamlFixture;
use SilverStripe\ORM\Connect\TempDatabase;
use SilverStripe\ORM\DataExtension;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DB;
use SilverStripe\Security\Group;
Expand Down Expand Up @@ -694,16 +693,18 @@ public function stepGoToNamedRecord($type, $id)
/**
* @param $extension
* @param $class
* @param $flushOnly - use ?flush=1 instead of dev/build?flush=1
*
* @Given I add an extension :extension to the :class class
*/
public function iAddAnExtensionToTheClass($extension, $class)
public function iAddAnExtensionToTheClass($extension, $class, bool $flushOnly = false)
{
// Validate the extension
Assert::assertTrue(
class_exists($extension ?? '') && is_subclass_of($extension, Extension::class),
'Given extension does not extend Extension'
);
/** @var Extension $extension */

// Add the extension to the CLI context
/** @var Extensible $targetClass */
Expand Down Expand Up @@ -741,14 +742,25 @@ class_exists($extension ?? '') && is_subclass_of($extension, Extension::class),
// Remember to cleanup...
$this->activatedConfigFiles[] = $destPath;

// Flush website. We'll need to dev/build too if it's a DataExtension
if (is_subclass_of($extension, DataExtension::class)) {
// Flush website. We'll need to dev/build too if it's a DataObject
if (is_subclass_of($targetClass, DataObject::class) && !$flushOnly) {
$this->getMainContext()->visit('/dev/build?flush');
} else {
$this->getMainContext()->visit('/?flush');
}
}

/**
* @param $extension
* @param $class
*
* @Given I add an extension :extension to the :class class and flush only
*/
public function iAddAnExtensionToTheClassAndFlushOnly(string $extension, string $class): void
{
$this->iAddAnExtensionToTheClass($extension, $class, true);
}

/**
* Get the destination folder for config and assert the given file name doesn't exist within in.
*
Expand Down

0 comments on commit cf923c2

Please sign in to comment.