Skip to content
Snippets Groups Projects
Commit 6f04d50f authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

0.9.9 (12/09/2024)

------------------

- [Fix] Correction des tests unitaires qui doivent passer
- Possibilité de configurer les tests unitaires via un fichier dnas config/autoload de l'appli pour éviter qu'il soit supprimé à chaque MAJ composer
- [Fix] Correction d'un bug lors du changement de nombre de caractères sur des character varying lors d'un update de DDL
parent ed509e71
No related branches found
No related tags found
No related merge requests found
Pipeline #30406 passed
......@@ -5,6 +5,14 @@ branche modernisation-gestion-donnees
- Dans le Table->merge, possibilité de définir une requête personnalisée pour les cas complexes
0.9.9 (12/09/2024)
------------------
- [Fix] Correction des tests unitaires qui doivent passer
- Possibilité de configurer les tests unitaires via un fichier dnas config/autoload de l'appli pour éviter qu'il soit supprimé à chaque MAJ composer
- [Fix] Correction d'un bug lors du changement de nombre de caractères sur des character varying lors d'un update de DDL
0.9.8 (22/08/2024)
------------------
......
......@@ -671,16 +671,10 @@ class TableManager extends AbstractManager implements TableManagerInterface
if ($this->sendEvent()->getReturn('no-exec')) return;
$column = $new['name'];
if ($this->isColDiffType($old, $new)) {
if ($this->isColDiffType($old, $new) || $this->isColDiffPrecision($old, $new)) {
$sql = "ALTER TABLE $table ALTER COLUMN $column TYPE " . $this->makeColumnType($new);
$this->addQuery($sql, 'Changement du type de la colonne ' . $column . ' de la table ' . $table);
}
if ($this->isColDiffPrecision($old, $new)) {
$length = (int)$new['length'];
$precision = (int)$new['precision'];
$sql = "ALTER TABLE $table ALTER COLUMN $column TYPE " . $this->makeColumnType($new)."($length,$precision);";
$this->addQuery($sql, 'Changement de la précision de la colonne ' . $column . ' de la table ' . $table);
}
}
......
......@@ -34,7 +34,7 @@ abstract class AbstractBddProtocoleTestCase extends AbstractBddTestCase
}
if (isset($action['expected'])) {
if (is_array($action['expected'])) {
$this->assertArrayEquals($result, $action['expected']);
$this->assertArrayEquals($action['expected'], $result);
} else {
$this->assertEquals($action['expected'], $result);
}
......
......@@ -20,14 +20,14 @@ abstract class AbstractBddTestCase extends TestCase
public function assertArrayEquals(array $a1, array $a2, bool $strict = false, string $path = ''): bool
public function assertArrayEquals(array $expected, array $actual, bool $strict = false, string $path = ''): bool
{
if ('' === $path) {
$this->calc = $a1;
$this->calc = $actual;
}
$k1 = array_keys($a1);
$k2 = array_keys($a2);
$k1 = array_keys($actual);
$k2 = array_keys($expected);
$diff = array_diff($k1, $k2);
$hasInt = false;
......@@ -47,21 +47,28 @@ abstract class AbstractBddTestCase extends TestCase
}
foreach ($k1 as $k) {
if (!isset($a2[$k])) continue;
if (!isset($expected[$k])) continue;
$p = $path . '/' . $k;
$a1Type = getType($a1[$k]);
$a2Type = getType($a2[$k]);
$a1Type = getType($actual[$k]);
$a2Type = getType($expected[$k]);
if ($a1Type != $a2Type) {
return $this->error('Des valeurs ne sont pas du même type (' . $p . ') : ' . $a2Type . ' attendu pour ' . $a1Type . ' calculé');
}
if (is_array($a1[$k])) {
if (!$this->assertArrayEquals($a1[$k], $a2[$k], $strict, $p)) {
if (is_array($actual[$k])) {
if (!$this->assertArrayEquals($expected[$k], $actual[$k], $strict, $p)) {
return $this->error('Des sous-tableaux sont différentes (' . $p . ')');
}
} else {
if ($a1[$k] !== $a2[$k]) {
return $this->error('Des valeurs sont différentes (' . $p . ') : ' . $a2[$k] . ' attendu pour ' . $a1[$k] . ' calculé');
if (('float' == $a1Type || 'double' == $a1Type) && ('float' == $a1Type || 'double' == $a1Type)) {
$diff = abs($actual[$k] - $expected[$k]) > 0.000001;
} else {
$diff = $actual[$k] !== $expected[$k];
}
if ($diff) {
return $this->error('Des valeurs sont différentes (' . $p . ') : ' . $expected[$k] . ' attendu pour ' . $actual[$k] . ' calculé');
}
}
}
......
......@@ -34,13 +34,22 @@ class BddAdminTest
public function config(): array
{
return require __DIR__ . '/config/config.local.php';
// Fichier présent dans le répertoire de config du module
$filename = __DIR__ . '/config/config.local.php';
if (file_exists($filename)) {
return require $filename;
}
// Fichier présent dans le répertoire de config de l'application
$filename = dirname(dirname(dirname(dirname(__DIR__))))
. '/config/autoload/bddadmin-tests.local.php';
var_dump($filename);
if (file_exists($filename)) {
return require $filename;
}
throw new \Exception('BddAdmin a besoin de configuration pour les tests unitaires. CF. tests/config/config.local.php.dist');
}
......
<?php
/*
Fichier de config à copier et à compléter.
A placer dans le même répertoire sous le nom config.local.php
Autre option : le placer dans le répertoire de votre application.
Cela présuppose que bddAdmin est situé dans le répertoire vendor/unicaen/bddadmin
et que le fichier de configuration soit appelé bddadmin-tests.local.php et placé dans config/autoload de votre application
*/
return [
'bdds' => [
'Postgresql' => [
......@@ -18,13 +29,13 @@ return [
'username' => '',
'password' => '',
],
'Mysql' => [
/*'Mysql' => [
'driver' => 'Mysql',
'host' => '',
'port' => '',
'dbname' => '',
'username' => '',
'password' => '',
],
],*/
],
];
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment