SegmentFactoryTest::withCustomSegments()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
cc 1
eloc 4
c 2
b 0
f 1
nc 1
nop 0
dl 0
loc 8
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace EdifactParser\Tests\Unit\Segments;
6
7
use EdifactParser\Segments\BGMBeginningOfMessage;
8
use EdifactParser\Segments\CNTControl;
9
use EdifactParser\Segments\DTMDateTimePeriod;
10
use EdifactParser\Segments\MEADimensions;
11
use EdifactParser\Segments\NADNameAddress;
12
use EdifactParser\Segments\PCIPackageId;
13
use EdifactParser\Segments\SegmentFactory;
14
use EdifactParser\Segments\UNHMessageHeader;
15
use EdifactParser\Segments\UnknownSegment;
16
use EdifactParser\Segments\UNTMessageFooter;
17
use InvalidArgumentException;
18
use PHPUnit\Framework\TestCase;
19
20
final class SegmentFactoryTest extends TestCase
21
{
22
    /** @test */
23
    public function withDefaultSegments(): void
24
    {
25
        $factory = SegmentFactory::withDefaultSegments();
26
27
        self::assertInstanceOf(UNHMessageHeader::class, $factory->createSegmentFromArray(['UNH']));
28
        self::assertInstanceOf(DTMDateTimePeriod::class, $factory->createSegmentFromArray(['DTM']));
29
        self::assertInstanceOf(NADNameAddress::class, $factory->createSegmentFromArray(['NAD']));
30
        self::assertInstanceOf(MEADimensions::class, $factory->createSegmentFromArray(['MEA']));
31
        self::assertInstanceOf(CNTControl::class, $factory->createSegmentFromArray(['CNT']));
32
        self::assertInstanceOf(PCIPackageId::class, $factory->createSegmentFromArray(['PCI']));
33
        self::assertInstanceOf(BGMBeginningOfMessage::class, $factory->createSegmentFromArray(['BGM']));
34
        self::assertInstanceOf(UNTMessageFooter::class, $factory->createSegmentFromArray(['UNT']));
35
        self::assertInstanceOf(UnknownSegment::class, $factory->createSegmentFromArray(['___']));
36
    }
37
38
    /** @test */
39
    public function withCustomSegments(): void
40
    {
41
        $factory = SegmentFactory::withSegments([
42
            'UNH' => UNHMessageHeader::class,
43
        ]);
44
45
        self::assertInstanceOf(UNHMessageHeader::class, $factory->createSegmentFromArray(['UNH']));
46
        self::assertInstanceOf(UnknownSegment::class, $factory->createSegmentFromArray(['DTM']));
47
    }
48
49
    /** @test */
50
    public function exceptionWhenTagTooLarge(): void
51
    {
52
        $this->expectException(InvalidArgumentException::class);
53
        SegmentFactory::withSegments(['TAG_TOO_LARGE' => UNHMessageHeader::class]);
54
    }
55
56
    /** @test */
57
    public function exceptionWhenCreatingNonValidTag(): void
58
    {
59
        $this->expectException(InvalidArgumentException::class);
60
        SegmentFactory::withSegments(['NON' => NONFakeSegment::class]);
61
    }
62
}
63