ManifestSerializerTest.php
3.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
namespace PharIo\Manifest;
use PharIo\Version\Version;
/**
* @covers \PharIo\Manifest\ManifestSerializer
*
* @uses \PharIo\Manifest\ApplicationName
* @uses \PharIo\Manifest\Author
* @uses \PharIo\Manifest\AuthorCollection
* @uses \PharIo\Manifest\AuthorCollectionIterator
* @uses \PharIo\Manifest\AuthorElement
* @uses \PharIo\Manifest\AuthorElementCollection
* @uses \PharIo\Manifest\BundledComponent
* @uses \PharIo\Manifest\BundledComponentCollection
* @uses \PharIo\Manifest\BundledComponentCollectionIterator
* @uses \PharIo\Manifest\BundlesElement
* @uses \PharIo\Manifest\ComponentElement
* @uses \PharIo\Manifest\ComponentElementCollection
* @uses \PharIo\Manifest\ContainsElement
* @uses \PharIo\Manifest\CopyrightElement
* @uses \PharIo\Manifest\CopyrightInformation
* @uses \PharIo\Manifest\ElementCollection
* @uses \PharIo\Manifest\Email
* @uses \PharIo\Manifest\ExtElement
* @uses \PharIo\Manifest\ExtElementCollection
* @uses \PharIo\Manifest\License
* @uses \PharIo\Manifest\LicenseElement
* @uses \PharIo\Manifest\Manifest
* @uses \PharIo\Manifest\ManifestDocument
* @uses \PharIo\Manifest\ManifestDocumentMapper
* @uses \PharIo\Manifest\ManifestElement
* @uses \PharIo\Manifest\ManifestLoader
* @uses \PharIo\Manifest\PhpElement
* @uses \PharIo\Manifest\PhpExtensionRequirement
* @uses \PharIo\Manifest\PhpVersionRequirement
* @uses \PharIo\Manifest\RequirementCollection
* @uses \PharIo\Manifest\RequirementCollectionIterator
* @uses \PharIo\Manifest\RequiresElement
* @uses \PharIo\Manifest\Type
* @uses \PharIo\Manifest\Url
* @uses \PharIo\Version\Version
* @uses \PharIo\Version\VersionConstraint
*/
class ManifestSerializerTest extends \PHPUnit\Framework\TestCase {
/**
* @dataProvider dataProvider
*
* @param $expected
*
* @uses \PharIo\Manifest\Application
* @uses \PharIo\Manifest\Library
* @uses \PharIo\Manifest\Extension
* @uses \PharIo\Manifest\ExtensionElement
*/
public function testCanSerializeToString($expected) {
$manifest = ManifestLoader::fromString($expected);
$serializer = new ManifestSerializer();
$this->assertXmlStringEqualsXmlString(
$expected,
$serializer->serializeToString($manifest)
);
}
public function dataProvider() {
return [
'application' => [file_get_contents(__DIR__ . '/_fixture/phpunit-5.6.5.xml')],
'library' => [file_get_contents(__DIR__ . '/_fixture/library.xml')],
'extension' => [file_get_contents(__DIR__ . '/_fixture/extension.xml')]
];
}
/**
* @uses \PharIo\Manifest\Library
* @uses \PharIo\Manifest\ApplicationName
*/
public function testCanSerializeToFile() {
$src = __DIR__ . '/_fixture/library.xml';
$dest = '/tmp/' . uniqid('serializer', true);
$manifest = ManifestLoader::fromFile($src);
$serializer = new ManifestSerializer();
$serializer->serializeToFile($manifest, $dest);
$this->assertXmlFileEqualsXmlFile($src, $dest);
unlink($dest);
}
/**
* @uses \PharIo\Manifest\ApplicationName
*/
public function testCanHandleUnknownType() {
$type = $this->getMockForAbstractClass(Type::class);
$manifest = new Manifest(
new ApplicationName('testvendor/testname'),
new Version('1.0.0'),
$type,
new CopyrightInformation(
new AuthorCollection(),
new License('bsd-3', new Url('https://some/uri'))
),
new RequirementCollection(),
new BundledComponentCollection()
);
$serializer = new ManifestSerializer();
$this->assertXmlStringEqualsXmlFile(
__DIR__ . '/_fixture/custom.xml',
$serializer->serializeToString($manifest)
);
}
}