I'm trying to test a database model with Laravel 6.
I try to assign an email to a user. When I printf($email), the user_id is correct, but on $this->assertDatabaseHas('emails', ['user_id' => $user->id]); the assertion fails.
The printf($email) output:
{
"address":"eliane49@example.com",
"isPrimary":true,
"user_id":1,
"verifyingtoken":"SJ9dgZXJyD",
"verified_at":null,
"updated_at":"2020-02-19 14:04:31",
"created_at":"2020-02-19 14:04:31",
"id":1
}
the assert found output:
{
"address": "eliane49@example.com",
"verifyingtoken": "SJ9dgZXJyD",
"user_id": null,
"isPrimary": "1",
"verified_at": null,
"created_at": "2020-02-19 14:04:31",
"updated_at": "2020-02-19 14:04:31"
}
Here is the test:
/** @test */
public function an_email_can_belong_to_a_user(){
$user = factory(App\User::class)->create();
$email = factory(App\Email::class)->create();
$user->emails()->save($email);
printf($email);
$this->assertDatabaseHas('emails', ['user_id' => $user->id]);
}
The email-migration:
public function up()
{
Schema::create('emails', function (Blueprint $table) {
$table->string('address')->unique();
$table->string('verifyingtoken');
$table->integer('user_id')->unsigned()->nullable();
$table->boolean('isPrimary');
$table->timestamp('verified_at')->nullable();
$table->primary(['address', 'user_id']);
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->timestamps();
});
}
Aucun commentaire:
Enregistrer un commentaire