]> git.agnieray.net Git - galette.git/commitdiff
Add unit tests
authorJohan Cwiklinski <johan@x-tnd.be>
Sun, 10 Oct 2021 11:59:49 +0000 (13:59 +0200)
committerJohan Cwiklinski <johan@x-tnd.be>
Sun, 17 Oct 2021 04:15:40 +0000 (06:15 +0200)
tests/Galette/Entity/tests/units/Adherent.php
tests/GaletteTestCase.php

index 5d8a65bc66af3b9a1168f6793f418d3b4312b210..b93353446b9f448f99139b469b2c8f7cae1972bf 100644 (file)
@@ -514,4 +514,105 @@ class Adherent extends GaletteTestCase
         $this->string($member->sfullname)->isIdenticalTo('DOE Johny Console.log("anything");');
         $this->string($member->others_infos)->isIdenticalTo('Any console.log("useful"); information');
     }
+
+    /**
+     * Test can* methods
+     *
+     * @return void
+     */
+    public function testCan()
+    {
+        $this->getMemberOne();
+        //load member from db
+        $member = new \Galette\Entity\Adherent($this->zdb, $this->adh->id);
+
+        $this->boolean($member->canShow($this->login))->isFalse();
+        $this->boolean($member->canCreate($this->login))->isFalse();
+        $this->boolean($member->canEdit($this->login))->isFalse();
+
+        //Superadmin can fully change members
+        $this->login->logAdmin('superadmin', $this->preferences);
+        $this->boolean($this->login->isLogged())->isTrue();
+        $this->boolean($this->login->isSuperAdmin())->isTrue();
+
+        $this->boolean($member->canShow($this->login))->isTrue();
+        $this->boolean($member->canCreate($this->login))->isTrue();
+        $this->boolean($member->canEdit($this->login))->isTrue();
+
+        //logout
+        $this->login->logOut();
+        $this->boolean($this->login->isLogged())->isFalse();
+
+        //Member can fully change its own information
+        $mdata = $this->dataAdherentOne();
+        $this->boolean($this->login->login($mdata['login_adh'], $mdata['mdp_adh']))->isTrue();
+        $this->boolean($this->login->isLogged())->isTrue();
+        $this->boolean($this->login->isAdmin())->isFalse();
+        $this->boolean($this->login->isStaff())->isFalse();
+
+        $this->boolean($member->canShow($this->login))->isTrue();
+        $this->boolean($member->canCreate($this->login))->isTrue();
+        $this->boolean($member->canEdit($this->login))->isTrue();
+
+        //logout
+        $this->login->logOut();
+        $this->boolean($this->login->isLogged())->isFalse();
+
+        //Another member has no access
+        $this->getMemberTwo();
+        $mdata = $this->dataAdherentTwo();
+        $this->boolean($this->login->login($mdata['login_adh'], $mdata['mdp_adh']))->isTrue();
+        $this->boolean($this->login->isLogged())->isTrue();
+        $this->boolean($this->login->isAdmin())->isFalse();
+        $this->boolean($this->login->isStaff())->isFalse();
+
+        $this->boolean($member->canShow($this->login))->isFalse();
+        $this->boolean($member->canCreate($this->login))->isFalse();
+        $this->boolean($member->canEdit($this->login))->isFalse();
+
+        //parents can fully change children information
+        $this->getMemberOne();
+        $mdata = $this->dataAdherentOne();
+        global $login;
+        $login = $this->login;
+        $this->login->logAdmin('superadmin', $this->preferences);
+        $this->boolean($this->login->isLogged())->isTrue();
+        $this->boolean($this->login->isSuperAdmin())->isTrue();
+
+        $child_data = [
+                'nom_adh'       => 'Doe',
+                'prenom_adh'    => 'Johny',
+                'parent_id'     => $member->id,
+                'attach'        => true,
+                'login_adh'     => 'child.johny.doe',
+                'fingerprint' => 'FAKER' . $this->seed
+        ];
+        $child = $this->createMember($child_data);
+        $cid = $child->id;
+        $this->login->logOut();
+
+        //load child from db
+        $child = new \Galette\Entity\Adherent($this->zdb);
+        $child->enableDep('parent');
+        $this->boolean($child->load($cid))->isTrue();
+
+        $this->string($child->name)->isIdenticalTo($child_data['nom_adh']);
+            $this->object($child->parent)->isInstanceOf('\Galette\Entity\Adherent');
+        $this->integer($child->parent->id)->isIdenticalTo($member->id);
+        $this->boolean($this->login->login($mdata['login_adh'], $mdata['mdp_adh']))->isTrue();
+
+        $mdata = $this->dataAdherentOne();
+        $this->boolean($this->login->login($mdata['login_adh'], $mdata['mdp_adh']))->isTrue();
+        $this->boolean($this->login->isLogged())->isTrue();
+        $this->boolean($this->login->isAdmin())->isFalse();
+        $this->boolean($this->login->isStaff())->isFalse();
+
+        $this->boolean($child->canShow($this->login))->isTrue();
+        $this->boolean($child->canCreate($this->login))->isFalse();
+        $this->boolean($child->canEdit($this->login))->isTrue();
+
+        //logout
+        $this->login->logOut();
+        $this->boolean($this->login->isLogged())->isFalse();
+    }
 }
index 31da38260027d409bb0127581140c17294de9f04..17d2396c5c7549b77e3b24cdd09116d4e7e10650 100644 (file)
@@ -247,17 +247,23 @@ abstract class GaletteTestCase extends atoum
      */
     public function createMember(array $data)
     {
-        $adh = $this->adh;
-        $check = $adh->check($data, [], []);
+        $this->adh = new \Galette\Entity\Adherent($this->zdb);
+        $this->adh->setDependencies(
+            $this->preferences,
+            $this->members_fields,
+            $this->history
+        );
+
+        $check = $this->adh->check($data, [], []);
         if (is_array($check)) {
             var_dump($check);
         }
         $this->boolean($check)->isTrue();
 
-        $store = $adh->store();
+        $store = $this->adh->store();
         $this->boolean($store)->isTrue();
 
-        return $adh;
+        return $this->adh;
     }
 
     /**
@@ -479,8 +485,38 @@ abstract class GaletteTestCase extends atoum
      */
     protected function adhOneExists()
     {
+        $mdata = $this->dataAdherentOne();
         $select = $this->zdb->select(\Galette\Entity\Adherent::TABLE, 'a');
-        $select->where(array('a.fingerprint' => 'FAKER' . $this->seed));
+        $select->where(
+            array(
+                'a.fingerprint' => 'FAKER' . $this->seed,
+                'a.login_adh' => $mdata['login_adh']
+            )
+        );
+
+        $results = $this->zdb->execute($select);
+        if ($results->count() === 0) {
+            return false;
+        } else {
+            return $results;
+        }
+    }
+
+    /**
+     * Look in database if test member already exists
+     *
+     * @return false|ResultSet
+     */
+    protected function adhTwoExists()
+    {
+        $mdata = $this->dataAdherentTwo();
+        $select = $this->zdb->select(\Galette\Entity\Adherent::TABLE, 'a');
+        $select->where(
+            array(
+                'a.fingerprint' => 'FAKER' . $this->seed,
+                'a.login_adh' => $mdata['login_adh']
+            )
+        );
 
         $results = $this->zdb->execute($select);
         if ($results->count() === 0) {
@@ -512,7 +548,7 @@ abstract class GaletteTestCase extends atoum
      */
     protected function getMemberTwo()
     {
-        $rs = $this->adhOneExists();
+        $rs = $this->adhTwoExists();
         if ($rs === false) {
             $this->createMember($this->dataAdherentTwo());
         } else {