Commit f127e761 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Tests unitaires.

parent d19a66b7
Loading
Loading
Loading
Loading
+19 −0
Changes for src/UnicaenDbImport/CodeGenerator/Common/AbstractCodeGenerator.php: 19 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -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);
@@ -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);
@@ -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);
@@ -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)
    {
+1 −1
Changes for src/UnicaenDbImport/Controller/ConsoleController.php: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -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 {
+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
@@ -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);
    }
}
+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;
+29 −10
Changes for test/UnicaenDbImportUnitTest/Importer/ImporterAbstractTest.php: 29 added lines, 10 removed lines.
Original line number Diff line number Diff line
@@ -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
@@ -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();
@@ -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);
@@ -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'],
@@ -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