Passed
Push — master ( a1de92...1a465b )
by Robbie
03:52
created

tests/Behat/Context/FixtureContext.php (2 issues)

Severity
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
$page is of type SilverStripe\ORM\DataObject, thus it always evaluated to true.
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
$element is of type SilverStripe\ORM\DataObject, thus it always evaluated to true.
Loading history...
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