Passed
Push — master ( 1eeb90...3a73e7 )
by Stefan
01:29
created

SepaTxInfTest::testValidate()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 11
nc 1
nop 0
dl 0
loc 15
rs 9.9
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace SKien\Test\Sepa;
5
6
use PHPUnit\Framework\TestCase;
7
use SKien\Sepa\Sepa;
8
use SKien\Sepa\SepaTxInf;
9
use DateTime;
10
11
/**
12
 * SepaTxInf test case.
13
 */
14
class SepaTxInfTest extends TestCase
15
{
16
    const validIBAN = 'DE11 6829 0000 0009 2158 08';
17
    const validBIC = 'GENODE61LAH';
18
    const invalidIBAN = 'DE21 6829 0000 0009 2158 08';
19
    const invalidBIC = 'GEN0DE61LAH';
20
21
    public function test__construct()
22
    {
23
        $oTxInf = new SepaTxInf(Sepa::CCT);
24
        $this->assertSame(Sepa::CCT, $oTxInf->getType());
25
        $oTxInf = new SepaTxInf(Sepa::CDD);
26
        $this->assertSame(Sepa::CDD, $oTxInf->getType());
27
    }
28
29
    public function test__constructError()
30
    {
31
        $this->expectError();
32
        $oTxInf = new SepaTxInf('invalid');
33
        $oTxInf->getType();
34
    }
35
36
    public function testFromArray()
37
    {
38
        $aValidTransaction = array(
39
            'dblValue' => 104.45,
40
            'strDescription' => 'Test Betreff 1',
41
            'strName' => 'Mustermann, Max',
42
            'strIBAN' => self::validIBAN,
43
            'strBIC' => self::validBIC,
44
            'strMandateId' => 'ID-0815',
45
            'strDateOfSignature' => '2018-04-03',
46
            'strUltimateName' => 'Ultimate Name',
47
            'strPaymentId' => 'PmtID'
48
        );
49
        $oTxInf = new SepaTxInf(Sepa::CDD);
50
        $oTxInf->fromArray($aValidTransaction);
51
        $this->assertEquals(self::validIBAN, $oTxInf->getIBAN());
52
        $this->assertEquals(self::validBIC, $oTxInf->getBIC());
53
        $this->assertEquals('Mustermann, Max', $oTxInf->getName());
54
        $this->assertEquals('Test Betreff 1', $oTxInf->getDescription());
55
        $this->assertEquals(104.45, $oTxInf->getValue());
56
        $this->assertEquals('ID-0815', $oTxInf->getMandateId());
57
        $this->assertEquals('Ultimate Name', $oTxInf->getUltimateName());
58
        $this->assertEquals('PmtID', $oTxInf->getPaymentId());
59
        $this->assertEquals('2018-04-03', $oTxInf->getDateOfSignature());
60
    }
61
62
    public function testSetDateOfSignature()
63
    {
64
        $oDT = new DateTime();
65
        $oDT->setDate(2020, 10, 23);
66
        $oTxInf = new SepaTxInf(Sepa::CDD);
67
        $oTxInf->setDateOfSignature($oDT);
68
        $this->assertEquals('2020-10-23', $oTxInf->getDateOfSignature());
69
70
        $uxdt = mktime(0, 0, 0, 9, 15, 2019);
71
        $oTxInf->setDateOfSignature($uxdt);
72
        $this->assertEquals('2019-09-15', $oTxInf->getDateOfSignature());
73
    }
74
75
    public function testValidate()
76
    {
77
        $oTxInf = new SepaTxInf(Sepa::CDD);
78
        $oTxInf->setIBAN(self::validIBAN);
79
        $oTxInf->setBIC(self::validBIC);
80
        $oTxInf->setName('Testname');
81
        $oTxInf->setDescription('Testdescription');
82
        $oTxInf->setValue(123.45);
83
        $oTxInf->setMandateId('MD1234');
84
        $oTxInf->setDateOfSignature('2019-06-09');
85
86
        $this->assertEquals(0, $oTxInf->validate());
87
88
        $oTxInf->setPaymentId('');
89
        $this->assertEquals(0, $oTxInf->validate());
90
    }
91
92
    public function testValidateInvalid()
93
    {
94
        $oTxInf = new SepaTxInf(Sepa::CDD);
95
        $oTxInf->setIBAN(self::invalidIBAN);
96
        $oTxInf->setBIC(self::invalidBIC);
97
        $oTxInf->setName('Testname');
98
        $oTxInf->setDescription('Testdescription');
99
        $oTxInf->setValue(123.45);
100
        $oTxInf->setMandateId('MD1234');
101
        $oTxInf->setDateOfSignature('201-06-09');
102
        $iExpectedErr = Sepa::ERR_TX_INVALID_IBAN | Sepa::ERR_TX_INVALID_BIC | Sepa::ERR_TX_INVALID_MAND_DOS;
103
        $this->assertEquals($iExpectedErr, $oTxInf->validate());
104
105
        Sepa::setValidationLevel(Sepa::V_NO_IBAN_VALIDATION | Sepa::V_NO_BIC_VALIDATION);
106
        $this->assertEquals(Sepa::ERR_TX_INVALID_MAND_DOS, $oTxInf->validate());
107
108
        Sepa::setValidationLevel(Sepa::V_NO_VALIDATION);
109
        $this->assertEquals(0, $oTxInf->validate());
110
    }
111
112
    public function testValidateMissing()
113
    {
114
        Sepa::setValidationLevel(Sepa::V_FULL_VALIDATION);
115
        $oTxInf = new SepaTxInf(Sepa::CDD);
116
        $iExpectedErr =
117
            Sepa::ERR_TX_IBAN_MISSING |
118
            Sepa::ERR_TX_BIC_MISSING |
119
            Sepa::ERR_TX_NAME_MISSING |
120
            Sepa::ERR_TX_DESCR_MISSING |
121
            Sepa::ERR_TX_ZERO_VALUE |
122
            Sepa::ERR_TX_MAND_ID_MISSING |
123
            Sepa::ERR_TX_MAND_DOS_MISSING;
124
125
        $this->assertEquals($iExpectedErr, $oTxInf->validate());
126
    }
127
128
    public function testErrorMsg()
129
    {
130
        $oTxInf = new SepaTxInf(Sepa::CDD);
131
        $this->assertNotEmpty($oTxInf->errorMsg(Sepa::ERR_TX_IBAN_MISSING));
132
    }
133
}
134
135