annotate vendor/phar-io/manifest/tests/ManifestSerializerTest.php @ 19:fa3358dc1485 tip

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