Passed
Branch main (249e74)
by Daniel
02:10
created

ReadWriteTest::testGetLocalCreditNoteIntoArray()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 10
nc 1
nop 0
dl 0
loc 13
rs 9.9332
c 1
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
use PHPUnit\Framework\Attributes\CoversClass;
6
use PHPUnit\Framework\TestCase;
7
8
#[CoversClass(\danielgp\efactura\ElectronicInvoiceRead::class)]
9
#[CoversClass(\danielgp\efactura\ElectronicInvoiceWrite::class)]
10
final class ReadWriteTest extends TestCase
11
{
12
    const LOCAL_UBL_EXAMPLES_PATH = __DIR__ . '/UBL_examples/';
13
14
    public function testGetLocalInvoiceIntoArrayAsCreditNote1()
15
    {
16
        $url           = self::LOCAL_UBL_EXAMPLES_PATH . 'eInvoicing-EN16931/ubl-tc434-creditnote1.xml';
17
        $classRead     = new \danielgp\efactura\ElectronicInvoiceRead();
18
        $arrayData     = $classRead->readElectronicInvoice($url);
19
        $classWrite    = new \danielgp\efactura\ElectronicInvoiceWrite();
20
        $strTargetFile = __DIR__ . '/' . basename($url);
21
        $classWrite->writeElectronicInvoice($strTargetFile, $arrayData, [
22
            'Comments'       => false,
23
            'SchemaLocation' => false,
24
        ]);
25
        $this->assertXmlFileEqualsXmlFile($url, $strTargetFile);
26
    }
27
28
    public function testGetLocalInvoiceIntoArrayAsExample1()
29
    {
30
        $url           = self::LOCAL_UBL_EXAMPLES_PATH . 'eInvoicing-EN16931/ubl-tc434-example1.xml';
31
        $classRead     = new \danielgp\efactura\ElectronicInvoiceRead();
32
        $arrayData     = $classRead->readElectronicInvoice($url);
33
        $classWrite    = new \danielgp\efactura\ElectronicInvoiceWrite();
34
        $strTargetFile = __DIR__ . '/' . basename($url);
35
        $classWrite->writeElectronicInvoice($strTargetFile, $arrayData, [
36
            'Comments'       => false,
37
            'SchemaLocation' => true,
38
        ]);
39
        $this->assertXmlFileEqualsXmlFile($url, $strTargetFile);
40
    }
41
42
    public function testGetLocalInvoiceIntoArrayAsExample2()
43
    {
44
        $url           = self::LOCAL_UBL_EXAMPLES_PATH . 'eInvoicing-EN16931/ubl-tc434-example2.xml';
45
        $classRead     = new \danielgp\efactura\ElectronicInvoiceRead();
46
        $arrayData     = $classRead->readElectronicInvoice($url);
47
        $classWrite    = new \danielgp\efactura\ElectronicInvoiceWrite();
48
        $strTargetFile = __DIR__ . '/' . basename($url);
49
        $classWrite->writeElectronicInvoice($strTargetFile, $arrayData, [
50
            'Comments'       => false,
51
            'SchemaLocation' => true,
52
        ]);
53
        $this->assertXmlFileEqualsXmlFile($url, $strTargetFile);
54
    }
55
56
    public function testGetLocalInvoiceIntoArrayAsExample3()
57
    {
58
        $url           = self::LOCAL_UBL_EXAMPLES_PATH . 'eInvoicing-EN16931/ubl-tc434-example3.xml';
59
        $classRead     = new \danielgp\efactura\ElectronicInvoiceRead();
60
        $arrayData     = $classRead->readElectronicInvoice($url);
61
        $classWrite    = new \danielgp\efactura\ElectronicInvoiceWrite();
62
        $strTargetFile = __DIR__ . '/' . basename($url);
63
        $classWrite->writeElectronicInvoice($strTargetFile, $arrayData, [
64
            'Comments'       => false,
65
            'SchemaLocation' => true,
66
        ]);
67
        $this->assertXmlFileEqualsXmlFile($url, $strTargetFile);
68
    }
69
70
    public function testGetLocalInvoiceIntoArrayAsExample4()
71
    {
72
        $url           = self::LOCAL_UBL_EXAMPLES_PATH . 'eInvoicing-EN16931/ubl-tc434-example4.xml';
73
        $classRead     = new \danielgp\efactura\ElectronicInvoiceRead();
74
        $arrayData     = $classRead->readElectronicInvoice($url);
75
        $classWrite    = new \danielgp\efactura\ElectronicInvoiceWrite();
76
        $strTargetFile = __DIR__ . '/' . basename($url);
77
        $classWrite->writeElectronicInvoice($strTargetFile, $arrayData, [
78
            'Comments'       => false,
79
            'SchemaLocation' => true,
80
        ]);
81
        $this->assertXmlFileEqualsXmlFile($url, $strTargetFile);
82
    }
83
84
    public function testGetLocalInvoiceIntoArrayAsExample5()
85
    {
86
        $url           = self::LOCAL_UBL_EXAMPLES_PATH . 'eInvoicing-EN16931/ubl-tc434-example5.xml';
87
        $classRead     = new \danielgp\efactura\ElectronicInvoiceRead();
88
        $arrayData     = $classRead->readElectronicInvoice($url);
89
        $classWrite    = new \danielgp\efactura\ElectronicInvoiceWrite();
90
        $strTargetFile = __DIR__ . '/' . basename($url);
91
        $classWrite->writeElectronicInvoice($strTargetFile, $arrayData, [
92
            'Comments'       => false,
93
            'SchemaLocation' => true,
94
        ]);
95
        $this->assertXmlFileEqualsXmlFile($url, $strTargetFile);
96
    }
97
98
    public function testGetLocalInvoiceIntoArrayAsExample6()
99
    {
100
        $url           = self::LOCAL_UBL_EXAMPLES_PATH . 'eInvoicing-EN16931/ubl-tc434-example6.xml';
101
        $classRead     = new \danielgp\efactura\ElectronicInvoiceRead();
102
        $arrayData     = $classRead->readElectronicInvoice($url);
103
        $classWrite    = new \danielgp\efactura\ElectronicInvoiceWrite();
104
        $strTargetFile = __DIR__ . '/' . basename($url);
105
        $classWrite->writeElectronicInvoice($strTargetFile, $arrayData, [
106
            'Comments'       => false,
107
            'SchemaLocation' => true,
108
        ]);
109
        $this->assertXmlFileEqualsXmlFile($url, $strTargetFile);
110
    }
111
112
    public function testGetLocalInvoiceIntoArrayAsExample7()
113
    {
114
        $url           = self::LOCAL_UBL_EXAMPLES_PATH . 'eInvoicing-EN16931/ubl-tc434-example7.xml';
115
        $classRead     = new \danielgp\efactura\ElectronicInvoiceRead();
116
        $arrayData     = $classRead->readElectronicInvoice($url);
117
        $classWrite    = new \danielgp\efactura\ElectronicInvoiceWrite();
118
        $strTargetFile = __DIR__ . '/' . basename($url);
119
        $classWrite->writeElectronicInvoice($strTargetFile, $arrayData, [
120
            'Comments'       => false,
121
            'SchemaLocation' => true,
122
        ]);
123
        $this->assertXmlFileEqualsXmlFile($url, $strTargetFile);
124
    }
125
126
    public function testGetLocalInvoiceIntoArrayAsExample8()
127
    {
128
        $url           = self::LOCAL_UBL_EXAMPLES_PATH . 'eInvoicing-EN16931/ubl-tc434-example8.xml';
129
        $classRead     = new \danielgp\efactura\ElectronicInvoiceRead();
130
        $arrayData     = $classRead->readElectronicInvoice($url);
131
        $classWrite    = new \danielgp\efactura\ElectronicInvoiceWrite();
132
        $strTargetFile = __DIR__ . '/' . basename($url);
133
        $classWrite->writeElectronicInvoice($strTargetFile, $arrayData, [
134
            'Comments'       => false,
135
            'SchemaLocation' => true,
136
        ]);
137
        $this->assertXmlFileEqualsXmlFile($url, $strTargetFile);
138
    }
139
140
    public function testGetLocalInvoiceIntoArrayAsExample9()
141
    {
142
        $url           = self::LOCAL_UBL_EXAMPLES_PATH . 'eInvoicing-EN16931/ubl-tc434-example9.xml';
143
        $classRead     = new \danielgp\efactura\ElectronicInvoiceRead();
144
        $arrayData     = $classRead->readElectronicInvoice($url);
145
        $classWrite    = new \danielgp\efactura\ElectronicInvoiceWrite();
146
        $strTargetFile = __DIR__ . '/' . basename($url);
147
        $classWrite->writeElectronicInvoice($strTargetFile, $arrayData, [
148
            'Comments'       => false,
149
            'SchemaLocation' => true,
150
        ]);
151
        $this->assertXmlFileEqualsXmlFile($url, $strTargetFile);
152
    }
153
154
    public function testGetLocalInvoiceIntoArrayAsExample9WithComments()
155
    {
156
        $url           = self::LOCAL_UBL_EXAMPLES_PATH . 'eInvoicing-EN16931/ubl-tc434-example9.xml';
157
        $classRead     = new \danielgp\efactura\ElectronicInvoiceRead();
158
        $arrayData     = $classRead->readElectronicInvoice($url);
159
        $classWrite    = new \danielgp\efactura\ElectronicInvoiceWrite();
160
        $strTargetFile = __DIR__ . '/' . str_replace('.xml', '_withComments.xml', basename($url));
161
        $classWrite->writeElectronicInvoice($strTargetFile, $arrayData, [
162
            'Comments'       => true,
163
            'SchemaLocation' => true,
164
        ]);
165
        $this->assertXmlFileEqualsXmlFile($url, $strTargetFile);
166
    }
167
168
    public function testGetLocalCreditNoteIntoArray()
169
    {
170
        $strFile       = self::LOCAL_UBL_EXAMPLES_PATH . 'Romanian/creditNote_ex.xml';
171
        $classRead     = new \danielgp\efactura\ElectronicInvoiceRead();
172
        $arrayData     = $classRead->readElectronicInvoice($strFile);
173
        $classWrite    = new \danielgp\efactura\ElectronicInvoiceWrite();
174
        $strTargetFile = __DIR__ . '/' . basename($strFile);
175
        $classWrite->writeElectronicInvoice($strTargetFile, $arrayData, [
176
            'Comments'       => false,
177
            'Ident'          => 2,
178
            'SchemaLocation' => false,
179
        ]);
180
        $this->assertXmlFileEqualsXmlFile($strFile, $strTargetFile);
181
    }
182
183
    public function testGetLocalInvoiceIntoArray()
184
    {
185
        $strFile       = self::LOCAL_UBL_EXAMPLES_PATH . 'Romanian/eInvoice_ex.xml';
186
        $classRead     = new \danielgp\efactura\ElectronicInvoiceRead();
187
        $arrayData     = $classRead->readElectronicInvoice($strFile);
188
        $classWrite    = new \danielgp\efactura\ElectronicInvoiceWrite();
189
        $strTargetFile = __DIR__ . '/' . basename($strFile);
190
        $classWrite->writeElectronicInvoice($strTargetFile, $arrayData, [
191
            'Comments'       => false,
192
            'Ident'          => 2,
193
            'SchemaLocation' => false,
194
        ]);
195
        $this->assertXmlFileEqualsXmlFile($strFile, $strTargetFile);
196
    }
197
198
    public function tearDown(): void
199
    {
200
        $arrayFiles = new RecursiveDirectoryIterator(__DIR__, FilesystemIterator::SKIP_DOTS);
201
        foreach ($arrayFiles as $strFile) {
202
            if ($strFile->isFile() && ($strFile->getExtension() === 'xml')) {
203
                unlink($strFile->getRealPath());
204
            }
205
        }
206
    }
207
}
208