create(); $otherTenant = Tenant::factory()->create(); InventoryItem::factory()->create([ 'tenant_id' => $tenant->getKey(), 'display_name' => 'Item A', 'policy_type' => 'deviceConfiguration', 'external_id' => 'item-a', 'platform' => 'windows', ]); InventoryItem::factory()->create([ 'tenant_id' => $otherTenant->getKey(), 'display_name' => 'Item B', 'policy_type' => 'deviceConfiguration', 'external_id' => 'item-b', 'platform' => 'windows', ]); $user = User::factory()->create(); $user->tenants()->syncWithoutDetaching([ $tenant->getKey() => ['role' => 'owner'], $otherTenant->getKey() => ['role' => 'owner'], ]); $this->actingAs($user) ->get(InventoryItemResource::getUrl('index', tenant: $tenant)) ->assertOk() ->assertSee('Item A') ->assertDontSee('Item B'); }); test('non-members are denied access to inventory item tenant routes (404)', function () { $tenant = Tenant::factory()->create(); $otherTenant = Tenant::factory()->create(); [$user] = createUserWithTenant($otherTenant, role: 'owner'); $this->actingAs($user) ->get(InventoryItemResource::getUrl('index', tenant: $tenant)) ->assertStatus(404); }); test('members without capability see inventory sync action disabled with standard tooltip', function () { $tenant = Tenant::factory()->create(); [$user] = createUserWithTenant($tenant, role: 'readonly'); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Livewire::actingAs($user) ->test(ListInventoryItems::class) ->assertActionVisible('run_inventory_sync') ->assertActionDisabled('run_inventory_sync') ->assertActionExists('run_inventory_sync', fn ($action): bool => $action->getTooltip() === UiTooltips::insufficientPermission()); });