getMessage()); $error = $locked->toError(); $payload = self::assertToolError($error, 'compat_incompatible'); self::assertSame(423, $error->get_error_data()['status']); self::assertStringContainsString('Fake Plugin', $payload['message']); self::assertStringContainsString('Fake fake-write', $payload['message']); self::assertNotSame('', $payload['hint']); self::assertSame(['fake-write'], array_column($payload['features'], 'id')); self::assertSame(['Fake: x() fehlt'], $payload['problems']); } public function testALockWithoutLockedCapabilitiesIsAProgrammingError(): void { $this->expectException(LogicException::class); CapabilityLocked::of([], []); } public function testUnknownIdsLockTheCall(): void { $locked = CapabilityLocked::unknown(['fake-x', 'fake-y']); $error = $locked->toError(); $payload = self::assertToolError($error, 'compat_incompatible'); self::assertSame(423, $error->get_error_data()['status']); self::assertSame(['fake-x', 'fake-y'], $payload['unknown']); self::assertStringContainsString('fake-x, fake-y', $payload['message']); self::assertSame(['fake-x', 'fake-y'], $locked->unknown); } public function testUnknownNeedsAtLeastOneId(): void { $this->expectException(LogicException::class); CapabilityLocked::unknown([]); } }