public static function build(array $options = [])
{
$encoders = [new JsonEncoder(new JsonEncode(), new JsonDecode(false)), new YamlEncoder(new YamlEncode(), new YamlDecode(false, true, true, true)), new RawEncoder()];
$normalizers = NormalizerFactory::create();
$serializer = new Serializer($normalizers, $encoders);
$schemaParser = new SchemaParser($serializer);
$clientGenerator = GeneratorFactory::build();
$prettyPrinter = new StandardPrettyPrinter();
$naming = new Naming();
$modelGenerator = new ModelGenerator($naming);
$normGenerator = new NormalizerGenerator($naming, isset($options['reference']) ? $options['reference'] : false);
return new self($schemaParser, GuesserFactory::create($serializer), $modelGenerator, $normGenerator, $clientGenerator, $prettyPrinter);
}
/** * @dataProvider resourceProvider */ public function testRessources(SplFileInfo $testDirectory) { // 1. Cleanup generated $filesystem = new Filesystem(); if ($filesystem->exists($testDirectory->getRealPath() . DIRECTORY_SEPARATOR . 'generated')) { $filesystem->remove($testDirectory->getRealPath() . DIRECTORY_SEPARATOR . 'generated'); } $filesystem->mkdir($testDirectory->getRealPath() . DIRECTORY_SEPARATOR . 'generated'); // 2. Generate $OpenApi = JaneOpenApi::build(); $files = $OpenApi->generate($testDirectory->getRealPath() . DIRECTORY_SEPARATOR . 'swagger.json', 'Joli\\Jane\\OpenApi\\Tests\\Expected', $testDirectory->getRealPath() . DIRECTORY_SEPARATOR . 'generated'); $OpenApi->printFiles($files, $testDirectory->getRealPath() . DIRECTORY_SEPARATOR . 'generated'); // 3. Compare $expectedFinder = new Finder(); $expectedFinder->in($testDirectory->getRealPath() . DIRECTORY_SEPARATOR . 'expected'); $generatedFinder = new Finder(); $generatedFinder->in($testDirectory->getRealPath() . DIRECTORY_SEPARATOR . 'generated'); $generatedData = []; $this->assertEquals(count($expectedFinder), count($generatedFinder)); foreach ($generatedFinder as $generatedFile) { $generatedData[$generatedFile->getRelativePathname()] = $generatedFile->getRealPath(); } foreach ($expectedFinder as $expectedFile) { $this->assertArrayHasKey($expectedFile->getRelativePathname(), $generatedData); if ($expectedFile->isFile()) { $this->assertEquals(file_get_contents($expectedFile->getRealPath()), file_get_contents($generatedData[$expectedFile->getRelativePathname()])); } } }