<?php

use App\Models\User;
use App\Notifications\VerifyEmail;
use Illuminate\Auth\Events\Verified;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\Notification;
use Illuminate\Support\Facades\URL;
use Tests\TestCase;

it('can verify email', function () {
    $user = User::factory()->create(['email_verified_at' => null]);
    $url = URL::temporarySignedRoute('verification.verify', now()->addMinutes(60), ['user' => $user->id]);

    Event::fake();

    $this->postJson($url)
        ->assertSuccessful()
        ->assertJsonFragment(['status' => 'Your email has been verified!']);

    Event::assertDispatched(Verified::class, function (Verified $e) use ($user) {
        return $e->user->is($user);
    });
});