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

PartialSubmissionTaskTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 63
Duplicated Lines 46.03 %

Coupling/Cohesion

Components 1
Dependencies 9

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 9
dl 29
loc 63
rs 10
c 0
b 0
f 0

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
namespace Firesphere\PartialUserforms\Tests;
4
5
use Firesphere\PartialUserforms\Tasks\PartialSubmissionTask;
6
use SilverStripe\Control\HTTPRequest;
7
use SilverStripe\Core\Config\Config;
8
use SilverStripe\Core\Injector\Injector;
9
use SilverStripe\Dev\SapphireTest;
10
use SilverStripe\Security\Member;
11
use SilverStripe\Security\Security;
12
use Symbiote\QueuedJobs\Services\QueuedJobService;
13
14
class PartialSubmissionTaskTest extends SapphireTest
15
{
16
    /**
17
     * @var bool
18
     */
19
    protected $usesDatabase = true;
20
21
    public function testTitle()
22
    {
23
        $task = Injector::inst()->get(PartialSubmissionTask::class);
24
        $this->assertEquals('Export partial form submissions to email address', $task->getTitle());
25
    }
26
27
    public function testRun()
28
    {
29
        SiteConfigHelper::setupSiteConfig('[email protected]', null, true);
30
        $request = new HTTPRequest('GET', 'dev/tasks/partialsubmissiontask');
31
32
        /** @var PartialSubmissionTask $task */
33
        $task = Injector::inst()->get(PartialSubmissionTask::class);
34
35
        $task->run($request);
36
37
        $this->assertEmailSent('[email protected]');
38
    }
39
40
    public function testExtraUser()
41
    {
42
        SiteConfigHelper::setupSiteConfig('[email protected]', null, true);
43
        $user = Member::create(['FirstName' => 'Test', 'Email' => '[email protected]']);
44
        $user->write();
45
        Security::setCurrentUser($user);
46
        $request = new HTTPRequest('GET', 'dev/tasks/partialsubmissiontask');
47
48
        $task = new PartialSubmissionTask();
49
50
        $task->run($request);
51
52
        $this->assertEmailSent('[email protected]');
53
        $this->assertEmailSent('[email protected]');
54
    }
55
56
    public function testNoConfigButUser()
57
    {
58
        $user = Member::create(['FirstName' => 'Test', 'Email' => '[email protected]']);
59
        $user->write();
60
        Security::setCurrentUser($user);
61
        SiteConfigHelper::setupSiteConfig(null, null, true);
62
        $request = new HTTPRequest('GET', 'dev/tasks/partialsubmissiontask');
63
64
        $task = new PartialSubmissionTask();
65
66
        $task->run($request);
67
68
        $this->assertEmailSent('[email protected]');
69
    }
70
71
    protected function setUp()
72
    {
73
        parent::setUp();
74
        Config::modify()->set(QueuedJobService::class, 'use_shutdown_function', false);
75
    }
76
}
77