Passed
Branch master (ee5812)
by Chema
03:30
created

EdifactParserTest::parseMoreThanOneMessage()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 12
dl 0
loc 14
rs 9.8666
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
use App\EdifactParser\EdifactParser;
6
use App\EdifactParser\Exception\InvalidFile;
7
use App\EdifactParser\Segments\CNTControl;
8
use App\EdifactParser\Segments\UNHMessageHeader;
9
use App\EdifactParser\Segments\UNTMessageFooter;
10
use EDI\Parser;
11
use PHPUnit\Framework\TestCase;
12
13
final class EdifactParserTest extends TestCase
14
{
15
    /** @test */
16
    public function invalidFileDueToANonPrintableChar(): void
17
    {
18
        $fileContent = <<<EDI
19
\xE2\x80\xAF
20
EDI;
21
        $this->expectException(InvalidFile::class);
22
        EdifactParser::parse(new Parser($fileContent));
23
    }
24
25
    /** @test */
26
    public function parseMoreThanOneMessage(): void
27
    {
28
        $fileContent = <<<EDI
29
UNA:+.? '
30
UNH+1+IFTMIN:S:93A:UN:PN001'
31
UNT+19+1'
32
UNH+2+IFTMIN:S:94A:UN:PN002'
33
UNT+19+2'
34
UNH+3+IFTMIN:S:94A:UN:PN003'
35
UNT+19+3'
36
UNZ+3+4'
37
EDI;
38
        $transactionResult = EdifactParser::parse(new Parser($fileContent));
39
        self::assertCount(3, $transactionResult->messages());
40
    }
41
42
    /** @test */
43
    public function extractValuesFromMessage(): void
44
    {
45
        $fileContent = <<<EDI
46
UNA:+.? '
47
UNH+1+IFTMIN:S:93A:UN:PN001'
48
CNT+7:0.1:KGM'
49
CNT+11:1:PCE'
50
UNT+19+1'
51
UNZ+1+3'
52
EDI;
53
        $transactionResult = EdifactParser::parse(new Parser($fileContent));
54
        self::assertCount(1, $transactionResult->messages());
55
        $firstMessage = $transactionResult->messages()[0];
56
        $segments = $firstMessage->segments();
57
58
        /** @var UNHMessageHeader $unh */
59
        $unh = $segments[UNHMessageHeader::NAME]['1'];
60
        self::assertEquals(['UNH', '1', ['IFTMIN', 'S', '93A', 'UN', 'PN001']], $unh->rawValues());
61
62
        /** @var UNTMessageFooter $unt */
63
        $unt = $segments[UNTMessageFooter::NAME]['19'];
64
        self::assertEquals(['UNT', '19', '1'], $unt->rawValues());
65
66
        /** @var CNTControl $cnt7 */
67
        $cnt7 = $segments[CNTControl::NAME]['7'];
68
        self::assertEquals(['CNT', ['7', '0.1', 'KGM']], $cnt7->rawValues());
69
70
        /** @var CNTControl $cnt11 */
71
        $cnt11 = $segments[CNTControl::NAME]['11'];
72
        self::assertEquals(['CNT', ['11', '1', 'PCE']], $cnt11->rawValues());
73
    }
74
}
75