create(); SaveFile::factory()->count(3)->create(['user_id' => $user->id]); $this->assertCount(3, $user->saveFiles); } #[Test] public function it_has_many_settings(): void { $user = User::factory()->create(); UserSetting::factory()->count(2)->create(['user_id' => $user->id]); $this->assertCount(2, $user->settings); } #[Test] public function it_gets_setting_by_key(): void { $user = User::factory()->create(); UserSetting::factory()->create([ 'user_id' => $user->id, 'setting_key' => 'theme', 'setting_value' => 'dark', ]); $this->assertEquals('dark', $user->getSetting('theme')); } #[Test] public function it_returns_default_when_setting_not_found(): void { $user = User::factory()->create(); $this->assertEquals('default', $user->getSetting('nonexistent', 'default')); } #[Test] public function it_returns_null_when_setting_not_found_without_default(): void { $user = User::factory()->create(); $this->assertNull($user->getSetting('nonexistent')); } #[Test] public function it_sets_setting(): void { $user = User::factory()->create(); $user->setSetting('theme', 'dark'); $this->assertDatabaseHas('user_settings', [ 'user_id' => $user->id, 'setting_key' => 'theme', 'setting_value' => 'dark', ]); } #[Test] public function it_updates_existing_setting(): void { $user = User::factory()->create(); UserSetting::factory()->create([ 'user_id' => $user->id, 'setting_key' => 'theme', 'setting_value' => 'light', ]); $user->setSetting('theme', 'dark'); $this->assertDatabaseHas('user_settings', [ 'user_id' => $user->id, 'setting_key' => 'theme', 'setting_value' => 'dark', ]); $this->assertDatabaseCount('user_settings', 1); } #[Test] public function it_casts_email_verified_at_to_datetime(): void { $user = User::factory()->create(['email_verified_at' => '2024-01-15 10:30:00']); $this->assertInstanceOf(\Illuminate\Support\Carbon::class, $user->email_verified_at); } #[Test] public function it_hashes_password(): void { $user = User::factory()->create(['password' => 'test-password']); $this->assertNotEquals('test-password', $user->password); $this->assertTrue(\Hash::check('test-password', $user->password)); } #[Test] public function it_has_fillable_attributes(): void { $user = new User(); $this->assertEquals(['name', 'email', 'password'], $user->getFillable()); } #[Test] public function it_has_hidden_attributes(): void { $user = new User(); $this->assertEquals(['password', 'remember_token'], $user->getHidden()); } }