Passed
Push — develop ( 726e4d...2a8883 )
by Luís
37s
created

PreApprovalServiceTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
c 1
b 0
f 0
lcom 1
cbo 5
dl 0
loc 50
rs 10
1
<?php
2
namespace PHPSC\PagSeguro\Requests\PreApprovals;
3
4
use PHPSC\PagSeguro\Client\Client;
5
use PHPSC\PagSeguro\Credentials;
6
use PHPSC\PagSeguro\Requests\Redirection;
7
use SimpleXMLElement;
8
9
/**
10
 * @author Renato Moura <[email protected]>
11
 */
12
class PreApprovalServiceTest extends \PHPUnit_Framework_TestCase
13
{
14
    /**
15
     * @test
16
     */
17
    public function createRequestBuilderShouldDoReturnObject()
18
    {
19
        $credentials = $this->createMock(Credentials::class);
20
        $client      = $this->createMock(Client::class);
21
22
        $service = new PreApprovalService($credentials, $client);
23
24
        $this->assertAttributeEquals($credentials, 'credentials', $service);
25
        $this->assertAttributeEquals($client, 'client', $service);
26
27
        $this->assertEquals(new RequestBuilder(true), $service->createRequestBuilder());
28
        $this->assertEquals(new RequestBuilder(false), $service->createRequestBuilder(false));
29
    }
30
31
    /**
32
     * @test
33
     */
34
    public function aproveShouldReturningTheRedirection()
35
    {
36
        $request = $this->createMock(Request::class);
37
        $response = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><response/>');
38
        $xmlSerialize = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><request/>');
39
        $redirect = $this->createMock(Redirection::class);
40
41
        $credentials = $this->createMock(Credentials::class);
42
        $client      = $this->createMock(Client::class);
43
44
        $request->expects($this->once())
45
                   ->method('xmlSerialize')
46
                   ->willReturn($xmlSerialize);
47
48
        $service = $this->getMockBuilder(PreApprovalService::class)
49
                        ->setMethods(['post', 'getRedirection'])
50
                        ->setConstructorArgs([$credentials, $client])
51
                        ->disableOriginalClone()
52
                        ->getMock();
53
54
        $service->expects($this->once())
55
                ->method('post')
56
                ->with(PreApprovalService::ENDPOINT, $xmlSerialize)
57
                ->willReturn($response);
58
59
        $service->expects($this->once())
60
            ->method('getRedirection')
61
            ->with($response)
62
            ->willReturn($redirect);
63
64
        $this->assertEquals($redirect, $service->approve($request));
65
    }
66
}
67