Merge branch 'feat/erp-39-qualimat-sync' into feat/erp-149-idtf-sync
This commit is contained in:
@@ -7,6 +7,7 @@ namespace App\Tests\Module\Transport\Infrastructure\Console;
|
||||
use Doctrine\DBAL\Connection;
|
||||
use Symfony\Bundle\FrameworkBundle\Console\Application;
|
||||
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Tester\CommandTester;
|
||||
|
||||
use const JSON_THROW_ON_ERROR;
|
||||
@@ -108,6 +109,30 @@ final class SyncQualimatCommandTest extends KernelTestCase
|
||||
self::assertSame(0, (int) $log['rows_skipped']);
|
||||
}
|
||||
|
||||
public function testEmptySourceAbortsWithoutMassDeactivation(): void
|
||||
{
|
||||
// Premier run : 2 transporteurs actifs.
|
||||
$a = ['Nom' => 'A', 'Siret' => '111 111 111 00011', 'Validite' => '01/01/2030', 'Statut' => 'Audité'];
|
||||
$b = ['Nom' => 'B', 'Siret' => '222 222 222 00022', 'Validite' => '01/01/2030', 'Statut' => 'Audité'];
|
||||
$this->runSync([$a, $b])->assertCommandIsSuccessful();
|
||||
self::assertSame(2, $this->countRows('SELECT COUNT(*) FROM qualimat_carrier WHERE is_active = TRUE'));
|
||||
|
||||
// Source ne contenant que des items inexploitables (zero ligne mappee) :
|
||||
// la commande doit ECHOUER sans toucher le referentiel (pas de soft-delete
|
||||
// de masse) et sans journaliser de run.
|
||||
$logsBefore = $this->countRows('SELECT COUNT(*) FROM qualimat_sync_log');
|
||||
$tester = $this->runSync([
|
||||
['Nom' => 'SANS SIRET 1', 'Siret' => null],
|
||||
['Nom' => 'SANS SIRET 2', 'Siret' => ' '],
|
||||
]);
|
||||
|
||||
self::assertSame(Command::FAILURE, $tester->getStatusCode());
|
||||
// Les 2 transporteurs restent ACTIFS (aucune desactivation de masse).
|
||||
self::assertSame(2, $this->countRows('SELECT COUNT(*) FROM qualimat_carrier WHERE is_active = TRUE'));
|
||||
// Aucun journal supplementaire (abandon avant la transaction).
|
||||
self::assertSame($logsBefore, $this->countRows('SELECT COUNT(*) FROM qualimat_sync_log'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<int, array<string, mixed>> $items
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user