SegmentFactoryTest   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Importance

Changes 8
Bugs 0 Features 1
Metric Value
eloc 19
c 8
b 0
f 1
dl 0
loc 41
rs 10
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A exceptionWhenCreatingNonValidTag() 0 4 1
A exceptionWhenTagTooLarge() 0 4 1
A withCustomSegments() 0 8 1
A withDefaultSegments() 0 13 1
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