Passed
Pull Request — master (#56)
by Robbie
02:14
created

LockCommandTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 46
Duplicated Lines 100 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 2
dl 46
loc 46
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A tearDown() 9 9 3
A getTestCommand() 4 4 1
A testExecute() 11 11 1
A createMember() 8 8 1

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 SilverLeague\Console\Tests\Command\Member;
4
5
use SilverLeague\Console\Tests\Command\AbstractCommandTest;
6
use SilverStripe\Security\Member;
7
8
/**
9
 * Test the lock member command
10
 *
11
 * @package silverstripe-console
12
 * @author  Robbie Averill <[email protected]>
13
 */
14 View Code Duplication
class LockCommandTest extends AbstractCommandTest
15
{
16
    /**
17
     * Delete fixtured members after tests have run
18
     */
19
    protected function tearDown()
20
    {
21
        parent::tearDown();
22
23
        $testMember = Member::get()->filter(['Email' => '[email protected]'])->first();
24
        if ($testMember && $testMember->exists()) {
25
            $testMember->delete();
26
        }
27
    }
28
29
    protected function getTestCommand()
30
    {
31
        return 'member:lock';
32
    }
33
34
    public function testExecute()
35
    {
36
        $member = $this->createMember();
37
        $this->assertFalse($member->isLockedOut());
38
39
        $tester = $this->executeTest(['email' => '[email protected]']);
40
        /** @var Member $member */
41
        $member = Member::get()->byID($member->ID);
42
        $this->assertContains('Member [email protected] locked for', $tester->getDisplay());
43
        $this->assertTrue($member->isLockedOut());
44
    }
45
46
    /**
47
     * Creates a dummy user for testing with
48
     *
49
     * @return Member
50
     */
51
    protected function createMember()
52
    {
53
        $member = Member::create();
54
        $member->Email = '[email protected]';
55
        $member->Password = 'Opensesame1';
56
        $member->write();
57
        return $member;
58
    }
59
}
60