Completed
Pull Request — master (#16)
by Simon
06:16
created

SubmittedFormExtensionTest::testUpdateAfterProcessFields()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 20
rs 9.6
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Firesphere\PartialUserforms\Tests;
4
5
use Firesphere\PartialUserforms\Controllers\PartialSubmissionController;
6
use Firesphere\PartialUserforms\Extensions\SubmittedFormExtension;
7
use Firesphere\PartialUserforms\Models\PartialFieldSubmission;
8
use Firesphere\PartialUserforms\Models\PartialFormSubmission;
9
use SilverStripe\Control\Controller;
10
use SilverStripe\Core\Injector\Injector;
11
use SilverStripe\Dev\SapphireTest;
12
13
class SubmittedFormExtensionTest extends SapphireTest
14
{
15
    protected static $fixture_file = '../fixtures/partialformtest.yml';
16
17
    public function testClassExists()
18
    {
19
        $extension = Injector::inst()->get(SubmittedFormExtension::class);
20
21
        $this->assertInstanceOf(SubmittedFormExtension::class, $extension);
22
    }
23
24
    public function testUpdateAfterProcessForm()
25
    {
26
        $partialSubmission = $this->objFromFixture(PartialFormSubmission::class, 'submission1');
27
        Controller::curr()->getRequest()->getSession()->set(
28
            PartialSubmissionController::SESSION_KEY,
29
            $partialSubmission->ID
30
        );
31
32
        $extension = Injector::inst()->get(PartialFormSubmission::class);
33
34
        $extension->updateAfterProcess();
35
36
        $submission = PartialFormSubmission::get()->byID($partialSubmission->ID);
37
38
        $this->assertNull($submission);
39
    }
40
41
    public function testUpdateAfterProcessFields()
42
    {
43
        $partialSubmission = $this->objFromFixture(PartialFormSubmission::class, 'submission1');
44
        Controller::curr()->getRequest()->getSession()->set(
45
            PartialSubmissionController::SESSION_KEY,
46
            $partialSubmission->ID
47
        );
48
49
        $extension = Injector::inst()->get(PartialFormSubmission::class);
50
51
        $submissionFields = PartialFieldSubmission::get()->filter(['SubmittedFormID' => $partialSubmission->ID]);
52
53
        $this->assertEquals(3, $submissionFields->count());
54
55
        $extension->updateAfterProcess();
56
57
        $submissionFields = PartialFieldSubmission::get()->filter(['ParentID' => $partialSubmission->ID]);
58
59
        $this->assertEquals(0, $submissionFields->count());
60
    }
61
62
    public function testUpdateAfterProcessSession()
63
    {
64
        $partialSubmission = $this->objFromFixture(PartialFormSubmission::class, 'submission1');
65
        Controller::curr()->getRequest()->getSession()->set(
66
            PartialSubmissionController::SESSION_KEY,
67
            $partialSubmission->ID
68
        );
69
70
        $extension = Injector::inst()->get(PartialFormSubmission::class);
71
72
        $extension->updateAfterProcess();
73
74
        $session = Controller::curr()->getRequest()->getSession()->get(PartialSubmissionController::SESSION_KEY);
75
        $this->assertNull($session);
76
    }
77
}
78