Completed
Push — master ( 02e7ff...db84ac )
by
unknown
13s
created

ElementFormControllerTest::setUp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
rs 10
c 1
b 0
f 0
1
<?php
2
3
namespace DNADesign\ElementalUserForms\Tests;
4
5
use DNADesign\Elemental\Models\BaseElement;
6
use DNADesign\ElementalUserForms\Control\ElementFormController;
7
use DNADesign\ElementalUserForms\Model\ElementForm;
8
use DNADesign\ElementalUserForms\Tests\Stub\TestElement;
9
use DNADesign\ElementalUserForms\Tests\Stub\TestPage;
10
use SilverStripe\Dev\FunctionalTest;
11
use SilverStripe\UserForms\Control\UserDefinedFormController;
12
use SilverStripe\Versioned\Versioned;
13
14
class ElementFormControllerTest extends FunctionalTest
15
{
16
    protected static $fixture_file = 'ElementFormTest.yml';
17
18
    protected static $use_draft_site = true;
19
20
    protected static $extra_dataobjects = [
21
        TestPage::class,
22
        TestElement::class,
23
    ];
24
25
    public function testElementFormRendering()
26
    {
27
        $this->logInWithPermission('ADMIN');
28
        $page = $this->objFromFixture(TestPage::class, 'page1');
29
30
        $element = $this->objFromFixture(ElementForm::class, 'formelement');
31
32
        $response = $this->get($page->URLSegment);
33
        $formAction = sprintf('%s/element/%d/Form', $page->URLSegment, $element->ID);
34
35
        $this->assertContains(
36
            $formAction,
37
            $response->getBody(),
38
            'Element forms are rendered through ElementalArea templates'
39
        );
40
    }
41
42
    public function testElementFormSubmission()
43
    {
44
        $this->logInWithPermission('ADMIN');
45
        $page = $this->objFromFixture(TestPage::class, 'page1');
46
47
        $element = $this->objFromFixture(TestElement::class, 'element1');
0 ignored issues
show
Unused Code introduced by
The assignment to $element is dead and can be removed.
Loading history...
48
49
        $response = $this->get($page->URLSegment);
0 ignored issues
show
Unused Code introduced by
The assignment to $response is dead and can be removed.
Loading history...
50
51
        $response = $this->submitForm('UserForm_Form_2', 'action_process', ['TestValue' => 'Updated']);
52
        $this->assertContains(
53
            'received your submission',
54
            $response->getBody(),
55
            'Form values are submitted to correct element form'
56
        );
57
    }
58
59
    public function testUserFormControllerInitIsCalled()
60
    {
61
        $userFormControllerMock = $this->getMockBuilder(UserDefinedFormController::class)
62
            ->setMethods(['doInit'])
63
            ->getMock();
64
65
        $userFormControllerMock->expects($this->once())->method('doInit');
66
67
        $controller = new ElementFormController(new BaseElement);
68
        $controller->getRequest()->setSession($this->session());
69
        $controller->setUserFormController($userFormControllerMock);
70
71
        $this->assertSame($userFormControllerMock, $controller->getUserFormController());
72
        $controller->doInit();
73
    }
74
}
75