Générer une classe test pour les modules: page formulaire

Retour au menu

Menu

- Formulaire simple
- Formulaire avec des verifications

Choix: page formulaire avec des erreurs

Ce template permet de verifier la soumission d'un formulaire

Partons du même exemple que Formulaire simple

On va complexifier un peu: ajoutons une verification sur le champ nom de la ville qui ne doit pas etre vide

  
class row_ville extends abstract_row{
  
   
protected $sClassModel='model_ville';
  
   
/*exemple jointure
   public function findAuteur(){
       return model_auteur::getInstance()->findById($this->auteur_id);
   }
   */
   /*exemple test validation*/
   private function getCheck(){
       $oPluginValid=new plugin_valid($this->getTab());
      
       $oPluginValid
->isNotEmpty('nom','Le champ ne doit pas être vide');
      
       
/* renseigner vos check ici
       $oPluginValid->isEqual('champ','valeurB','Le champ n\est pas égal à '.$valeurB);
       $oPluginValid->isNotEqual('champ','valeurB','Le champ est égal à '.$valeurB);
       $oPluginValid->isUpperThan('champ','valeurB','Le champ n\est pas supé à '.$valeurB);
       $oPluginValid->isUpperOrEqualThan('champ','valeurB','Le champ n\est pas supé ou égal à '.$valeurB);
       $oPluginValid->isLowerThan('champ','valeurB','Le champ n\est pas inférieur à '.$valeurB);
       $oPluginValid->isLowerOrEqualThan('champ','valeurB','Le champ n\est pas inférieur ou égal à '.$valeurB);
       $oPluginValid->isEmpty('champ','Le champ n\'est pas vide');
       $oPluginValid->isNotEmpty('champ','Le champ ne doit pas être vide');
       $oPluginValid->isEmailValid('champ','L\email est invalide');
       $oPluginValid->matchExpression('champ','/[0-9]/','Le champ n\'est pas au bon format');
       $oPluginValid->notMatchExpression('champ','/[a-zA-Z]/','Le champ ne doit pas être a ce format');
       */

       return $oPluginValid;
   }
    



On duplique notre test actuel (copie/colle de la methode) en vidant le champ nom :
Avec cette modification, le meme test provoquerait une erreur, indiquant que le test n'a pas appele la méthode "update", ce qui est normal vu que le check aura detecter le champ vide.

Dans ce cas la, on ne veut plus verifier l'objet enregistré en base mais le code d'erreur d'un envoi vide.

Ce qui donnera le code suivant:


  
public function test_editErrorVide()
{

   //Arrange
   //objet de base
   $oExampleVille=new row_ville(array(
       'id'=>45,
       'nom' => 'ville 45',
   ));

   $oModelVille $this->getMock('model_ville');
   $oModelVille->method('findById')->will($this->returnValue($oExampleVille));
  
   
//pour le mk: on assigne le mock a l'instance model (pour qu'il soit appele dans le code) via model_ville::getInstance()
   model_ville::UTsetInstance('model_ville',$oModelVille);
  
  
//Act
   //on va simuler l'envoi d'un id en url et du champ nom en post
   $tGet=array(
       'id' => 45
   
);
   $tPost=array(
       //champs du formulaire
       'nom' => '',
   );
   //on simule le formulaire
   $oForm=_unitTest::getForm();
   $oForm->setGet($tGet);
   $oForm->setPost($tPost);
   $oForm->enableToken();
   $oForm->send();

  
   $oModuleVille
=new module_ville;
   $oModuleVille->before();
   $oModuleVille->_edit();
  
   
//Assert
   $this->assertEquals($oModuleVille->oLayout->UTgetView('main')->tMessage,array('nom'=>array('Le champ ne doit pas être vide') ) );




}
    



On verifie ici le message d'erreur du formulaire en recuperant le tableau tMessage assigné à la vue principal.
Via le code suivant:

  
//Assert
$this->assertEquals($oModuleVille->oLayout->UTgetView('main')->tMessage,array('nom'=>array('Le champ ne doit pas être vide') ) );
    



Vous voyez ici que l'on utilise une méthode $this->oLayout->UTgetView('main') pour recuperer la vue ajouté à l'emplacement 'main' du Layout