ReplyBuilderTest   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 88
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 4
dl 0
loc 88
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 9 1
A testInterface() 0 4 1
A testBuild() 0 15 1
B testBuildCallsTheBuilderModel() 0 43 1
1
<?php
2
3
/*
4
 * This file is part of the MilioooMessageBundle package.
5
 *
6
 * (c) Michiel boeckaert <[email protected]>
7
 * This source file is subject to the MIT license that is bundled
8
 * with this source code in the file LICENSE.
9
 */
10
11
namespace Miliooo\Messaging\Tests\Builder\Message;
12
13
use Miliooo\Messaging\Builder\Message\ReplyBuilder;
14
use Miliooo\Messaging\Builder\Model\ReplyBuilderModel;
15
use Miliooo\Messaging\Form\FormModel\ReplyMessage;
16
use Miliooo\Messaging\TestHelpers\ThreadModelTestHelper;
17
18
/**
19
 * Description of ReplyBuilderTest
20
 *
21
 * @author Michiel Boeckaert <[email protected]>
22
 */
23
class ReplyBuilderTest extends \PHPUnit_Framework_TestCase
24
{
25
    /**
26
     * The class under test
27
     * @var ReplyBuilder
28
     */
29
    private $builder;
30
31
    /**
32
     * @var ThreadModelTestHelper
33
     */
34
    protected $threadModelHelper;
35
36
    public function setUp()
37
    {
38
        $this->builder = new ReplyBuilder();
39
        $this->builder->setMessageClass('\Miliooo\Messaging\TestHelpers\Model\Message');
40
        $this->builder->setThreadClass('\Miliooo\Messaging\TestHelpers\Model\Thread');
41
        $this->builder->setMessageMetaClass('\Miliooo\Messaging\TestHelpers\Model\MessageMeta');
42
        $this->builder->setThreadMetaClass('\Miliooo\Messaging\TestHelpers\Model\ThreadMeta');
43
        $this->threadModelHelper = new ThreadModelTestHelper();
44
    }
45
46
    public function testInterface()
47
    {
48
        $this->assertInstanceOf('Miliooo\Messaging\Builder\Message\ReplyBuilderInterface', $this->builder);
49
    }
50
51
    public function testBuild()
52
    {
53
        $thread = $this->threadModelHelper->getModelThread();
54
        $sender = $this->threadModelHelper->getSender();
55
56
        $replyMessageModel = new ReplyMessage();
57
        $replyMessageModel->setBody('the body');
58
        $replyMessageModel->setSender($sender);
59
        $replyMessageModel->setThread($thread);
60
        $replyMessageModel->setCreatedAt(new \DateTime('now'));
61
62
        $replyBuilderModel = new ReplyBuilderModel($replyMessageModel);
63
        $build = $this->builder->build($replyBuilderModel);
64
        $this->assertInstanceOf('Miliooo\Messaging\Model\ThreadInterface', $build);
65
    }
66
67
    public function testBuildCallsTheBuilderModel()
68
    {
69
        $thread = $this->threadModelHelper->getModelThread();
70
        $sender = $this->threadModelHelper->getSender();
71
        $replyMessageModel = new ReplyMessage();
72
        $replyMessageModel->setBody('the body');
73
        $replyMessageModel->setSender($sender);
74
        $replyMessageModel->setThread($thread);
75
        $replyMessageModel->setCreatedAt(new \DateTime('now'));
76
77
        $replyBuilderModel = $this->getMockBuilder('Miliooo\Messaging\Builder\Model\ReplyBuilderModel')
78
            ->disableOriginalConstructor()
79
            ->getMock();
80
81
        $replyBuilderModel->expects($this->at(0))->method('getSender')
82
            ->will($this->returnValue($sender));
83
        $replyBuilderModel->expects($this->at(1))->method('getThread')
84
            ->will($this->returnValue($thread));
85
        $replyBuilderModel->expects($this->at(2))->method('getMessageData')
86
            ->with(null);
87
        $replyBuilderModel->expects($this->at(3))->method('getMessageMeta')
88
            ->with('all');
89
        $replyBuilderModel->expects($this->at(4))->method('getMessageMeta')
90
            ->with('sender');
91
        $replyBuilderModel->expects($this->at(5))->method('getMessageMeta')
92
            ->with('all');
93
        $replyBuilderModel->expects($this->at(6))->method('getMessageMeta')
94
            ->with('recipients');
95
        $replyBuilderModel->expects($this->at(7))->method('getThreadMeta')
96
            ->with($this->equalTo('all'));
97
        $replyBuilderModel->expects($this->at(8))->method('getThreadMeta')
98
            ->with('sender');
99
        $replyBuilderModel->expects($this->at(9))->method('getThreadMeta')
100
            ->with('all');
101
        $replyBuilderModel->expects($this->at(10))->method('getThreadMeta')
102
            ->with('recipients');
103
        //2 times for all, one time for sender, one time for recipient
104
        $replyBuilderModel->expects($this->exactly(4))->method('getMessageMeta');
105
        //2 times for all, one time for sender, one time for recipient
106
        $replyBuilderModel->expects($this->exactly(4))->method('getThreadMeta');
107
108
        $this->builder->build($replyBuilderModel);
109
    }
110
}
111