-
Notifications
You must be signed in to change notification settings - Fork 1
/
BankTransferPaymentTest.php
110 lines (91 loc) · 3.02 KB
/
BankTransferPaymentTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php
declare( strict_types=1 );
namespace WMDE\Fundraising\PaymentContext\Tests\Unit\Domain\Model;
use PHPUnit\Framework\TestCase;
use WMDE\Euro\Euro;
use WMDE\Fundraising\PaymentContext\Domain\Model\BankTransferPayment;
use WMDE\Fundraising\PaymentContext\Domain\Model\LegacyPaymentData;
use WMDE\Fundraising\PaymentContext\Domain\Model\LegacyPaymentStatus;
use WMDE\Fundraising\PaymentContext\Domain\Model\PaymentInterval;
use WMDE\Fundraising\PaymentContext\Domain\Model\PaymentReferenceCode;
/**
* @covers \WMDE\Fundraising\PaymentContext\Domain\Model\BankTransferPayment
*/
class BankTransferPaymentTest extends TestCase {
public function testGivenNewPayment_itReturnsFormattedReferenceCode(): void {
$payment = $this->makeBankTransferPayment();
$this->assertSame( 'XW-TAR-ARA-X', $payment->getPaymentReferenceCode() );
}
public function testGivenAnonymisedPayment_itReturnsFormattedString(): void {
$payment = $this->makeBankTransferPayment();
$payment->anonymise();
$this->assertSame( '', $payment->getPaymentReferenceCode() );
}
public function testGetLegacyData(): void {
$payment = BankTransferPayment::create(
1,
Euro::newFromCents( 7821 ),
PaymentInterval::Monthly,
new PaymentReferenceCode( 'XW', 'TARARA', 'X' )
);
$expectedLegacyData = new LegacyPaymentData(
7821,
1,
'UEB',
[ 'ueb_code' => 'XW-TAR-ARA-X' ],
LegacyPaymentStatus::BANK_TRANSFER->value
);
$this->assertEquals( $expectedLegacyData, $payment->getLegacyData() );
}
public function testGetLegacyDataForCancelledPayment(): void {
$payment = BankTransferPayment::create(
1,
Euro::newFromCents( 7821 ),
PaymentInterval::Monthly,
new PaymentReferenceCode( 'XW', 'TARARA', 'X' )
);
$payment->cancel();
$expectedLegacyData = new LegacyPaymentData(
7821,
1,
'UEB',
[ 'ueb_code' => 'XW-TAR-ARA-X' ],
LegacyPaymentStatus::CANCELLED->value
);
$this->assertEquals( $expectedLegacyData, $payment->getLegacyData() );
}
public function testNewPaymentIsNotCancelled(): void {
$payment = $this->makeBankTransferPayment();
$this->assertFalse( $payment->isCancelled() );
$this->assertTrue( $payment->isCancellable() );
}
public function testCancelPayment(): void {
$payment = $this->makeBankTransferPayment();
$payment->cancel();
$this->assertTrue( $payment->isCancelled() );
$this->assertFalse( $payment->isCancellable() );
}
private function makeBankTransferPayment(): BankTransferPayment {
return BankTransferPayment::create(
1,
Euro::newFromCents( 1000 ),
PaymentInterval::Monthly,
new PaymentReferenceCode( 'XW', 'TARARA', 'X' )
);
}
public function testGetDisplayDataReturnsAllFieldsToDisplay(): void {
$payment = BankTransferPayment::create(
1,
Euro::newFromCents( 7821 ),
PaymentInterval::Monthly,
new PaymentReferenceCode( 'XW', 'TARARA', 'X' )
);
$expectedOutput = [
'amount' => 7821,
'interval' => 1,
'paymentType' => 'UEB',
'ueb_code' => 'XW-TAR-ARA-X'
];
$this->assertEquals( $expectedOutput, $payment->getDisplayValues() );
}
}