Browse Source

Préambule à la résolution de #155 : des tests unitaires (old school) sur

`saisies_deplacer()`.

On en profite pour ajouter la syntaxe `[fieldset][0]` pour déplacer en
début de fieldset.
no_submit
Maïeul 11 months ago
parent
commit
f92e6d64db
  1. 15
      inc/saisies_manipuler.php
  2. 246
      tests/saisies_deplacer/saisies_deplacer.php

15
inc/saisies_manipuler.php

@ -227,7 +227,10 @@ function saisies_dupliquer($saisies, $id_ou_nom_ou_chemin) {
*
* @param array $saisies Un tableau décrivant les saisies
* @param unknown_type $id_ou_nom_ou_chemin L'identifiant unique ou le nom ou le chemin de la saisie à déplacer
* @param string $ou Le nom de la saisie devant laquelle on déplacera OU le nom d'un conteneur entre crochets [conteneur] (et dans ce cas on déplace à la fin de conteneur)
* @param string $ou
* - Le nom de la saisie devant laquelle on déplacera
* - OU le nom d'un conteneur entre crochets [conteneur] (et dans ce cas on déplace à la fin de conteneur)
* - OU le nom d'un conteneur entre crochets suivi d'un identifiant numérique entre crochets [conteneur][x] (et dans ce cas on déplace à la position x au sein du conteneur)
*
* @return array Retourne le tableau modifié des saisies
*/
@ -242,7 +245,7 @@ function saisies_deplacer($saisies, $id_ou_nom_ou_chemin, $ou) {
if (!$ou) {
$saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin);
$chemin = array(count($saisies));
} elseif (preg_match('/^\[(@?[\w]*)\]$/', $ou, $match)) {
} elseif (preg_match('/^\[(@?[\w]*)\](\[([\d])*\])*$/', $ou, $match)) {
// Si l'endroit est entre crochet, c'est un conteneur
$parent = $match[1];
// Si dans les crochets il n'y a rien, on met à la fin du formulaire
@ -254,7 +257,13 @@ function saisies_deplacer($saisies, $id_ou_nom_ou_chemin, $ou) {
// S'il existe on supprime la saisie et on recherche la nouvelle position
$saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin);
$parent = saisies_chercher($saisies, $parent, true);
$chemin = array_merge($parent, array('saisies', 1000000));
//Si [fieldset], inserer à la fin du fieldset, si [fieldset][X] inserer à la position X dans le fieldset
if (isset($match[3])) {
$position = $match[3];
} else {
$position = 10000000;
}
$chemin = array_merge($parent, array('saisies', $position));
} else {
$chemin = false;
}

246
tests/saisies_deplacer/saisies_deplacer.php

@ -0,0 +1,246 @@
<?php
/**
* Test unitaire de la fonction saisies_deplacer
* du fichier ../plugins/saisies/inc/saisies_manipuler.php
*
*/
$test = 'saisies_deplacer';
$remonte = "";
while (!is_file($remonte."test.inc") and !is_dir($remonte.'ecrire/'))
$remonte = $remonte."../";
foreach ([$remonte."test.inc", $remonte."tests/test.inc", $remonte."tests/tests/legacy/test.inc"] as $f) {
if (is_file($f)){
require $f;
break;
}
}
if (!defined('_SPIP_TEST_INC')) {
die('Impossible de trouver test.inc depuis ' .getcwd());
}
find_in_path("inc/saisies.php",'',true);
// chercher la fonction si elle n'existe pas
function tester_saisies_deplacer($saisies, $chemin='', $ou='') {
if (!function_exists($f='saisies_deplacer')){
find_in_path("inc/filtres.php",'',true);
$f = chercher_filtre($f);
}
return saisies_supprimer_identifiants($f($saisies, $chemin, $ou));
}
$g = 'tester_saisies_deplacer';
$err = tester_fun($g, essais_saisies_deplacer());
// si le tableau $err est pas vide ca va pas
if ($err) {
die ('<dl>' . join('', $err) . '</dl>');
}
echo "OK";
function essais_saisies_deplacer(){
$essais = array (
// Premier test unitaire : pas de chemin
array(
0 => array (
0 =>
array (
'saisie' => 'input',
'options' =>
array (
'nom' => 'input_a_deplacer'
)
),
1 =>
array (
'saisie' => 'input',
'options' =>
array (
'nom' => 'input_1',
)
),
),
1 => array (
0 =>
array (
'saisie' => 'input',
'options' =>
array (
'nom' => 'input_1',
)
),
1 =>
array (
'saisie' => 'input',
'options' =>
array (
'nom' => 'input_a_deplacer'
)
)
),
2 => 'input_a_deplacer',
3 => 'input_1',
),
// Deuxième test unitaire : saisie avec fieldset, on déplace en indiquant la saisie devant laquelle deplacer
array(
0 => array (
array(
'saisie' => 'fieldset',
'options' => array('nom' => 'fieldset'),
'saisies' => array(
0 =>
array (
'saisie' => 'input',
'options' =>
array (
'nom' => 'input_a_deplacer'
)
),
1 =>
array (
'saisie' => 'input',
'options' =>
array (
'nom' => 'input_1',
)
),
)
),
),
1 => array (
0 => array(
'saisie' => 'fieldset',
'options' => array('nom' => 'fieldset'),
'saisies' => array(
array (
'saisie' => 'input',
'options' =>
array (
'nom' => 'input_1',
)
)
),
),
array (
'saisie' => 'input',
'options' =>
array (
'nom' => 'input_a_deplacer'
)
),
),
2 => 'input_a_deplacer',
3 => 'input_1'
),
// Troisième test unitaire : saisie avec fieldset, on insère en indiquant le fieldset à la fin duquel insérer
array(
0 => array (
array(
'saisie' => 'fieldset',
'options' => array('nom' => 'fieldset'),
'saisies' => array(
0 =>
array (
'saisie' => 'input',
'options' =>
array (
'nom' => 'input_1'
)
),
1 =>
array (
'saisie' => 'input',
'options' =>
array (
'nom' => 'input_a_deplacer',
)
),
)
),
),
1 => array (
0 => array(
'saisie' => 'fieldset',
'options' => array('nom' => 'fieldset'),
'saisies' => array(
array (
'saisie' => 'input',
'options' =>
array (
'nom' => 'input_1',
)
)
),
),
1 =>
array (
'saisie' => 'input',
'options' =>
array (
'nom' => 'input_a_deplacer'
)
),
),
2 => 'input_a_deplacer',
3 => '[fieldset]'
),
// Quatrième test unitaire : saisie avec fieldset, on déplace en indiquant le fieldset et la position au sein du fieldset
array(
0 => array (
array(
'saisie' => 'fieldset',
'options' => array('nom' => 'fieldset'),
'saisies' => array(
0 =>
array (
'saisie' => 'input',
'options' =>
array (
'nom' => 'input_a_deplacer',
)
),
1 =>
array (
'saisie' => 'input',
'options' =>
array (
'nom' => 'input_1'
)
),
)
),
),
1 => array (
0 => array(
'saisie' => 'fieldset',
'options' => array('nom' => 'fieldset'),
'saisies' => array(
array (
'saisie' => 'input',
'options' =>
array (
'nom' => 'input_1',
)
)
),
),
1 =>
array (
'saisie' => 'input',
'options' =>
array (
'nom' => 'input_a_deplacer'
)
),
),
2 => 'input_a_deplacer',
3 => '[fieldset][0]'
),
);
return $essais;
}
?>
Loading…
Cancel
Save