Passed
Push — master ( 8f83e8...e4d779 )
by Chema
02:15
created

TransactionResultTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 73
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 48
dl 0
loc 73
rs 10
c 0
b 0
f 0
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A twoMessages() 0 25 1
A oneMessage() 0 14 1
A oneMessageWithMultipleSegmentsWithTheSameName() 0 25 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace EdifactParser\Tests\Unit;
6
7
use EDI\Parser;
8
use EdifactParser\SegmentedValues;
9
use EdifactParser\Segments\CNTControl;
10
use EdifactParser\Segments\UNHMessageHeader;
11
use EdifactParser\Segments\UnknownSegment;
12
use EdifactParser\Segments\UNTMessageFooter;
13
use EdifactParser\TransactionMessage;
14
use EdifactParser\TransactionResult;
15
use PHPUnit\Framework\TestCase;
16
17
final class TransactionResultTest extends TestCase
18
{
19
    /** @test */
20
    public function oneMessage(): void
21
    {
22
        $fileContent = "UNH+1+IFTMIN:S:93A:UN:PN001'\nUNT+19+1'";
23
24
        $result = TransactionResult::fromSegmentedValues(
25
            SegmentedValues::fromRaw((new Parser($fileContent))->get())
26
        );
27
28
        self::assertEquals([
29
            new TransactionMessage([
30
                new UNHMessageHeader(['UNH', '1', ['IFTMIN', 'S', '93A', 'UN', 'PN001']]),
31
                new UNTMessageFooter(['UNT', '19', '1']),
32
            ]),
33
        ], $result->messages());
34
    }
35
36
    /** @test */
37
    public function twoMessages(): void
38
    {
39
        $fileContent = <<<EDI
40
UNA:+.? '
41
UNH+1+IFTMIN:S:93A:UN:PN001'
42
UNT+19+1'
43
UNH+2+IFTMIN:S:94A:UN:PN002'
44
UNT+19+2'
45
UNZ+2+3'
46
EDI;
47
        $result = TransactionResult::fromSegmentedValues(
48
            SegmentedValues::fromRaw((new Parser($fileContent))->get())
49
        );
50
51
        self::assertEquals([
52
            new TransactionMessage([
53
                new UNHMessageHeader(['UNH', '1', ['IFTMIN', 'S', '93A', 'UN', 'PN001']]),
54
                new UNTMessageFooter(['UNT', '19', '1']),
55
            ]),
56
            new TransactionMessage([
57
                new UNHMessageHeader(['UNH', '2', ['IFTMIN', 'S', '94A', 'UN', 'PN002']]),
58
                new UNTMessageFooter(['UNT', '19', '2']),
59
                new UnknownSegment(['UNZ', '2', '3']),
60
            ]),
61
        ], $result->messages());
62
    }
63
64
    /** @test */
65
    public function oneMessageWithMultipleSegmentsWithTheSameName(): void
66
    {
67
        $fileContent = <<<EDI
68
UNA:+.? '
69
UNH+1+IFTMIN:S:93A:UN:PN001'
70
CNT+7:0.1:KGM'
71
CNT+11:1:PCE'
72
CNT+15:0.068224:MTQ'
73
UNT+19+1'
74
UNZ+2+3'
75
EDI;
76
        $result = TransactionResult::fromSegmentedValues(
77
            SegmentedValues::fromRaw((new Parser($fileContent))->get())
78
        );
79
80
        self::assertEquals([
81
            new TransactionMessage([
82
                new UNHMessageHeader(['UNH', '1', ['IFTMIN', 'S', '93A', 'UN', 'PN001']]),
83
                new UNTMessageFooter(['UNT', '19', '1']),
84
                new CNTControl(['CNT', ['7', '0.1', 'KGM']]),
85
                new CNTControl(['CNT', ['11', '1', 'PCE']]),
86
                new CNTControl(['CNT', ['15', '0.068224', 'MTQ']]),
87
                new UnknownSegment(['UNZ', '2', '3']),
88
            ]),
89
        ], $result->messages());
90
    }
91
}
92