getId())); self::assertEquals(0, $group->getId()); self::assertTrue(\is_string($group->getName())); self::assertEquals('', $group->getName()); self::assertTrue(\is_int($group->getStatus())); self::assertEquals(GroupStatus::INACTIVE, $group->getStatus()); self::assertTrue(\is_string($group->getDescription())); self::assertEquals('', $group->getDescription()); $array = $group->toArray(); self::assertTrue(\is_array($array)); self::assertGreaterThan(0, \count($array)); self::assertEquals(\json_encode($array), $group->__toString()); self::assertEquals($array, $group->jsonSerialize()); } /** * @testdox The group name and description can be set and retrieved correctly */ public function testSetAndGetGroupNameDescription() : void { $group = new Group(); $group->setName('Duck'); self::assertEquals('Duck', $group->getName()); $group->setDescription('Animal'); self::assertEquals('Animal', $group->getDescription()); } /** * @testdox Group permissions can be added and checked for existence */ public function testPermissionHandling() : void { $group = new Group(); $group->addPermission(new class extends PermissionAbstract {}); self::assertEquals(1, \count($group->getPermissions())); $group->setPermissions([ new class extends PermissionAbstract {}, new class extends PermissionAbstract {}, ]); self::assertEquals(2, \count($group->getPermissions())); $group->addPermissions([ new class extends PermissionAbstract {}, new class extends PermissionAbstract {}, ]); self::assertEquals(4, \count($group->getPermissions())); $group->addPermissions([[ new class extends PermissionAbstract {}, new class extends PermissionAbstract {}, ]]); self::assertEquals(6, \count($group->getPermissions())); self::assertFalse($group->hasPermission(PermissionType::READ, 1, 'a', 'a', 1, 1, 1)); self::assertTrue($group->hasPermission(PermissionType::NONE)); } /** * @testdox The default status of the group can be changed to a different valid status */ public function testChangeStatus() : void { $group = new Group(); $group->setStatus(GroupStatus::ACTIVE); self::assertEquals(GroupStatus::ACTIVE, $group->getStatus()); } /** * @testdox A group can only have valid group status */ public function testStatusException() : void { self::expectException(\phpOMS\Stdlib\Base\Exception\InvalidEnumValue::class); $group = new Group(); $rand = 0; do { $rand = \mt_rand(PHP_INT_MIN, PHP_INT_MAX); } while (GroupStatus::isValidValue($rand)); $group->setStatus($rand); } }