diff vendor/phar-io/manifest/tests/ManifestSerializerTest.php @ 2:5311817fb629

Theme updates
author Chris Cannam
date Tue, 10 Jul 2018 13:19:18 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/phar-io/manifest/tests/ManifestSerializerTest.php	Tue Jul 10 13:19:18 2018 +0000
@@ -0,0 +1,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)
+        );
+    }
+}