Loading src/UnicaenDbImport/CodeGenerator/Common/AbstractCodeGenerator.php +19 −0 Changes for src/UnicaenDbImport/CodeGenerator/Common/AbstractCodeGenerator.php: 19 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -54,6 +54,11 @@ abstract class AbstractCodeGenerator implements CodeGeneratorInterface $this->functionCallingHelper = $functionCallingHelper; } /** * @param string $tableName * @return string * @codeCoverageIgnore Car simple délégation */ public function generateSQLForTableExistenceCheck($tableName) { return $this->tableValidationHelper->generateSQLForTableExistenceCheck($tableName); Loading @@ -62,12 +67,19 @@ abstract class AbstractCodeGenerator implements CodeGeneratorInterface /** * @param array $result * @return bool * @codeCoverageIgnore Car simple délégation */ public function convertTableExistenceCheckResultToBoolean(array $result) { return $this->tableValidationHelper->convertTableExistenceCheckResultToBoolean($result); } /** * @param string $tableName * @param array $columns * @return string * @codeCoverageIgnore Car simple délégation */ public function generateSQLForDataColumnsValidation($tableName, array $columns) { return $this->tableValidationHelper->generateSQLForColumnsValidation($tableName, $columns); Loading @@ -78,12 +90,18 @@ abstract class AbstractCodeGenerator implements CodeGeneratorInterface * @param array $result * @param array $expectedColumns * @return null|RuntimeException * @codeCoverageIgnore Car simple délégation */ public function convertDataColumnsValidationBadResultToException($tableName, array $result, array $expectedColumns) { return $this->tableValidationHelper->convertColumnsValidationResultToException($tableName, $result, $expectedColumns); } /** * @param string $tableName * @return string * @codeCoverageIgnore Car simple délégation */ public function generateSQLForHistoColumnsValidation($tableName) { return $this->tableValidationHelper->generateSQLForHistoColumnsValidation($tableName); Loading @@ -93,6 +111,7 @@ abstract class AbstractCodeGenerator implements CodeGeneratorInterface * @param string $tableName * @param array $result * @return null|RuntimeException * @codeCoverageIgnore Car simple délégation */ public function convertHistoColumnsValidationBadResultToException($tableName, array $result) { Loading src/UnicaenDbImport/Controller/ConsoleController.php +1 −1 Changes for src/UnicaenDbImport/Controller/ConsoleController.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ class ConsoleController extends AbstractConsoleController } $this->getConsole()->writeLine(); $this->getConsole()->writeLine("######################## Imports ########################", ColorInterface::BLUE); $this->getConsole()->writeLine("######################## IMPORTS ########################", ColorInterface::BLUE); $this->getConsole()->writeLine(); try { Loading test/UnicaenDbImportUnitTest/CodeGenerator/PostgreSQL/Helper/TableValidationHelperTest.php +21 −0 Changes for test/UnicaenDbImportUnitTest/CodeGenerator/PostgreSQL/Helper/TableValidationHelperTest.php: 21 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -68,4 +68,25 @@ EOT; $this->assertInstanceOf(RuntimeException::class, $exception); } public function test_can_generateSQLForHistoColumnsValidation() { $sql = $this->tableValidation->generateSQLForHistoColumnsValidation('table'); $expected = <<<EOT SELECT 'created_on', 'timestamp' UNION SELECT 'updated_on', 'timestamp' UNION SELECT 'deleted_on', 'timestamp' EOT; $this->assertContains($expected, $sql); } public function test_can_convertHistoColumnsValidationBadResultToException() { // 3 colonnes trouvées <==> succès de la validation $exception = $this->tableValidation->convertHistoColumnsValidationBadResultToException('table', [1, 2, 3]); $this->assertNull($exception); // sinon une exception doit être retournée $exception = $this->tableValidation->convertHistoColumnsValidationBadResultToException('table', [1, 2]); $this->assertInstanceOf(RuntimeException::class, $exception); } } test/UnicaenDbImportUnitTest/Importer/DatabaseFacadeTest.php→test/UnicaenDbImportUnitTest/DatabaseFacadeTest.php +1 −1 Changes for test/UnicaenDbImportUnitTest/DatabaseFacadeTest.php: 1 added line, 1 removed line. Original line number Diff line number Diff line <?php namespace UnicaenDbImportUnitTest\Importer; namespace UnicaenDbImportUnitTest; use Doctrine\DBAL\Connection; use Doctrine\DBAL\Driver\Statement; Loading test/UnicaenDbImportUnitTest/Importer/ImporterAbstractTest.php +29 −10 Changes for test/UnicaenDbImportUnitTest/Importer/ImporterAbstractTest.php: 29 added lines, 10 removed lines. Original line number Diff line number Diff line Loading @@ -19,16 +19,16 @@ abstract class ImporterAbstractTest extends \PHPUnit_Framework_TestCase /** * @var DatabaseFacade|\PHPUnit_Framework_MockObject_MockObject */ protected $databaseHelper; protected $databaseFacade; protected function setUp() { parent::setUp(); $this->databaseHelper = $this->createMock(DatabaseFacade::class); $this->databaseFacade = $this->createMock(DatabaseFacade::class); } public function test_can_create_run_import_without_intermediate_table() public function test_can_run_import_without_intermediate_table() { $import = $this->createImportMock(); $import->expects($this->atLeastOnce())->method('requiresIntermediateTable')->willReturn(FALSE); // no intermediate table Loading @@ -41,13 +41,13 @@ abstract class ImporterAbstractTest extends \PHPUnit_Framework_TestCase $this->assertResultIsCorrect($result); } public function test_can_create_run_import_with_intermediate_table() public function test_can_run_import_with_intermediate_table() { $import = $this->createImportMock(); $import->expects($this->atLeastOnce())->method('requiresIntermediateTable')->willReturn(TRUE); // intermediate table $import->expects($this->once())->method('getIntermediateTable')->willReturn('interm_ztemptable'); $this->databaseHelper->expects($this->once())->method('createIntermediateTable')->with('interm_ztemptable'); $this->databaseHelper->expects($this->once())->method('populateIntermediateTable')->with('interm_ztemptable'); $this->databaseFacade->expects($this->once())->method('createIntermediateTable')->with('interm_ztemptable'); $this->databaseFacade->expects($this->once())->method('populateIntermediateTable')->with('interm_ztemptable'); $this->importer->setImport($import); $result = $this->importer->run(); Loading @@ -60,7 +60,6 @@ abstract class ImporterAbstractTest extends \PHPUnit_Framework_TestCase { /** @var SourceInterface|\PHPUnit_Framework_MockObject_MockObject $source */ $source = $this->createMock(SourceInterface::class); // $source->expects($this->once())->method('getTable')->willReturn('src_ztemptable'); /** @var DestinationInterface|\PHPUnit_Framework_MockObject_MockObject $destination */ $destination = $this->createMock(DestinationInterface::class); Loading @@ -72,9 +71,9 @@ abstract class ImporterAbstractTest extends \PHPUnit_Framework_TestCase $import->expects($this->once())->method('getSource')->willReturn($source); $import->expects($this->once())->method('getDestination')->willReturn($destination); $this->databaseHelper->expects($this->once())->method('createMetaRequestCreationFunction')->with($source, $destination); $this->databaseHelper->expects($this->once())->method('executeDiffRequest'); $this->databaseHelper->expects($this->once())->method('fetchImportRegister')->willReturn([ $this->databaseFacade->expects($this->once())->method('createMetaRequestCreationFunction')->with($source, $destination); $this->databaseFacade->expects($this->once())->method('executeDiffRequest'); $this->databaseFacade->expects($this->once())->method('fetchImportRegister')->willReturn([ ['operation' => 'update', 'sql' => 'SQL UPDATE 1'], ['operation' => 'update', 'sql' => 'SQL UPDATE 2'], ['operation' => 'insert', 'sql' => 'SQL INSERT 1'], Loading Loading @@ -102,4 +101,24 @@ EOT; self::assertEquals($updateSQL, $result->getSQLForOperation('update')); self::assertEquals($insertSQL, $result->getSQLForOperation('insert')); } public function test_run_result_contains_thrown_exception() { $destination = $this->createMock(DestinationInterface::class); /** @var ImportInterface|\PHPUnit_Framework_MockObject_MockObject $import */ $import = $this->createMock(ImportInterface::class); $import->expects($this->once())->method('getName')->willReturn('import name'); $import->expects($this->once())->method('getDestination')->willReturn($destination); $exception = new \Exception(); $this->databaseFacade->expects($this->once())->method('validateDestinationTable')->willThrowException($exception); $this->importer->setImport($import); $result = $this->importer->run(); self::assertInstanceOf(ImportResult::class, $result); self::assertSame($exception, $result->getException()); self::assertEquals('import name', $result->getImportName()); } } No newline at end of file Loading
src/UnicaenDbImport/CodeGenerator/Common/AbstractCodeGenerator.php +19 −0 Changes for src/UnicaenDbImport/CodeGenerator/Common/AbstractCodeGenerator.php: 19 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -54,6 +54,11 @@ abstract class AbstractCodeGenerator implements CodeGeneratorInterface $this->functionCallingHelper = $functionCallingHelper; } /** * @param string $tableName * @return string * @codeCoverageIgnore Car simple délégation */ public function generateSQLForTableExistenceCheck($tableName) { return $this->tableValidationHelper->generateSQLForTableExistenceCheck($tableName); Loading @@ -62,12 +67,19 @@ abstract class AbstractCodeGenerator implements CodeGeneratorInterface /** * @param array $result * @return bool * @codeCoverageIgnore Car simple délégation */ public function convertTableExistenceCheckResultToBoolean(array $result) { return $this->tableValidationHelper->convertTableExistenceCheckResultToBoolean($result); } /** * @param string $tableName * @param array $columns * @return string * @codeCoverageIgnore Car simple délégation */ public function generateSQLForDataColumnsValidation($tableName, array $columns) { return $this->tableValidationHelper->generateSQLForColumnsValidation($tableName, $columns); Loading @@ -78,12 +90,18 @@ abstract class AbstractCodeGenerator implements CodeGeneratorInterface * @param array $result * @param array $expectedColumns * @return null|RuntimeException * @codeCoverageIgnore Car simple délégation */ public function convertDataColumnsValidationBadResultToException($tableName, array $result, array $expectedColumns) { return $this->tableValidationHelper->convertColumnsValidationResultToException($tableName, $result, $expectedColumns); } /** * @param string $tableName * @return string * @codeCoverageIgnore Car simple délégation */ public function generateSQLForHistoColumnsValidation($tableName) { return $this->tableValidationHelper->generateSQLForHistoColumnsValidation($tableName); Loading @@ -93,6 +111,7 @@ abstract class AbstractCodeGenerator implements CodeGeneratorInterface * @param string $tableName * @param array $result * @return null|RuntimeException * @codeCoverageIgnore Car simple délégation */ public function convertHistoColumnsValidationBadResultToException($tableName, array $result) { Loading
src/UnicaenDbImport/Controller/ConsoleController.php +1 −1 Changes for src/UnicaenDbImport/Controller/ConsoleController.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ class ConsoleController extends AbstractConsoleController } $this->getConsole()->writeLine(); $this->getConsole()->writeLine("######################## Imports ########################", ColorInterface::BLUE); $this->getConsole()->writeLine("######################## IMPORTS ########################", ColorInterface::BLUE); $this->getConsole()->writeLine(); try { Loading
test/UnicaenDbImportUnitTest/CodeGenerator/PostgreSQL/Helper/TableValidationHelperTest.php +21 −0 Changes for test/UnicaenDbImportUnitTest/CodeGenerator/PostgreSQL/Helper/TableValidationHelperTest.php: 21 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -68,4 +68,25 @@ EOT; $this->assertInstanceOf(RuntimeException::class, $exception); } public function test_can_generateSQLForHistoColumnsValidation() { $sql = $this->tableValidation->generateSQLForHistoColumnsValidation('table'); $expected = <<<EOT SELECT 'created_on', 'timestamp' UNION SELECT 'updated_on', 'timestamp' UNION SELECT 'deleted_on', 'timestamp' EOT; $this->assertContains($expected, $sql); } public function test_can_convertHistoColumnsValidationBadResultToException() { // 3 colonnes trouvées <==> succès de la validation $exception = $this->tableValidation->convertHistoColumnsValidationBadResultToException('table', [1, 2, 3]); $this->assertNull($exception); // sinon une exception doit être retournée $exception = $this->tableValidation->convertHistoColumnsValidationBadResultToException('table', [1, 2]); $this->assertInstanceOf(RuntimeException::class, $exception); } }
test/UnicaenDbImportUnitTest/Importer/DatabaseFacadeTest.php→test/UnicaenDbImportUnitTest/DatabaseFacadeTest.php +1 −1 Changes for test/UnicaenDbImportUnitTest/DatabaseFacadeTest.php: 1 added line, 1 removed line. Original line number Diff line number Diff line <?php namespace UnicaenDbImportUnitTest\Importer; namespace UnicaenDbImportUnitTest; use Doctrine\DBAL\Connection; use Doctrine\DBAL\Driver\Statement; Loading
test/UnicaenDbImportUnitTest/Importer/ImporterAbstractTest.php +29 −10 Changes for test/UnicaenDbImportUnitTest/Importer/ImporterAbstractTest.php: 29 added lines, 10 removed lines. Original line number Diff line number Diff line Loading @@ -19,16 +19,16 @@ abstract class ImporterAbstractTest extends \PHPUnit_Framework_TestCase /** * @var DatabaseFacade|\PHPUnit_Framework_MockObject_MockObject */ protected $databaseHelper; protected $databaseFacade; protected function setUp() { parent::setUp(); $this->databaseHelper = $this->createMock(DatabaseFacade::class); $this->databaseFacade = $this->createMock(DatabaseFacade::class); } public function test_can_create_run_import_without_intermediate_table() public function test_can_run_import_without_intermediate_table() { $import = $this->createImportMock(); $import->expects($this->atLeastOnce())->method('requiresIntermediateTable')->willReturn(FALSE); // no intermediate table Loading @@ -41,13 +41,13 @@ abstract class ImporterAbstractTest extends \PHPUnit_Framework_TestCase $this->assertResultIsCorrect($result); } public function test_can_create_run_import_with_intermediate_table() public function test_can_run_import_with_intermediate_table() { $import = $this->createImportMock(); $import->expects($this->atLeastOnce())->method('requiresIntermediateTable')->willReturn(TRUE); // intermediate table $import->expects($this->once())->method('getIntermediateTable')->willReturn('interm_ztemptable'); $this->databaseHelper->expects($this->once())->method('createIntermediateTable')->with('interm_ztemptable'); $this->databaseHelper->expects($this->once())->method('populateIntermediateTable')->with('interm_ztemptable'); $this->databaseFacade->expects($this->once())->method('createIntermediateTable')->with('interm_ztemptable'); $this->databaseFacade->expects($this->once())->method('populateIntermediateTable')->with('interm_ztemptable'); $this->importer->setImport($import); $result = $this->importer->run(); Loading @@ -60,7 +60,6 @@ abstract class ImporterAbstractTest extends \PHPUnit_Framework_TestCase { /** @var SourceInterface|\PHPUnit_Framework_MockObject_MockObject $source */ $source = $this->createMock(SourceInterface::class); // $source->expects($this->once())->method('getTable')->willReturn('src_ztemptable'); /** @var DestinationInterface|\PHPUnit_Framework_MockObject_MockObject $destination */ $destination = $this->createMock(DestinationInterface::class); Loading @@ -72,9 +71,9 @@ abstract class ImporterAbstractTest extends \PHPUnit_Framework_TestCase $import->expects($this->once())->method('getSource')->willReturn($source); $import->expects($this->once())->method('getDestination')->willReturn($destination); $this->databaseHelper->expects($this->once())->method('createMetaRequestCreationFunction')->with($source, $destination); $this->databaseHelper->expects($this->once())->method('executeDiffRequest'); $this->databaseHelper->expects($this->once())->method('fetchImportRegister')->willReturn([ $this->databaseFacade->expects($this->once())->method('createMetaRequestCreationFunction')->with($source, $destination); $this->databaseFacade->expects($this->once())->method('executeDiffRequest'); $this->databaseFacade->expects($this->once())->method('fetchImportRegister')->willReturn([ ['operation' => 'update', 'sql' => 'SQL UPDATE 1'], ['operation' => 'update', 'sql' => 'SQL UPDATE 2'], ['operation' => 'insert', 'sql' => 'SQL INSERT 1'], Loading Loading @@ -102,4 +101,24 @@ EOT; self::assertEquals($updateSQL, $result->getSQLForOperation('update')); self::assertEquals($insertSQL, $result->getSQLForOperation('insert')); } public function test_run_result_contains_thrown_exception() { $destination = $this->createMock(DestinationInterface::class); /** @var ImportInterface|\PHPUnit_Framework_MockObject_MockObject $import */ $import = $this->createMock(ImportInterface::class); $import->expects($this->once())->method('getName')->willReturn('import name'); $import->expects($this->once())->method('getDestination')->willReturn($destination); $exception = new \Exception(); $this->databaseFacade->expects($this->once())->method('validateDestinationTable')->willThrowException($exception); $this->importer->setImport($import); $result = $this->importer->run(); self::assertInstanceOf(ImportResult::class, $result); self::assertSame($exception, $result->getException()); self::assertEquals('import name', $result->getImportName()); } } No newline at end of file