Completed
Pull Request — develop (#25)
by Axel
15:47
created

FeedbackManagerTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 5
c 1
b 0
f 1
lcom 1
cbo 5
dl 0
loc 72
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 3 1
A testGetProjectFeedbacks() 0 7 1
A getEntityManagerMock() 0 13 1
A getRepositoryMock() 0 16 1
B getFeedbacksMock() 0 24 1
1
<?php
2
3
namespace Developtech\AgilityBundle\Tests\Manager;
4
5
use Developtech\AgilityBundle\Manager\FeedbackManager;
6
7
use Developtech\AgilityBundle\Tests\Mock\Feedback;
8
use Developtech\AgilityBundle\Tests\Mock\User;
9
use Developtech\AgilityBundle\Tests\Mock\Project;
10
11
class FeedbackManagerTest extends \PHPUnit_Framework_TestCase {
12
    /** @var FeedbackManager **/
13
    protected $manager;
14
15
    public function setUp() {
16
        $this->manager = new FeedbackManager($this->getEntityManagerMock(), Feature::class);
17
    }
18
19
    public function testGetProjectFeedbacks() {
20
        $feedbacks = $this->manager->getProjectFeedbacks((new Project()));
21
22
        $this->assertCount(2, $feedbacks);
23
        $this->assertInstanceOf(Feedback::class, $feedbacks[0]);
24
        $this->assertEquals(2, $feedbacks[1]->getId());
25
    }
26
27
    public function getEntityManagerMock() {
28
        $entityManagerMock = $this
29
            ->getMockBuilder('Doctrine\ORM\EntityManager')
30
            ->disableOriginalConstructor()
31
            ->getMock()
32
        ;
33
        $entityManagerMock
34
            ->expects($this->any())
35
            ->method('getRepository')
36
            ->willReturnCallback([$this, 'getRepositoryMock'])
37
        ;
38
        return $entityManagerMock;
39
    }
40
41
    public function getRepositoryMock() {
42
        $repositoryMock = $this
43
            ->getMockBuilder('Developtech\AgilityBundle\Repository\FeedbackRepository')
44
            ->disableOriginalConstructor()
45
            ->setMethods([
46
                'findByProject'
47
            ])
48
            ->getMock()
49
        ;
50
        $repositoryMock
51
            ->expects($this->any())
52
            ->method('findByProject')
53
            ->willReturnCallback([$this, 'getFeedbacksMock'])
54
        ;
55
        return $repositoryMock;
56
    }
57
58
    public function getFeedbacksMock() {
59
        return [
60
            (new Feedback())
61
            ->setId(1)
62
            ->setName('I can\'t see the calendar')
63
            ->setSlug('i-can-t-see-the-calendar')
64
            ->setDescription('Add brightness to this calendar !')
65
            ->setProject(new Project())
66
            ->setAuthor(new User())
67
            ->setDeveloper(new User())
68
            ->setCreatedAt(new \DateTime())
69
            ->setUpdatedAt(new \DateTime()),
70
            (new Feedback())
71
            ->setId(2)
72
            ->setName('The calendar is not shiny enough')
73
            ->setSlug('the-calendar-is-not-shiny-enough')
74
            ->setDescription('This calendar blew my eyes away !')
75
            ->setProject(new Project())
76
            ->setAuthor(new User())
77
            ->setDeveloper(new User())
78
            ->setCreatedAt(new \DateTime())
79
            ->setUpdatedAt(new \DateTime()),
80
        ];
81
    }
82
}
83