addRules(include __DIR__ . '/../../../../../static/dependencies.config.php') ->addRule(Database::class, ['instanceOf' => StaticDatabase::class, 'shared' => true]); $this->depository = $dice->create(ProfileFieldDepository::class); $this->factory = $dice->create(ProfileFieldFactory::class); $this->permissionSetFactory = $dice->create(PermissionSetFactory::class); $this->permissionSetDepository = $dice->create(PermissionSetDepository::class); $this->dba = $dice->create(Database::class); } /** * Test create ProfileField without a valid PermissionSet */ public function testSavingWithoutPermissionSet() { self::expectExceptionMessage('PermissionSet needs to be saved first.'); self::expectException(ProfileFieldPersistenceException::class); $this->loadFixture(__DIR__ . '/../../../../datasets/api.fixture.php', DI::dba()); $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() { $this->loadFixture(__DIR__ . '/../../../../datasets/api.fixture.php', DI::dba()); $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); /** @var ProfileField $selectedProfileField */ $selectedProfileField = $this->depository->selectOneById($savedProfileField->id); self::assertEquals($savedProfileField, $selectedProfileField); } /** * Test updating the order of a ProfileField */ public function testUpdateOrder() { $this->loadFixture(__DIR__ . '/../../../../datasets/api.fixture.php', DI::dba()); $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); /** @var ProfileField $selectedProfileField */ $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); } /** * Test updating a whole entity */ public function testUpdate() { $this->loadFixture(__DIR__ . '/../../../../datasets/api.fixture.php', DI::dba()); $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); /** @var ProfileField $selectedProfileField */ $selectedProfileField = $this->depository->selectOneById($savedProfileField->id); self::assertEquals($savedProfileField, $selectedProfileField); $savedProfileField->update('another', 5, $this->permissionSetDepository->selectPublicForUser(42)); self::assertEquals(PermissionSet::PUBLIC, $savedProfileField->permissionSet->id); $publicProfileField = $this->depository->save($savedProfileField); self::assertEquals($this->permissionSetDepository->selectPublicForUser(42), $publicProfileField->permissionSet); self::assertEquals('another', $publicProfileField->value); self::assertEquals(5, $publicProfileField->order); } }