Passed
Push — master ( b5dd0a...3bec69 )
by
unknown
07:48
created

NewsletterListCollectionTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 81
Duplicated Lines 19.75 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
dl 16
loc 81
c 0
b 0
f 0
wmc 6
lcom 1
cbo 3
rs 10

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 DansMaCulotte\Newsletter\Test;
4
5
use PHPUnit\Framework\TestCase;
6
use DansMaCulotte\Newsletter\NewsletterList;
7
use DansMaCulotte\Newsletter\NewsletterListCollection;
8
use DansMaCulotte\Newsletter\Exceptions\InvalidNewsletterList;
9
10
class NewsletterListCollectionTest extends TestCase
11
{
12
    protected $newsletterListCollection;
13
14
    public function setUp() : void
15
    {
16
        parent::setUp();
17
18
        $this->newsletterListCollection = NewsletterListCollection::createFromConfig(
19
            [
20
                'lists' => [
21
                    'list1' => ['id' => 1],
22
                    'list2' => ['id' => 2],
23
                    'list3' => ['id' => 3],
24
                ],
25
                'defaultList' => 'list3',
26
            ]
27
        );
28
    }
29
30
    /** @test */
31
    public function it_can_find_a_list_by_its_name()
32
    {
33
        $list = $this->newsletterListCollection->findByName('list2');
34
35
        $this->assertInstanceOf(NewsletterList::class, $list);
36
37
        $this->assertEquals(2, $list->getId());
38
    }
39
40
    /** @test */
41
    public function it_will_use_the_default_list_when_not_specifing_a_listname()
42
    {
43
        $list = $this->newsletterListCollection->findByName('');
44
45
        $this->assertInstanceOf(NewsletterList::class, $list);
46
47
        $this->assertEquals(3, $list->getId());
48
    }
49
50
    /** @test */
51
    public function it_will_throw_an_exception_when_using_a_default_list_that_does_not_exist()
52
    {
53
        $newsletterListCollection = NewsletterListCollection::createFromConfig(
54
            [
55
                'lists' => [
56
                    'list1' => ['id' => 'list1'],
57
                ],
58
59
                'defaultList' => 'list2',
60
            ]
61
        );
62
63
        $this->expectException(InvalidNewsletterList::class);
64
65
        $newsletterListCollection->findByName('');
66
    }
67
68
    /** @test */
69
    public function it_will_throw_an_exception_when_there_are_no_lists_defined()
70
    {
71
        $this->expectException(InvalidNewsletterList::class);
72
73
        NewsletterListCollection::createFromConfig(
74
            [
75
                'lists' => [
76
                ],
77
78
                'defaultList' => 'list1',
79
            ]
80
        );
81
    }
82
83
    /** @test */
84
    public function it_will_throw_an_exception_when_trying_to_find_a_list_that_does_not_exist()
85
    {
86
        $this->expectException(InvalidNewsletterList::class);
87
88
        $this->newsletterListCollection->findByName('blabla');
89
    }
90
}
91