diff --git a/app/Console/Commands/ResetDemoAccountCommand.php b/app/Console/Commands/ResetDemoAccountCommand.php index 15dd4875..d11996c4 100644 --- a/app/Console/Commands/ResetDemoAccountCommand.php +++ b/app/Console/Commands/ResetDemoAccountCommand.php @@ -90,20 +90,25 @@ class ResetDemoAccountCommand extends Command $user = User::where('email', $email)->first(); if ($user) { - $user->update(['encryption_salt' => $salt]); + $user->encryption_salt = $salt; + $user->email_verified_at ??= now(); + $user->save(); return $user; } - return User::create([ + $user = new User([ 'email' => $email, 'name' => 'Demo User', 'password' => $password, - 'email_verified_at' => now(), 'onboarded_at' => now(), 'encryption_salt' => $salt, 'currency_code' => 'USD', ]); + $user->email_verified_at = now(); + $user->save(); + + return $user; } private function deleteExistingData(User $user): void diff --git a/tests/Feature/Console/ResetDemoAccountCommandTest.php b/tests/Feature/Console/ResetDemoAccountCommandTest.php index cace41c4..b83d2565 100644 --- a/tests/Feature/Console/ResetDemoAccountCommandTest.php +++ b/tests/Feature/Console/ResetDemoAccountCommandTest.php @@ -23,7 +23,21 @@ test('demo:reset creates demo user with basic data structure', function () { // Verify core data exists expect($user)->not->toBeNull(); + expect($user->email_verified_at)->not->toBeNull(); expect($user->accounts()->count())->toBe(6); expect($user->transactions()->count())->toBeGreaterThan(2000); expect($user->categories()->count())->toBe(63); })->group('slow'); + +test('demo:reset verifies existing unverified demo user', function () { + User::factory()->create([ + 'email' => 'demo@whisper.money', + 'email_verified_at' => null, + ]); + + $this->artisan('demo:reset')->assertSuccessful(); + + $user = User::where('email', 'demo@whisper.money')->first(); + + expect($user->email_verified_at)->not->toBeNull(); +})->group('slow');