Skip to content

Commit

Permalink
fixed unit test errors
Browse files Browse the repository at this point in the history
  • Loading branch information
koertho committed Aug 7, 2023
1 parent df308cf commit 406226b
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 24 deletions.
2 changes: 1 addition & 1 deletion src/Traits/PersonTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
use Contao\Model\Collection;
use Contao\StringUtil;
use Contao\UserModel;
use HeimrichHannot\UtilsBundle\Database\DatabaseUtil;
use HeimrichHannot\UtilsBundle\Util\Database\DatabaseUtil;
use HeimrichHannot\UtilsBundle\Util\Model\ModelUtil;

/**
Expand Down
2 changes: 1 addition & 1 deletion src/Util/User/UserUtil.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public function getActiveGroups(int|UserModel $user): ?Collection
public function hasActiveGroup(int|UserModel $user, int $groupId): bool
{
if (!($user instanceof UserModel)) {
$user = UserModel::findByPk($user);
$user = $this->contaoFramework->getAdapter(UserModel::class)->findByPk($user);
}

if (!$user) {
Expand Down
57 changes: 35 additions & 22 deletions tests/Util/User/UserUtilTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,9 @@ public function testGetActiveGroups()
$modelUtil = $this->createMock(ModelUtil::class);
$modelUtil->method('findModelInstancesBy')->willReturn($groupCollection);

$instance = $this->getTestInstance();
$instance = $this->getTestInstance([
'modelUtil' => $modelUtil,
]);

$activeGroups = $instance->getActiveGroups($userModel);
$this->assertInstanceOf(Collection::class, $activeGroups);
Expand Down Expand Up @@ -96,36 +98,47 @@ public function testGetActiveGroups()

public function testHasActiveGroup()
{
$builder = $this->getMockBuilder(UserUtil::class)
->setMethods(['getActiveGroups']);
$userModel = $this->mockClassWithProperties(UserModel::class, [
'groups' => serialize(['2', '5']),
]);

$instance = $this->getTestInstance([], $builder);
$groupCollection = new Collection([
$this->mockClassWithProperties(UserGroupModel::class, ['id' => 2]),
$this->mockClassWithProperties(UserGroupModel::class, ['id' => 5]),
], UserGroupModel::getTable());
$modelUtil = $this->createMock(ModelUtil::class);
$modelUtil->method('findModelInstancesBy')->willReturn($groupCollection);

$instance->method('getActiveGroups')->willReturnCallback(function (int $userId) {
switch ($userId) {
case 2:
return null;
$instance = $this->getTestInstance([
'modelUtil' => $modelUtil,
]);

case 1:
return new Collection([
$this->mockClassWithProperties(UserGroupModel::class, ['id' => 1]),
$this->mockClassWithProperties(UserGroupModel::class, ['id' => 2]),
], 'tl_user_group');
$this->assertTrue($instance->hasActiveGroup($userModel, 2));

default:
return null;
}
});

$this->assertTrue($instance->hasActiveGroup(1, 1));
$this->assertFalse($instance->hasActiveGroup(1, 3));
$this->assertFalse($instance->hasActiveGroup(2, 1));
$this->assertFalse($instance->hasActiveGroup(3, 1));
// $builder = $this->getMockBuilder(UserUtil::class)
// ->setMethods(['getActiveGroups']);

// $instance = $this->getTestInstance([], $builder);
//
// $instance->method('getActiveGroups')->willReturnCallback(function (int $userId) {
// return match ($userId) {
// 1 => new Collection([
// $this->mockClassWithProperties(UserGroupModel::class, ['id' => 1]),
// $this->mockClassWithProperties(UserGroupModel::class, ['id' => 2]),
// ], 'tl_user_group'),
// default => null,
// };
// });
//
// $this->assertTrue($instance->hasActiveGroup(1, 1));
// $this->assertFalse($instance->hasActiveGroup(1, 3));
// $this->assertFalse($instance->hasActiveGroup(2, 1));
// $this->assertFalse($instance->hasActiveGroup(3, 1));
}

public function testFindActiveUsersByGroup()
{
$userModelAdapterMock = $this->mockAdapter(['findBy']);
$userModelAdapterMock = $this->mockAdapter(['findBy']);
$userModelAdapterMock->method('findBy')->willReturnCallback(function ($columns, $values, $options) {
$users = [];
Expand Down

0 comments on commit 406226b

Please sign in to comment.