create(); $other = User::factory()->create(); UserSetting::create([ 'user_id' => $user->id, 'key' => 'editor', 'value' => ['theme' => 'dark'], ]); UserSetting::create([ 'user_id' => $user->id, 'key' => 'notifications', 'value' => ['email' => true], ]); UserSetting::create([ 'user_id' => $other->id, 'key' => 'editor', 'value' => ['theme' => 'light'], ]); Sanctum::actingAs($user); $response = $this->getJson('/api/user-settings'); $response->assertOk(); $response->assertJsonCount(2); $response = $this->getJson('/api/user-settings?key=editor'); $response->assertOk(); $response->assertJsonCount(1); $response->assertJsonFragment(['key' => 'editor']); }); it('creates or updates user settings', function (): void { $user = User::factory()->create(); Sanctum::actingAs($user); $response = $this->postJson('/api/user-settings', [ 'key' => 'editor', 'value' => ['theme' => 'dark'], ]); $response->assertOk(); $response->assertJsonFragment(['key' => 'editor']); $response = $this->postJson('/api/user-settings', [ 'key' => 'editor', 'value' => ['theme' => 'light'], ]); $response->assertOk(); $this->assertDatabaseHas('user_settings', [ 'user_id' => $user->id, 'key' => 'editor', ]); });