From: Johan Cwiklinski Date: Sun, 10 Oct 2021 11:59:49 +0000 (+0200) Subject: Add unit tests X-Git-Tag: 0.9.5.1~29 X-Git-Url: https://git.agnieray.net/?a=commitdiff_plain;h=f660722a7f68afa64da1a593fc32523eec2c986f;p=galette.git Add unit tests --- diff --git a/tests/Galette/Entity/tests/units/Adherent.php b/tests/Galette/Entity/tests/units/Adherent.php index 5d8a65bc6..b93353446 100644 --- a/tests/Galette/Entity/tests/units/Adherent.php +++ b/tests/Galette/Entity/tests/units/Adherent.php @@ -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(); + } } diff --git a/tests/GaletteTestCase.php b/tests/GaletteTestCase.php index 31da38260..17d2396c5 100644 --- a/tests/GaletteTestCase.php +++ b/tests/GaletteTestCase.php @@ -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 {