Completed
Push — master ( 83fb2b...0f847f )
by
unknown
42:12 queued 20:32
created

VersionBuilderTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 93
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Importance

Changes 0
Metric Value
dl 0
loc 93
c 0
b 0
f 0
rs 10
wmc 3
lcom 0
cbo 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A providerForTestBuild() 0 53 2
A testBuild() 0 16 1
1
<?php
2
3
/**
4
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
5
 * @license For full copyright and license information view LICENSE file distributed with this source code.
6
 */
7
declare(strict_types=1);
8
9
namespace eZ\Publish\SPI\Tests\Limitation\Target\Builder;
10
11
use eZ\Publish\API\Repository\Values\Content\Field;
12
use eZ\Publish\API\Repository\Values\Content\VersionInfo;
13
use eZ\Publish\SPI\Limitation\Target\Builder\VersionBuilder;
14
use eZ\Publish\SPI\Limitation\Target;
15
use PHPUnit\Framework\TestCase;
16
17
/**
18
 * @covers \eZ\Publish\SPI\Limitation\Target\Builder\VersionBuilder
19
 */
20
class VersionBuilderTest extends TestCase
21
{
22
    /**
23
     * Data provider for testBuild.
24
     *
25
     * @see testBuild
26
     *
27
     * @return array
28
     */
29
    public function providerForTestBuild(): array
30
    {
31
        $versionStatuses = [
32
            VersionInfo::STATUS_DRAFT,
33
            VersionInfo::STATUS_PUBLISHED,
34
            VersionInfo::STATUS_ARCHIVED,
35
        ];
36
37
        $data = [];
38
        foreach ($versionStatuses as $versionStatus) {
39
            $languagesList = ['ger-DE', 'eng-US', 'eng-GB'];
40
            $initialLanguageCode = 'eng-US';
41
            $fields = [
42
                new Field(['languageCode' => 'ger-DE']),
43
                new Field(['languageCode' => 'ger-DE']),
44
                new Field(['languageCode' => 'eng-US']),
45
            ];
46
            $updateTranslationsLanguageCodes = ['ger-DE', 'eng-US'];
47
48
            $data[] = [
49
                new Target\Version(
50
                    [
51
                        'newStatus' => $versionStatus,
52
                        'allLanguageCodesList' => $languagesList,
53
                        'forUpdateLanguageCodesList' => $updateTranslationsLanguageCodes,
54
                        'forUpdateInitialLanguageCode' => $initialLanguageCode,
55
                    ]
56
                ),
57
                $versionStatus,
58
                $initialLanguageCode,
59
                $fields,
60
                $languagesList,
61
            ];
62
63
            // no published content
64
            $data[] = [
65
                new Target\Version(
66
                    [
67
                        'newStatus' => $versionStatus,
68
                        'allLanguageCodesList' => $languagesList,
69
                        'forUpdateLanguageCodesList' => $updateTranslationsLanguageCodes,
70
                        'forUpdateInitialLanguageCode' => $initialLanguageCode,
71
                    ]
72
                ),
73
                $versionStatus,
74
                $initialLanguageCode,
75
                $fields,
76
                $languagesList,
77
            ];
78
        }
79
80
        return $data;
81
    }
82
83
    /**
84
     * @covers       \eZ\Publish\SPI\Limitation\Target\Builder\VersionBuilder::build
85
     *
86
     * @dataProvider providerForTestBuild
87
     *
88
     * @param \eZ\Publish\SPI\Limitation\Target\Version $expectedTargetVersion
89
     * @param int $newStatus
90
     * @param string $initialLanguageCode
91
     * @param \eZ\Publish\API\Repository\Values\Content\Field[] $newFields
92
     * @param string[] $languagesList
93
     *
94
     * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException
95
     */
96
    public function testBuild(
97
        Target\Version $expectedTargetVersion,
98
        int $newStatus,
99
        string $initialLanguageCode,
100
        array $newFields,
101
        array $languagesList
102
    ): void {
103
        $versionBuilder = new VersionBuilder();
104
        $versionBuilder
105
            ->changeStatusTo($newStatus)
106
            ->updateFieldsTo($initialLanguageCode, $newFields)
107
            ->translateToAnyLanguageOf($languagesList);
108
109
        self::assertInstanceOf(VersionBuilder::class, $versionBuilder);
110
        self::assertEquals($expectedTargetVersion, $versionBuilder->build());
111
    }
112
}
113