create(); $workspace = Workspace::factory()->create(); WorkspaceMembership::factory()->for($workspace)->for($user)->create(['role' => 'owner']); $this->actingAs($user); session([\App\Support\Workspaces\WorkspaceContext::SESSION_KEY => $workspace->getKey()]); $this->get('/admin/_test/workspace-context') ->assertSuccessful() ->assertJson([ 'workspace_id' => $workspace->getKey(), ]); }); it('falls back to last_workspace_id when session workspace is invalid', function () { $user = User::factory()->create(); $workspace = Workspace::factory()->create(); WorkspaceMembership::factory()->for($workspace)->for($user)->create(['role' => 'owner']); $user->forceFill(['last_workspace_id' => $workspace->getKey()])->save(); $this->actingAs($user); session([\App\Support\Workspaces\WorkspaceContext::SESSION_KEY => 999999]); $this->get('/admin/_test/workspace-context') ->assertSuccessful() ->assertJson([ 'workspace_id' => $workspace->getKey(), ]); }); it('auto-selects the only membership workspace when nothing is selected', function () { $user = User::factory()->create(); $workspace = Workspace::factory()->create(); WorkspaceMembership::factory()->for($workspace)->for($user)->create(['role' => 'owner']); $this->actingAs($user); $this->get('/admin/_test/workspace-context') ->assertSuccessful() ->assertJson([ 'workspace_id' => $workspace->getKey(), ]); expect($user->fresh()->last_workspace_id)->toBe($workspace->getKey()); }); it('redirects to no-access when user has zero workspace memberships', function () { $user = User::factory()->create(); $this->actingAs($user); $this->get('/admin/_test/workspace-context') ->assertRedirect('/admin/no-access'); }); it('redirects to choose-workspace when user has multiple workspaces and none selected', function () { $user = User::factory()->create(); $workspaceA = Workspace::factory()->create(); $workspaceB = Workspace::factory()->create(); WorkspaceMembership::factory()->for($workspaceA)->for($user)->create(['role' => 'owner']); WorkspaceMembership::factory()->for($workspaceB)->for($user)->create(['role' => 'owner']); $this->actingAs($user); $this->get('/admin/_test/workspace-context') ->assertRedirect('/admin/choose-workspace'); });