Skip to content

Proposal: haveInRepository returns the created entity instead of the primary key #11

Description

@TavoNiievez

In many tests i have come across situations like this:

        $I->haveInRepository(User::class, [
            'name' => 'Jane',
            'email' => 'jane_doe@gmail.com',
            'password' => '123456',
            'enabled' => true
        ]);
        $user = $I->grabEntityFromRepository(User::class, [
            'email' => 'jane_doe@gmail.com'
        ]);
		// do assertions with the $user

Use haveInRepository, and then be forced to use grabEntityFromRepository to get the entity i just persisted. If i want to check that an entity listener is working, for example, i always have to execute those two statements.

My point is that this would be more useful:

        $user = $I->haveInRepository(User::class, [
            'name' => 'Jane',
            'email' => 'jane_doe@gmail.com',
            'password' => '123456',
            'enabled' => true
        ]);
		// do assertions with the $user

if i wanted to know the primary key of that entity, i would simply write:

        $user->getId();

In this context, the ORM is useful for its ability to abstract the details of the persistence process and leave it to me as a programmer to worry more about the data i am working with.

I'm not saying that getting the primary key is not useful, i am saying that it is much more useful to get the entity, where there is more information to work with in my tests, including the persistence identifier.

https://github.com/Codeception/module-doctrine2/blob/1ae32bdcd77abde4a583462f5949fc86b9bda2a2/src/Codeception/Module/Doctrine2.php#L504-L530

Please let me know your opinions about it.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions