2021-10-17 23:10:10 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Friendica\Test\src\Profile\ProfileField\Depository;
|
|
|
|
|
2021-10-18 00:35:06 +02:00
|
|
|
use Friendica\Profile\ProfileField\Collection\ProfileFields;
|
2021-10-17 23:10:10 +02:00
|
|
|
use Friendica\Profile\ProfileField\Depository\ProfileField as ProfileFieldDepository;
|
|
|
|
use Friendica\Profile\ProfileField\Exception\ProfileFieldPersistenceException;
|
|
|
|
use Friendica\Profile\ProfileField\Factory\ProfileField as ProfileFieldFactory;
|
|
|
|
use Friendica\Security\PermissionSet\Depository\PermissionSet;
|
|
|
|
use Friendica\Security\PermissionSet\Factory\PermissionSet as PermissionSetFactory;
|
|
|
|
use Friendica\Security\PermissionSet\Depository\PermissionSet as PermissionSetDepository;
|
2021-10-18 20:50:53 +02:00
|
|
|
use Friendica\Test\FixtureTest;
|
|
|
|
use Friendica\DI;
|
2021-10-17 23:10:10 +02:00
|
|
|
|
2021-10-18 20:50:53 +02:00
|
|
|
class ProfileFieldTest extends FixtureTest
|
2021-10-17 23:10:10 +02:00
|
|
|
{
|
|
|
|
/** @var ProfileFieldDepository */
|
|
|
|
private $depository;
|
|
|
|
/** @var ProfileFieldFactory */
|
|
|
|
private $factory;
|
|
|
|
/** @var PermissionSetFactory */
|
|
|
|
private $permissionSetFactory;
|
|
|
|
/** @var PermissionSetDepository */
|
|
|
|
private $permissionSetDepository;
|
|
|
|
|
|
|
|
public function setUp(): void
|
|
|
|
{
|
|
|
|
parent::setUp();
|
|
|
|
|
2021-10-18 20:50:53 +02:00
|
|
|
$this->depository = DI::profileField();
|
|
|
|
$this->factory = DI::profileFieldFactory();
|
|
|
|
$this->permissionSetFactory = DI::permissionSetFactory();
|
|
|
|
$this->permissionSetDepository = DI::permissionSet();
|
2021-10-17 23:10:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test create ProfileField without a valid PermissionSet
|
|
|
|
*/
|
|
|
|
public function testSavingWithoutPermissionSet()
|
|
|
|
{
|
|
|
|
self::expectExceptionMessage('PermissionSet needs to be saved first.');
|
|
|
|
self::expectException(ProfileFieldPersistenceException::class);
|
|
|
|
|
|
|
|
$profileField = $this->factory->createFromValues(42, 0, 'public', 'value', $this->permissionSetFactory->createFromString(42, '', '<~>'));
|
|
|
|
|
|
|
|
self::assertEquals($profileField->uid, $profileField->permissionSet->uid);
|
|
|
|
|
|
|
|
$this->depository->save($profileField);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test saving a new entity
|
|
|
|
*/
|
|
|
|
public function testSaveNew()
|
|
|
|
{
|
|
|
|
$profileField = $this->factory->createFromValues(42, 0, 'public', 'value', $this->permissionSetDepository->save($this->permissionSetFactory->createFromString(42, '', '<~>')));
|
|
|
|
|
|
|
|
self::assertEquals($profileField->uid, $profileField->permissionSet->uid);
|
|
|
|
|
|
|
|
$savedProfileField = $this->depository->save($profileField);
|
|
|
|
|
|
|
|
self::assertNotNull($savedProfileField->id);
|
|
|
|
self::assertNull($profileField->id);
|
|
|
|
|
|
|
|
$selectedProfileField = $this->depository->selectOneById($savedProfileField->id);
|
|
|
|
|
|
|
|
self::assertEquals($savedProfileField, $selectedProfileField);
|
2021-10-18 00:35:06 +02:00
|
|
|
|
|
|
|
$profileFields = new ProfileFields([$selectedProfileField]);
|
|
|
|
$this->depository->deleteCollection($profileFields);
|
2021-10-17 23:10:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test updating the order of a ProfileField
|
|
|
|
*/
|
|
|
|
public function testUpdateOrder()
|
|
|
|
{
|
|
|
|
$profileField = $this->factory->createFromValues(42, 0, 'public', 'value', $this->permissionSetDepository->save($this->permissionSetFactory->createFromString(42, '', '<~>')));
|
|
|
|
|
|
|
|
self::assertEquals($profileField->uid, $profileField->permissionSet->uid);
|
|
|
|
|
|
|
|
$savedProfileField = $this->depository->save($profileField);
|
|
|
|
|
|
|
|
self::assertNotNull($savedProfileField->id);
|
|
|
|
self::assertNull($profileField->id);
|
|
|
|
|
|
|
|
$selectedProfileField = $this->depository->selectOneById($savedProfileField->id);
|
|
|
|
|
|
|
|
self::assertEquals($savedProfileField, $selectedProfileField);
|
|
|
|
|
|
|
|
$selectedProfileField->setOrder(66);
|
|
|
|
|
|
|
|
$updatedOrderProfileField = $this->depository->save($selectedProfileField);
|
|
|
|
|
|
|
|
self::assertEquals($selectedProfileField->id, $updatedOrderProfileField->id);
|
|
|
|
self::assertEquals(66, $updatedOrderProfileField->order);
|
|
|
|
|
|
|
|
// Even using the ID of the old, saved ProfileField returns the right instance
|
|
|
|
$updatedFromOldProfileField = $this->depository->selectOneById($savedProfileField->id);
|
|
|
|
self::assertEquals(66, $updatedFromOldProfileField->order);
|
2021-10-18 00:35:06 +02:00
|
|
|
|
|
|
|
$profileFields = new ProfileFields([$updatedFromOldProfileField]);
|
|
|
|
$this->depository->deleteCollection($profileFields);
|
2021-10-17 23:10:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test updating a whole entity
|
|
|
|
*/
|
|
|
|
public function testUpdate()
|
|
|
|
{
|
|
|
|
$profileField = $this->factory->createFromValues(42, 0, 'public', 'value', $this->permissionSetDepository->save($this->permissionSetFactory->createFromString(42, '', '<~>')));
|
|
|
|
|
|
|
|
self::assertEquals($profileField->uid, $profileField->permissionSet->uid);
|
|
|
|
|
|
|
|
$savedProfileField = $this->depository->save($profileField);
|
|
|
|
|
|
|
|
self::assertNotNull($savedProfileField->id);
|
|
|
|
self::assertNull($profileField->id);
|
|
|
|
|
|
|
|
$selectedProfileField = $this->depository->selectOneById($savedProfileField->id);
|
|
|
|
|
|
|
|
self::assertEquals($savedProfileField, $selectedProfileField);
|
|
|
|
|
2021-10-17 23:12:26 +02:00
|
|
|
$savedProfileField->update('another', 5, $this->permissionSetDepository->selectPublicForUser(42));
|
2021-10-17 23:10:10 +02:00
|
|
|
self::assertEquals(PermissionSet::PUBLIC, $savedProfileField->permissionSet->id);
|
|
|
|
|
|
|
|
$publicProfileField = $this->depository->save($savedProfileField);
|
|
|
|
|
2021-10-17 23:12:26 +02:00
|
|
|
self::assertEquals($this->permissionSetDepository->selectPublicForUser(42), $publicProfileField->permissionSet);
|
2021-10-17 23:10:10 +02:00
|
|
|
self::assertEquals('another', $publicProfileField->value);
|
|
|
|
self::assertEquals(5, $publicProfileField->order);
|
2021-10-18 00:35:06 +02:00
|
|
|
|
|
|
|
$profileFields = new ProfileFields([$publicProfileField]);
|
|
|
|
$this->depository->deleteCollection($profileFields);
|
2021-10-17 23:10:10 +02:00
|
|
|
}
|
|
|
|
}
|