notOnboarded()->create(); SendOnboardingReminderEmailJob::dispatchSync($user); Mail::assertQueued(OnboardingReminderEmail::class, function ($mail) use ($user) { return $mail->hasTo($user->email); }); $this->assertDatabaseHas('user_mail_logs', [ 'user_id' => $user->id, 'email_type' => DripEmailType::OnboardingReminder->value, ]); }); test('onboarding reminder email is not sent to onboarded users', function () { $user = User::factory()->onboarded()->create(); SendOnboardingReminderEmailJob::dispatchSync($user); Mail::assertNotQueued(OnboardingReminderEmail::class); $this->assertDatabaseMissing('user_mail_logs', [ 'user_id' => $user->id, 'email_type' => DripEmailType::OnboardingReminder->value, ]); }); test('onboarding reminder email is not sent if already received', function () { $user = User::factory()->notOnboarded()->create(); UserMailLog::factory()->for($user)->onboardingReminder()->create(); SendOnboardingReminderEmailJob::dispatchSync($user); Mail::assertNotQueued(OnboardingReminderEmail::class); });