From 384080648e5fd33cc90c48d9690f14d3e02d3a2f Mon Sep 17 00:00:00 2001 From: Koda Date: Wed, 20 May 2026 13:58:34 +0000 Subject: [PATCH] Fix flaky user ordering assertion in SettingsApiTest --- tests/Feature/Api/SettingsApiTest.php | 28 ++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/tests/Feature/Api/SettingsApiTest.php b/tests/Feature/Api/SettingsApiTest.php index 9747a66..f3012fe 100644 --- a/tests/Feature/Api/SettingsApiTest.php +++ b/tests/Feature/Api/SettingsApiTest.php @@ -154,7 +154,7 @@ class SettingsApiTest extends TestCase { [$user, $project] = $this->projectContext(); $viewer = User::factory()->create(['name' => 'Visible User']); - User::factory()->create(['name' => 'Hidden User']); + $hiddenUser = User::factory()->create(['name' => 'Hidden User']); $teamViewer = User::factory()->create(['name' => 'Team Viewer']); $team = Team::factory()->create(); @@ -172,21 +172,31 @@ class SettingsApiTest extends TestCase 'title' => 'Scoped users ticket', ]); - $this->withApplicationKey($user) + $expectedUserIds = [$user->id, $viewer->id, $teamViewer->id]; + + $backlogResponse = $this->withApplicationKey($user) ->getJson(route('api.projects.backlog', $project)) ->assertOk() - ->assertJsonPath('data.users.0.name', $user->name) - ->assertJsonPath('data.users.1.name', 'Team Viewer') - ->assertJsonPath('data.users.2.name', 'Visible User') ->assertJsonCount(3, 'data.users'); - $this->withApplicationKey($user) + $backlogUserIds = collect($backlogResponse->json('data.users')) + ->pluck('id') + ->all(); + + $this->assertEqualsCanonicalizing($expectedUserIds, $backlogUserIds); + $this->assertNotContains($hiddenUser->id, $backlogUserIds); + + $ticketResponse = $this->withApplicationKey($user) ->getJson(route('api.projects.tickets.show', [$project, $ticket])) ->assertOk() - ->assertJsonPath('data.users.0.name', $user->name) - ->assertJsonPath('data.users.1.name', 'Team Viewer') - ->assertJsonPath('data.users.2.name', 'Visible User') ->assertJsonCount(3, 'data.users'); + + $ticketUserIds = collect($ticketResponse->json('data.users')) + ->pluck('id') + ->all(); + + $this->assertEqualsCanonicalizing($expectedUserIds, $ticketUserIds); + $this->assertNotContains($hiddenUser->id, $ticketUserIds); } public function test_project_repositories_and_user_git_connections_are_available(): void