createMock(Filesystem::class); $filesystem ->method('exists') ->with('./composer.json') ->willReturn(true); $action = new DeterminePackageManager( filesystem: $filesystem, projectLanguage: ProjectLanguage::PHP->value, ); self::assertSame( actual: $action->getPackageManager(), expected: PackageManager::Composer->value, ); } public function lockFileProvider(): array { return [ 'npm' => [ './package-lock.json', PackageManager::npm->value, [ ['./package-lock.json', true], ['./pnpm-lock.yaml', false], ['./yarn.lock', false], ], ], 'pnpm' => [ './pnpm-lock.yaml', PackageManager::pnpm->value, [ ['./package-lock.json', false], ['./pnpm-lock.yaml', true], ['./yarn.lock', false], ], ], 'yarn' => [ './yarn.lock', PackageManager::yarn->value, [ ['./package-lock.json', false], ['./pnpm-lock.yaml', false], ['./yarn.lock', true], ], ], ]; } /** * @dataProvider lockFileProvider * @test */ public function it_finds_node( string $lockFile, string $expectedPackageManager, array $valueMap, ): void { $filesystem = $this->createMock(Filesystem::class); $filesystem ->method('exists') ->will(self::returnValueMap($valueMap)); $action = new DeterminePackageManager( filesystem: $filesystem, projectLanguage: ProjectLanguage::JavaScript->value, ); self::assertSame( actual: $action->getPackageManager(), expected: $expectedPackageManager, ); } }