Chris@14
|
1 <?php
|
Chris@14
|
2
|
Chris@14
|
3 namespace PharIo\Manifest;
|
Chris@14
|
4
|
Chris@14
|
5 class ManifestDocumentTest extends \PHPUnit_Framework_TestCase {
|
Chris@14
|
6 public function testThrowsExceptionWhenFileDoesNotExist() {
|
Chris@14
|
7 $this->expectException(ManifestDocumentException::class);
|
Chris@14
|
8 ManifestDocument::fromFile('/does/not/exist');
|
Chris@14
|
9 }
|
Chris@14
|
10
|
Chris@14
|
11 public function testCanBeCreatedFromFile() {
|
Chris@14
|
12 $this->assertInstanceOf(
|
Chris@14
|
13 ManifestDocument::class,
|
Chris@14
|
14 ManifestDocument::fromFile(__DIR__ . '/../_fixture/phpunit-5.6.5.xml')
|
Chris@14
|
15 );
|
Chris@14
|
16 }
|
Chris@14
|
17
|
Chris@14
|
18 public function testCaneBeConstructedFromString() {
|
Chris@14
|
19 $content = file_get_contents(__DIR__ . '/../_fixture/phpunit-5.6.5.xml');
|
Chris@14
|
20 $this->assertInstanceOf(
|
Chris@14
|
21 ManifestDocument::class,
|
Chris@14
|
22 ManifestDocument::fromString($content)
|
Chris@14
|
23 );
|
Chris@14
|
24 }
|
Chris@14
|
25
|
Chris@14
|
26 public function testThrowsExceptionOnInvalidXML() {
|
Chris@14
|
27 $this->expectException(ManifestDocumentLoadingException::class);
|
Chris@14
|
28 ManifestDocument::fromString('<?xml version="1.0" ?><root>');
|
Chris@14
|
29 }
|
Chris@14
|
30
|
Chris@14
|
31 public function testLoadingDocumentWithWrongRootNameThrowsException() {
|
Chris@14
|
32 $this->expectException(ManifestDocumentException::class);
|
Chris@14
|
33 ManifestDocument::fromString('<?xml version="1.0" ?><root />');
|
Chris@14
|
34 }
|
Chris@14
|
35
|
Chris@14
|
36 public function testLoadingDocumentWithWrongNamespaceThrowsException() {
|
Chris@14
|
37 $this->expectException(ManifestDocumentException::class);
|
Chris@14
|
38 ManifestDocument::fromString('<?xml version="1.0" ?><phar xmlns="foo:bar" />');
|
Chris@14
|
39 }
|
Chris@14
|
40
|
Chris@14
|
41 public function testContainsElementCanBeRetrieved() {
|
Chris@14
|
42 $this->assertInstanceOf(
|
Chris@14
|
43 ContainsElement::class,
|
Chris@14
|
44 $this->loadFixture()->getContainsElement()
|
Chris@14
|
45 );
|
Chris@14
|
46 }
|
Chris@14
|
47
|
Chris@14
|
48 public function testRequiresElementCanBeRetrieved() {
|
Chris@14
|
49 $this->assertInstanceOf(
|
Chris@14
|
50 RequiresElement::class,
|
Chris@14
|
51 $this->loadFixture()->getRequiresElement()
|
Chris@14
|
52 );
|
Chris@14
|
53 }
|
Chris@14
|
54
|
Chris@14
|
55 public function testCopyrightElementCanBeRetrieved() {
|
Chris@14
|
56 $this->assertInstanceOf(
|
Chris@14
|
57 CopyrightElement::class,
|
Chris@14
|
58 $this->loadFixture()->getCopyrightElement()
|
Chris@14
|
59 );
|
Chris@14
|
60 }
|
Chris@14
|
61
|
Chris@14
|
62 public function testBundlesElementCanBeRetrieved() {
|
Chris@14
|
63 $this->assertInstanceOf(
|
Chris@14
|
64 BundlesElement::class,
|
Chris@14
|
65 $this->loadFixture()->getBundlesElement()
|
Chris@14
|
66 );
|
Chris@14
|
67 }
|
Chris@14
|
68
|
Chris@14
|
69 public function testThrowsExceptionWhenContainsIsMissing() {
|
Chris@14
|
70 $this->expectException(ManifestDocumentException::class);
|
Chris@14
|
71 $this->loadEmptyFixture()->getContainsElement();
|
Chris@14
|
72 }
|
Chris@14
|
73
|
Chris@14
|
74 public function testThrowsExceptionWhenCopyirhgtIsMissing() {
|
Chris@14
|
75 $this->expectException(ManifestDocumentException::class);
|
Chris@14
|
76 $this->loadEmptyFixture()->getCopyrightElement();
|
Chris@14
|
77 }
|
Chris@14
|
78
|
Chris@14
|
79 public function testThrowsExceptionWhenRequiresIsMissing() {
|
Chris@14
|
80 $this->expectException(ManifestDocumentException::class);
|
Chris@14
|
81 $this->loadEmptyFixture()->getRequiresElement();
|
Chris@14
|
82 }
|
Chris@14
|
83
|
Chris@14
|
84 public function testThrowsExceptionWhenBundlesIsMissing() {
|
Chris@14
|
85 $this->expectException(ManifestDocumentException::class);
|
Chris@14
|
86 $this->loadEmptyFixture()->getBundlesElement();
|
Chris@14
|
87 }
|
Chris@14
|
88
|
Chris@14
|
89 public function testHasBundlesReturnsTrueWhenBundlesNodeIsPresent() {
|
Chris@14
|
90 $this->assertTrue(
|
Chris@14
|
91 $this->loadFixture()->hasBundlesElement()
|
Chris@14
|
92 );
|
Chris@14
|
93 }
|
Chris@14
|
94
|
Chris@14
|
95 public function testHasBundlesReturnsFalseWhenBundlesNoNodeIsPresent() {
|
Chris@14
|
96 $this->assertFalse(
|
Chris@14
|
97 $this->loadEmptyFixture()->hasBundlesElement()
|
Chris@14
|
98 );
|
Chris@14
|
99 }
|
Chris@14
|
100
|
Chris@14
|
101 private function loadFixture() {
|
Chris@14
|
102 return ManifestDocument::fromFile(__DIR__ . '/../_fixture/phpunit-5.6.5.xml');
|
Chris@14
|
103 }
|
Chris@14
|
104
|
Chris@14
|
105 private function loadEmptyFixture() {
|
Chris@14
|
106 return ManifestDocument::fromString(
|
Chris@14
|
107 '<?xml version="1.0" ?><phar xmlns="https://phar.io/xml/manifest/1.0" />'
|
Chris@14
|
108 );
|
Chris@14
|
109 }
|
Chris@14
|
110 }
|