You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1009 B
39 lines
1009 B
<?php
|
|
|
|
use App\Domains\Identity\Models\User;
|
|
use App\Domains\Identity\Queries\Dashboard\GetUserVerificationRates;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
|
|
uses(Tests\TestCase::class, RefreshDatabase::class);
|
|
|
|
test('it can fetch user verification rates', function () {
|
|
// Create 3 verified users
|
|
User::factory()->count(3)->create([
|
|
'email_verified_at' => now(),
|
|
]);
|
|
|
|
// Create 2 unverified users
|
|
User::factory()->count(2)->create([
|
|
'email_verified_at' => null,
|
|
]);
|
|
|
|
$query = new GetUserVerificationRates();
|
|
$results = $query->fetch();
|
|
|
|
expect($results)->toBe([
|
|
'verified' => 3,
|
|
'unverified' => 2,
|
|
'verification_rate' => 60.0, // (3/5) * 100
|
|
]);
|
|
});
|
|
|
|
test('it returns zero rates when no users exist', function () {
|
|
$query = new GetUserVerificationRates();
|
|
$results = $query->fetch();
|
|
|
|
expect($results)->toBe([
|
|
'verified' => 0,
|
|
'unverified' => 0,
|
|
'verification_rate' => 0,
|
|
]);
|
|
});
|
|
|