IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

tester les PostValidateurs


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut tester les PostValidateurs
    Bonjour,
    dans un formulaire j'ai créer un postValidateur, en dev et en prod il marche parfaitement.
    Par contre quand je lance des tests il reviennent tjs positifs.

    Explication:
    1/ les user doivent suivre une formation
    2/ plusieurs dates sont possibles mais ils ne doivent s'inscrire qu'a une seule

    j'ai donc créer un postvalidateur qui check et ça marche en dev et prod.

    Par contre en test, je peut sans problème inscrire une même personne plusieurs fois !!!

  2. #2
    Membre émérite Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Par défaut
    Ton problème devrais peut être venir de ta base de données par exemple il enregistre jamais les formations sélectionné.

    Dans ton cas tu as seulement la BDD qui change alors il y a de grande chance que tu es une erreur Mysql regarde les logs tu auras la réponse.

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    ce n'est pas un probléme sql.

    mon schema:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    session:
      columns:
        name: string(50)
        description: string(255)
     
    session_date:
      columns:
        session_id: integer
        date: date
        max: integer
      relation:
        session:
          local: session_id
     
    inscription:
      columns:  
        user_id: integer
        session_date_id: integer
      relation:
        sfguarduser:
           local: user_id
        session_date:
          local session_date_id
    l'idée est qu'un user ne peut s'inscrire qu'a une session donc j'ai créer un postvalidator qui check si pour l'ensemble des session_date d'une session je n'ai pas déjà ce user.

    le postvalidator fonctionne parfaitement en dev & prod par contre en test, je peut sans problème inscrire une personne 2 fois pour la même session.
    et j'ai bien 2 enregistrements dans la table inscription donc aucune erreur sql

  4. #4
    Membre émérite Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Par défaut
    Réellement si tu n'as pas de problème avec le sql alors tu as dut faire une test sur l'environnement en amont ce qui fait que tu ne passe pas dans ton postvalidator().

    Je ne vois que ça, les forms ne sont pas impacté par les environnements donc ça fonctionne sur un environnement alors ça fonctionne sur tous.

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    hu comprend pas trop

    au cas ou, voila mon postvalidator:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    public function configure()
      {
          .....
     
          //add a post validator
          $this->validatorSchema->setPostValidator(new sfValidatorAnd(
                  array(
                    new sfValidatorCallback(
                            array('callback'=> array($this, 'checkMaxInscrit'))),
                    new sfValidatorCallback(
                            array('callback'=> array($this, 'checkdejaInscrit')))
                  )));
     
      }
     
    public function checkdejaInscrit($validator, $values)
      {
          $formation_session_info=  Doctrine_Core::getTable('formation_session_info')->find($values['formation_session_info_id']);
          $formation_session=$formation_session_info->getFormationSession();
     
          foreach($formation_session->getListDate() as $formation_session_info)
          {
              foreach($formation_session_info->getListInscrit() as $inscrit)
              {
                  if($inscrit->getUserId()==$values['user_id'])
                          throw new sfValidatorError($validator, 'déjà inscrit a cette session');
              }
          }
          return $values;
     
      }
    et mon test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    $browser->info('5- Post new inscription')->
            info('5.1 Submit an inscription')->
            get('/formation_session_inscription/new/')->
            with('request')->begin()->
                isParameter('module','formation_session_inscription')->
                isParameter('action','new')->
            end()->
     
            click('Save', array('formation_session_inscription'=>array(
                'formation_session_info_id' => 1,
                'user_id' => $user->getId(),
            )))->
            with('request')->begin()->
                isParameter('module','formation_session_inscription')->
                isParameter('action', 'create')->
            end() 
            ->call('/formation_session_inscription', 'GET', array())
            ->with('request')->begin()
                ->isParameter('module', 'formation_session_inscription')
                ->isParameter('action', 'index')
            ->end()
            ->with('response')->begin()
                ->isStatusCode(200)
            ->end()
      ;
    code que j'ai juste dupliqué pour voir s'il me sortait une erreur

Discussions similaires

  1. (MS DOS) Tester les services
    Par Furius dans le forum Windows
    Réponses: 23
    Dernier message: 20/06/2006, 14h36
  2. Tester les valeur d'une liste déroulante
    Par st0nky dans le forum Langage
    Réponses: 1
    Dernier message: 04/12/2005, 14h52
  3. tester les fichiers perl sur serveur
    Par delaune dans le forum Langage
    Réponses: 6
    Dernier message: 19/11/2005, 16h50
  4. Tester les procédures de restauration
    Par dcollart dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 23/08/2005, 13h51
  5. [JUnit] Pour tester les methodes d'acces à une sgdb
    Par yanis97 dans le forum Tests et Performance
    Réponses: 2
    Dernier message: 15/04/2004, 15h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo