silverstripe /
silverstripe-elemental
| 1 | <?php |
||
| 2 | namespace DNADesign\Elemental\Tests\Behat\Context; |
||
| 3 | |||
| 4 | use DNADesign\Elemental\Models\ElementContent; |
||
| 5 | use SilverStripe\BehatExtension\Context\FixtureContext as BaseFixtureContext; |
||
| 6 | |||
| 7 | if (!class_exists(BaseFixtureContext::class)) { |
||
| 8 | return; |
||
| 9 | } |
||
| 10 | /** |
||
| 11 | * Context used to create fixtures in the SilverStripe ORM. |
||
| 12 | */ |
||
| 13 | class FixtureContext extends BaseFixtureContext |
||
| 14 | { |
||
| 15 | /** |
||
| 16 | * @Given /(?:the|a) "([^"]+)" "([^"]+)" (?:with|has) a "([^"]+)" content element with "(.*)" content/ |
||
| 17 | * |
||
| 18 | * @param string $pageTitle |
||
| 19 | * @param string $type |
||
| 20 | * @param string $elementTitle |
||
| 21 | * @param string $elementContent |
||
| 22 | */ |
||
| 23 | public function theHasAContentElementWithContent($type, $pageTitle, $elementTitle, $elementContent) |
||
| 24 | { |
||
| 25 | // Create the page (ElementalArea is created on write and attached to it) |
||
| 26 | $targetClass = $this->convertTypeToClass($type); |
||
| 27 | |||
| 28 | $page = $this->getFixtureFactory()->get($targetClass, $pageTitle); |
||
| 29 | if (!$page) { |
||
|
0 ignored issues
–
show
introduced
by
Loading history...
|
|||
| 30 | $page = $this->getFixtureFactory()->createObject($targetClass, $pageTitle); |
||
| 31 | } |
||
| 32 | |||
| 33 | $elementalArea = $page->ElementalArea(); |
||
| 34 | $elementalArea->Elements()->add( |
||
| 35 | $this->getFixtureFactory()->createObject(ElementContent::class, $elementTitle) |
||
| 36 | ); |
||
| 37 | |||
| 38 | // Create element |
||
| 39 | $element = $this->getFixtureFactory()->get(ElementContent::class, $elementTitle); |
||
| 40 | |||
| 41 | if ($element) { |
||
|
0 ignored issues
–
show
|
|||
| 42 | $element->HTML = $elementContent; |
||
| 43 | $element->write(); |
||
| 44 | } else { |
||
| 45 | $element = $this->getFixtureFactory()->createObject(ElementContent::class, $elementTitle, [ |
||
| 46 | 'Title' => $elementTitle, |
||
| 47 | 'HTML' => $elementContent |
||
| 48 | ]); |
||
| 49 | $element->write(); |
||
| 50 | } |
||
| 51 | } |
||
| 52 | |||
| 53 | /** |
||
| 54 | * @Given content blocks are not in-line editable |
||
| 55 | * |
||
| 56 | * @param $elementTitle |
||
| 57 | */ |
||
| 58 | public function contentBlocksAreNotInLineEditable() |
||
| 59 | { |
||
| 60 | $contentBlockClass = ElementContent::class; |
||
| 61 | $config = <<<YAML |
||
| 62 | --- |
||
| 63 | Name: testonly-content-blocks-not-inline-editable |
||
| 64 | --- |
||
| 65 | $contentBlockClass: |
||
| 66 | inline_editable: false |
||
| 67 | YAML; |
||
| 68 | |||
| 69 | $file = 'content-blocks-not-inline-editable.yml'; |
||
| 70 | $path = $this->getDestinationConfigFolder($file); |
||
| 71 | file_put_contents($path ?? '', $config); |
||
| 72 | |||
| 73 | $this->activatedConfigFiles[] = $path; |
||
| 74 | |||
| 75 | $this->getMainContext()->visit('/?flush'); |
||
| 76 | } |
||
| 77 | } |
||
| 78 |