PaymentDetailsTest   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 228
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 9
lcom 1
cbo 2
dl 0
loc 228
rs 10
c 0
b 0
f 0

9 Methods

Rating   Name   Duplication   Size   Complexity  
A testEmptyDetails() 0 14 1
A testTime() 0 19 1
A testExpires() 0 21 1
A testMerchantData() 0 21 1
A testPaymentUrl() 0 21 1
A testMemo() 0 21 1
A testNetwork() 0 23 1
A testOutput() 0 29 1
A testOutputs() 0 47 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Bip70\Test\Protobuf\Proto;
6
7
use Bip70\Protobuf\Proto\Output;
8
use Bip70\Protobuf\Proto\PaymentDetails;
9
use PHPUnit\Framework\TestCase;
10
11
class PaymentDetailsTest extends TestCase
12
{
13
    public function testEmptyDetails()
14
    {
15
        $now = time();
16
        $details = new PaymentDetails();
17
        $details->setTime($now);
18
19
        $binary = $details->serialize();
20
21
        $parsed = new PaymentDetails();
22
        $parsed->parse($binary);
23
24
        $this->assertEquals($details->hasTime(), $parsed->hasTime());
25
        $this->assertEquals($details->getTime(), $parsed->getTime());
26
    }
27
28
    public function testTime()
29
    {
30
        $now = time();
31
        $details = new PaymentDetails();
32
33
        $this->assertFalse($details->hasTime());
34
        $details->setTime($now);
35
        $this->assertTrue($details->hasTime());
36
37
        $parsed = new PaymentDetails();
38
        $parsed->parse($details->serialize());
39
40
        $this->assertEquals($now, $details->getTime());
41
        $this->assertEquals($details->hasTime(), $parsed->hasTime());
42
        $this->assertEquals($details->getTime(), $parsed->getTime());
43
44
        $details->clearTime();
45
        $this->assertFalse($details->hasTime());
46
    }
47
48
    public function testExpires()
49
    {
50
        $now = time();
51
        $expire = time() + 900;
52
        $details = new PaymentDetails();
53
        $details->setTime($now);
54
55
        $this->assertFalse($details->hasExpires());
56
        $details->setExpires($expire);
57
        $this->assertTrue($details->hasExpires());
58
59
        $parsed = new PaymentDetails();
60
        $parsed->parse($details->serialize());
61
62
        $this->assertEquals($expire, $details->getExpires());
63
        $this->assertEquals($details->hasExpires(), $parsed->hasExpires());
64
        $this->assertEquals($details->getExpires(), $parsed->getExpires());
65
66
        $details->clearExpires();
67
        $this->assertFalse($details->hasExpires());
68
    }
69
70
    public function testMerchantData()
71
    {
72
        $now = time();
73
        $merchantData = "abcd1234";
74
        $details = new PaymentDetails();
75
        $details->setTime($now);
76
77
        $this->assertFalse($details->hasMerchantData());
78
        $details->setMerchantData($merchantData);
79
        $this->assertTrue($details->hasMerchantData());
80
81
        $parsed = new PaymentDetails();
82
        $parsed->parse($details->serialize());
83
84
        $this->assertEquals($merchantData, $details->getMerchantData());
85
        $this->assertEquals($details->hasMerchantData(), $parsed->hasMerchantData());
86
        $this->assertEquals($details->getMerchantData(), $parsed->getMerchantData());
87
88
        $details->clearMerchantData();
89
        $this->assertFalse($details->hasMerchantData());
90
    }
91
92
    public function testPaymentUrl()
93
    {
94
        $now = time();
95
        $paymentUrl = "https://website.com/payment?id=123";
96
        $details = new PaymentDetails();
97
        $details->setTime($now);
98
99
        $this->assertFalse($details->hasPaymentUrl());
100
        $details->setPaymentUrl($paymentUrl);
101
        $this->assertTrue($details->hasPaymentUrl());
102
103
        $parsed = new PaymentDetails();
104
        $parsed->parse($details->serialize());
105
106
        $this->assertEquals($paymentUrl, $details->getPaymentUrl());
107
        $this->assertEquals($details->hasPaymentUrl(), $parsed->hasPaymentUrl());
108
        $this->assertEquals($details->getPaymentUrl(), $parsed->getPaymentUrl());
109
110
        $details->clearPaymentUrl();
111
        $this->assertFalse($details->hasPaymentUrl());
112
    }
113
114
    public function testMemo()
115
    {
116
        $now = time();
117
        $memo = "abcd1234";
118
        $details = new PaymentDetails();
119
        $details->setTime($now);
120
121
        $this->assertFalse($details->hasMemo());
122
        $details->setMemo($memo);
123
        $this->assertTrue($details->hasMemo());
124
125
        $parsed = new PaymentDetails();
126
        $parsed->parse($details->serialize());
127
128
        $this->assertEquals($memo, $details->getMemo());
129
        $this->assertEquals($details->hasMemo(), $parsed->hasMemo());
130
        $this->assertEquals($details->getMemo(), $parsed->getMemo());
131
132
        $details->clearMemo();
133
        $this->assertFalse($details->hasMemo());
134
    }
135
136
    public function testNetwork()
137
    {
138
        $now = time();
139
        $network = "test";
140
        $details = new PaymentDetails();
141
        $details->setTime($now);
142
143
        $this->assertTrue($details->hasNetwork());
144
        $this->assertEquals("main", $details->getNetwork());
145
146
        $details->setNetwork($network);
147
        $this->assertTrue($details->hasNetwork());
148
        $this->assertEquals($network, $details->getNetwork());
149
150
        $parsed = new PaymentDetails();
151
        $parsed->parse($details->serialize());
152
153
        $this->assertEquals($details->hasNetwork(), $parsed->hasNetwork());
154
        $this->assertEquals($details->getNetwork(), $parsed->getNetwork());
155
156
        $details->clearNetwork();
157
        $this->assertFalse($details->hasNetwork());
158
    }
159
160
    public function testOutput()
161
    {
162
        $now = time();
163
        $output = new Output();
164
        $output->setAmount(123123123);
165
        $output->setScript("p2pkh....");
166
167
        $details = new PaymentDetails();
168
        $details->setTime($now);
169
170
        $this->assertFalse($details->hasOutputs());
171
        $details->setOutputs($output, 0);
172
        $this->assertTrue($details->hasOutputs());
173
174
        $this->assertCount(1, $details->getOutputsList());
175
176
        $parsed = new PaymentDetails();
177
        $parsed->parse($details->serialize());
178
179
        $this->assertEquals($output->getAmount(), $details->getOutputs(0)->getAmount());
180
        $this->assertEquals($output->getScript(), $details->getOutputs(0)->getScript());
181
182
        $this->assertTrue($parsed->hasOutputs());
183
        $this->assertEquals($output->getAmount(), $parsed->getOutputs(0)->getAmount());
184
        $this->assertEquals($output->getScript(), $parsed->getOutputs(0)->getScript());
185
186
        $details->clearOutputs();
187
        $this->assertFalse($details->hasOutputs());
188
    }
189
190
191
    public function testOutputs()
192
    {
193
        $now = time();
194
        $output1 = new Output();
195
        $output1->setAmount(123123123);
196
        $output1->setScript("p2pkh....");
197
198
        $output2 = new Output();
199
        $output2->setAmount(424242);
200
        $output2->setScript("a.different.p2pkh....");
201
202
        $details = new PaymentDetails();
203
        $details->setTime($now);
204
205
        $this->assertFalse($details->hasOutputs());
206
        $details->setOutputs($output1, 0);
207
        $details->setOutputs($output2, 1);
208
        $this->assertTrue($details->hasOutputs());
209
210
        $this->assertCount(2, $details->getOutputsList());
211
212
        $parsed = new PaymentDetails();
213
        $parsed->parse($details->serialize());
214
215
        $this->assertEquals($output1->getAmount(), $details->getOutputs(0)->getAmount());
216
        $this->assertEquals($output1->getScript(), $details->getOutputs(0)->getScript());
217
        $this->assertEquals($output2->getAmount(), $details->getOutputs(1)->getAmount());
218
        $this->assertEquals($output2->getScript(), $details->getOutputs(1)->getScript());
219
220
        $this->assertTrue($parsed->hasOutputs());
221
        $this->assertEquals($output1->getAmount(), $parsed->getOutputs(0)->getAmount());
222
        $this->assertEquals($output1->getScript(), $parsed->getOutputs(0)->getScript());
223
        $this->assertEquals($output2->getAmount(), $parsed->getOutputs(1)->getAmount());
224
        $this->assertEquals($output2->getScript(), $parsed->getOutputs(1)->getScript());
225
226
        $details->clearOutputs();
227
        $this->assertFalse($details->hasOutputs());
228
229
        $details->addOutputs($output1);
230
        $details->addOutputs($output2);
231
232
        $this->assertCount(2, $details->getOutputsList());
233
        $this->assertEquals($output1->getAmount(), $details->getOutputs(0)->getAmount());
234
        $this->assertEquals($output1->getScript(), $details->getOutputs(0)->getScript());
235
        $this->assertEquals($output2->getAmount(), $details->getOutputs(1)->getAmount());
236
        $this->assertEquals($output2->getScript(), $details->getOutputs(1)->getScript());
237
    }
238
}
239