get data Factory Relationships for Laravel Testing

299 views Asked by At

according laravel-database-testing

I have a factory relationship for testing data, my code like this

 public function test_users_can_authenticate_using_the_login_screen()
    {
        $this->seed(RoleSeeder::class);
        $data = Organization::factory()
            ->count(1)
            ->has(User::factory()->count(2), 'users')
            ->create();

        $response = $this->post('/login', [
            'email' => $data->email,
            'password' => 'password',
        ]);

        $this->assertAuthenticated();
        $response->assertRedirect(RouteServiceProvider::HOME);
    }

How do I get the user->email data??, when i try $data->email or $data->users are not found?

1

There are 1 answers

1
Localhousee On BEST ANSWER

Have you add the relationship for both models (Organization & User)?

If yes, then you need to check specific which user you want to grab. Since it returns array of users.

try this for example

$data = Organization::factory()
            ->count(1)
            ->has(User::factory()->count(2), 'users')
            ->create();
$firstUserEmail = $data->users[0]->email;