Completed
Push — master ( cd60cf...f7a4c7 )
by
unknown
22s
created

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

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) {
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) {
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);
0 ignored issues
show
The method getDestinationConfigFolder() does not exist on DNADesign\Elemental\Test...\Context\FixtureContext. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

70
        /** @scrutinizer ignore-call */ 
71
        $path = $this->getDestinationConfigFolder($file);

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
71
        file_put_contents($path, $config);
72
73
        $this->activatedConfigFiles[] = $path;
0 ignored issues
show
Bug Best Practice introduced by
The property activatedConfigFiles does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
74
75
        $this->getMainContext()->visit('/?flush');
76
    }
77
}
78