diff --git a/sources/AppBundle/Association/Model/Repository/CompanyMemberRepository.php b/sources/AppBundle/Association/Model/Repository/CompanyMemberRepository.php index c61a2052c..c2aee8b39 100644 --- a/sources/AppBundle/Association/Model/Repository/CompanyMemberRepository.php +++ b/sources/AppBundle/Association/Model/Repository/CompanyMemberRepository.php @@ -156,7 +156,7 @@ public function getList(): array */ public function countByStatus($status) { - return (int) $this->getQuery('SELECT COUNT(id) AS nb FROM afup_personnes_physiques WHERE etat = :status') + return (int) $this->getQuery('SELECT COUNT(id) AS nb FROM afup_personnes_morales WHERE etat = :status') ->setParams(['status' => $status]) ->query($this->getCollection())->first()[0]->nb; } diff --git a/tests/integration/AppBundle/Association/Model/Repository/CompanyMemberRepositoryTest.php b/tests/integration/AppBundle/Association/Model/Repository/CompanyMemberRepositoryTest.php new file mode 100644 index 000000000..de459426f --- /dev/null +++ b/tests/integration/AppBundle/Association/Model/Repository/CompanyMemberRepositoryTest.php @@ -0,0 +1,62 @@ +get(CompanyMemberRepository::class); + $connection = self::getContainer()->get(Connection::class); + + // Une seule personne morale active, deux en attente. + $companyMemberRepository->save($this->buildCompanyMember(CompanyMember::STATUS_ACTIVE)); + $companyMemberRepository->save($this->buildCompanyMember(CompanyMember::STATUS_PENDING)); + $companyMemberRepository->save($this->buildCompanyMember(CompanyMember::STATUS_PENDING)); + + // Cinq personnes physiques actives, aucune en attente : des comptes + // volontairement différents de ceux des personnes morales ci-dessus, + // pour détecter toute confusion entre les deux tables. + for ($i = 0; $i < 5; $i++) { + $this->insertPhysicalPerson($connection, "physique{$i}@example.com", CompanyMember::STATUS_ACTIVE); + } + + self::assertSame(1, $companyMemberRepository->countByStatus(CompanyMember::STATUS_ACTIVE)); + self::assertSame(2, $companyMemberRepository->countByStatus(CompanyMember::STATUS_PENDING)); + } + + private function buildCompanyMember(int $status): CompanyMember + { + static $counter = 0; + $counter++; + + return (new CompanyMember()) + ->setFirstName('Prénom') + ->setLastName('Nom') + ->setEmail("morale{$counter}@example.com") + ->setCompanyName('Société de test') + ->setSiret('12345678901234') + ->setAddress('1 rue du Test') + ->setZipCode('75000') + ->setCity('Paris') + ->setCountry('FR') + ->setStatus($status); + } + + private function insertPhysicalPerson(Connection $connection, string $email, int $status): void + { + $connection->insert('afup_personnes_physiques', [ + 'roles' => '[]', + 'adresse' => '1 rue du Test', + 'email' => $email, + 'etat' => $status, + ]); + } +}