]> git.agnieray.net Git - galette.git/commitdiff
Missing required fields on self subscription page; closes #1441
authorJohan Cwiklinski <johan@x-tnd.be>
Tue, 16 Jun 2020 05:01:02 +0000 (07:01 +0200)
committerJohan Cwiklinski <johan@x-tnd.be>
Tue, 16 Jun 2020 05:01:02 +0000 (07:01 +0200)
galette/lib/Galette/Entity/FieldsConfig.php
tests/Galette/Entity/tests/units/FieldsConfig.php

index 4e0ba9bfabd5f3e541457df72e12bf501f176790..767a34b4e4a9f16781d5f89e4d96f6cbda20f246 100644 (file)
@@ -571,6 +571,13 @@ class FieldsConfig
                             $o->disabled = false;
                         }
 
+                        if ($selfs === true) {
+                            //email, login and password are always required for self subscription
+                            $srequireds = ['email_adh', 'mdp_adh', 'login_adh'];
+                            if (in_array($o->field_id, $srequireds)) {
+                                $o->required = true;
+                            }
+                        }
                         $cat->elements[$o->field_id] = $o;
                     }
                 }
index 0c8fbb910bb9c88db45475e8350c8a28160c57b5..2885ab5d7a857abcf477d66c527bae6b4d7f4950 100644 (file)
@@ -493,13 +493,55 @@ class FieldsConfig extends atoum
         $this->integer($elements['fieldsets'][1]->id)->isIdenticalTo(3);
         $this->array($elements['fieldsets'][1]->elements)->hasSize(11);
 
+        $mail = $elements['fieldsets'][1]->elements['email_adh'];
+        $this->boolean($mail->required)->isFalse(); //email is not required per default
+
         $this->object($elements['fieldsets'][2])->isInstanceOf('\stdClass');
         $this->integer($elements['fieldsets'][2]->id)->isIdenticalTo(2);
         $this->array($elements['fieldsets'][2]->elements)
             ->hasSize(4)
             ->notHasKey('info_adh');
 
+        $login = $elements['fieldsets'][2]->elements['login_adh'];
+        $this->boolean($login->required)->isTrue();
+        $pass  = $elements['fieldsets'][2]->elements['mdp_adh'];
+        $this->boolean($pass->required)->isTrue();
+
         $this->array($elements['hiddens'])
             ->hasSize(2);
+
+        //form elements for self subscription
+        $no_login = new \mock\Galette\Core\Login(
+            $this->zdb,
+            new \Galette\Core\I18n(),
+            $session
+        );
+        $elements = $fields_config->getFormElements($no_login, false, true);
+        $this->array($elements)
+            ->hasSize(2)
+            ->hasKeys(['fieldsets', 'hiddens']);
+
+        $this->array($elements['fieldsets'])
+            ->hasSize(3);
+
+        $this->object($elements['fieldsets'][0])->isInstanceOf('\stdClass');
+        $this->integer($elements['fieldsets'][0]->id)->isIdenticalTo(1);
+        $this->array($elements['fieldsets'][0]->elements)->hasSize(10);
+
+        $this->object($elements['fieldsets'][1])->isInstanceOf('\stdClass');
+        $this->integer($elements['fieldsets'][1]->id)->isIdenticalTo(3);
+        $this->array($elements['fieldsets'][1]->elements)->hasSize(11);
+
+        $mail = $elements['fieldsets'][1]->elements['email_adh'];
+        $this->boolean($mail->required)->isTrue(); //email is required for self subscription
+
+        $this->object($elements['fieldsets'][2])->isInstanceOf('\stdClass');
+        $this->integer($elements['fieldsets'][2]->id)->isIdenticalTo(2);
+        $this->array($elements['fieldsets'][2]->elements)
+            ->hasSize(4)
+            ->notHasKey('info_adh');
+
+        $this->array($elements['hiddens'])
+             ->hasSize(2);
     }
 }