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 |