You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I wrote a functional test, where I create multiple new entities, inject some services and assert the results.
The code to be tested takes a persistent_object_identifier $id as a param and checks against two repositories using $repositoryX->findByIdentifier($id) (which uses getObjectByIdentifier in the background). The id could belong to two possible entity types. using the repository method findByIdentifier, the code finds out what entity type the id belongs to and based on that type, the control flow differs.
I expect an API, that doesn't ignore parameters and has no side effects. i don't know neos flow very well, however it seems like there is no unit test for this method. please correct me if I'm wrong.
Steps To Reproduce
Maybe a little code is best to explain it:
class FindByIdentifierExperimentalTest extends FunctionalTestCase
{
protected static $testablePersistenceEnabled = true;
public function testAssumptionThatAnyRepoCanFindAnyEntityTypeByIdentifier() {
// given: an entity of type Price
$originalPriceEntity = new Price();
$originalPriceEntity->amount = 5;
$originalPriceEntity->currency = "EUR";
$this->persistenceManager->add($originalPriceEntity);
$this->persistenceManager->persistAll();
$priceIdentifier = $this->persistenceManager->getIdentifierByObject($originalPriceEntity);
// when: a repository that manages a totally different entity type searches for the Price Entity
$voucherRepository = $this->objectManager->get(VoucherRepository::class);
$priceEntityFoundViaVoucherRepo = $voucherRepository->findByIdentifier($priceIdentifier);
// Then: the entity is being found, even though the repository queries for Voucher entities. Voucher and Price entity are not related at all.
$this->assertEquals($originalPriceEntity, $priceEntityFoundViaVoucherRepo);
}
}
Environment
- Flow:* 8.3.9
- PHP:8.1.23
Anything else?
I got a bit of mixed feelings about that. however, since I don't know the framework I'd like to have your views on this before I settle for an opinion.
The text was updated successfully, but these errors were encountered:
Is there an existing issue for this?
Current Behavior
I wrote a functional test, where I create multiple new entities, inject some services and assert the results.
The code to be tested takes a
persistent_object_identifier
$id as a param and checks against two repositories using$repositoryX->findByIdentifier($id)
(which usesgetObjectByIdentifier
in the background). The id could belong to two possible entity types. using the repository methodfindByIdentifier
, the code finds out what entity type the id belongs to and based on that type, the control flow differs.However, when the entity is marked as new in the persistence manager (NOT in the unit of work, see the link below for the code), this distinction is not made. the object type is being ignored. See here: https://github.com/neos/flow/blob/b44540d13874862e29671e4f7c40127c87b101b9/Classes/Persistence/Doctrine/PersistenceManager.php#L209
Expected Behavior
I expect an API, that doesn't ignore parameters and has no side effects. i don't know neos flow very well, however it seems like there is no unit test for this method. please correct me if I'm wrong.
Steps To Reproduce
Maybe a little code is best to explain it:
Environment
Anything else?
I got a bit of mixed feelings about that. however, since I don't know the framework I'd like to have your views on this before I settle for an opinion.
The text was updated successfully, but these errors were encountered: