public static function build($options = [])
{
$serializer = self::buildSerializer();
$chainGuesser = JsonSchemaGuesserFactory::create($serializer, $options);
$naming = new Naming();
$modelGenerator = new ModelGenerator($naming, $chainGuesser, $chainGuesser);
$normGenerator = new NormalizerGenerator($naming, isset($options['reference']) ? $options['reference'] : true);
return new self($serializer, $chainGuesser, $modelGenerator, $normGenerator);
}
/** * @dataProvider schemaProvider */ 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 $jane = Jane::build(); $jane->generate($testDirectory->getRealPath() . DIRECTORY_SEPARATOR . 'schema.json', 'Test', 'Joli\\Jane\\Tests\\Expected', $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()])); } } }