|
7 | 7 | use CodedMonkey\Dirigent\Doctrine\Entity\Package; |
8 | 8 | use CodedMonkey\Dirigent\Doctrine\Entity\Registry; |
9 | 9 | use CodedMonkey\Dirigent\Entity\RegistryPackageMirroring; |
| 10 | +use CodedMonkey\Dirigent\Package\PackageProviderManager; |
10 | 11 | use CodedMonkey\Dirigent\Tests\FunctionalTests\PublicKernel; |
11 | 12 | use CodedMonkey\Dirigent\Tests\Helper\EntityManagerTestTrait; |
12 | 13 | use CodedMonkey\Dirigent\Tests\Helper\KernelTestCaseTrait; |
@@ -42,24 +43,34 @@ public function testRoot(): void |
42 | 43 | ], $rootData); |
43 | 44 | } |
44 | 45 |
|
45 | | - public function testPackagMetadata(): void |
| 46 | + public function testPackageMetadata(): void |
46 | 47 | { |
47 | 48 | self::bootKernel(); |
48 | 49 |
|
49 | | - $packageData = $this->requestJson('/p2/psr/log.json', 'GET'); |
| 50 | + $package = $this->createPackageWithProvider(); |
| 51 | + $packageName = $package->getName(); |
| 52 | + |
| 53 | + $packageData = $this->requestJson("/p2/$packageName.json", 'GET'); |
50 | 54 |
|
51 | 55 | $this->assertArrayHasKey('packages', $packageData); |
52 | | - $this->assertArrayHasKey('psr/log', $packageData['packages']); |
| 56 | + $this->assertArrayHasKey($packageName, $packageData['packages']); |
| 57 | + $this->assertCount(1, $packageData['packages'][$packageName]); |
| 58 | + $this->assertSame('1.0.0', $packageData['packages'][$packageName][0]['version']); |
53 | 59 | } |
54 | 60 |
|
55 | 61 | public function testPackageMetadataDev(): void |
56 | 62 | { |
57 | 63 | self::bootKernel(); |
58 | 64 |
|
59 | | - $packageData = $this->requestJson('/p2/psr/log~dev.json', 'GET'); |
| 65 | + $package = $this->createPackageWithProvider(); |
| 66 | + $packageName = $package->getName(); |
| 67 | + |
| 68 | + $packageData = $this->requestJson("/p2/$packageName~dev.json", 'GET'); |
60 | 69 |
|
61 | 70 | $this->assertArrayHasKey('packages', $packageData); |
62 | | - $this->assertArrayHasKey('psr/log', $packageData['packages']); |
| 71 | + $this->assertArrayHasKey($packageName, $packageData['packages']); |
| 72 | + $this->assertCount(1, $packageData['packages'][$packageName]); |
| 73 | + $this->assertSame('dev-main', $packageData['packages'][$packageName][0]['version']); |
63 | 74 | } |
64 | 75 |
|
65 | 76 | public function testPackageMetadataIsNotFound(): void |
@@ -98,6 +109,22 @@ public function testPackageMetadataIsMirroredOnRequest(): void |
98 | 109 | $this->assertArrayHasKey('psr/container', $packageData['packages']); |
99 | 110 | } |
100 | 111 |
|
| 112 | + private function createPackageWithProvider(): Package |
| 113 | + { |
| 114 | + [$package, $version, $metadata] = $this->createMockPackageWithMetadata(); |
| 115 | + $devVersion = $this->createMockVersion($package, 'dev-main', true); |
| 116 | + $devMetadata = $this->createMockMetadata($devVersion); |
| 117 | + $devVersion->setCurrentMetadata($devMetadata); |
| 118 | + |
| 119 | + // Serve the generated provider without triggering a remote metadata update. |
| 120 | + $package->setUpdatedAt(new \DateTimeImmutable()); |
| 121 | + $this->persistEntities($package, $version, $metadata, $devVersion, $devMetadata); |
| 122 | + |
| 123 | + $this->getService(PackageProviderManager::class)->dump($package); |
| 124 | + |
| 125 | + return $package; |
| 126 | + } |
| 127 | + |
101 | 128 | private function requestJson(...$requestArguments) |
102 | 129 | { |
103 | 130 | $request = Request::create(...$requestArguments); |
|
0 commit comments