getCompletions(''); $this->assertSame(['draft', 'published', 'archived'], $result); } public function testCreatesProviderFromIntBackedEnumUsingNames() { $provider = new EnumCompletionProvider(PriorityEnum::class); $result = $provider->getCompletions(''); $this->assertSame(['LOW', 'MEDIUM', 'HIGH'], $result); } public function testCreatesProviderFromUnitEnumUsingNames() { $provider = new EnumCompletionProvider(UnitEnum::class); $result = $provider->getCompletions(''); $this->assertSame(['Yes', 'No'], $result); } public function testFiltersStringEnumValuesByPrefix() { $provider = new EnumCompletionProvider(StatusEnum::class); $result = $provider->getCompletions('ar'); $this->assertEquals(['archived'], $result); } public function testFiltersUnitEnumValuesByPrefix() { $provider = new EnumCompletionProvider(UnitEnum::class); $result = $provider->getCompletions('Y'); $this->assertSame(['Yes'], $result); } public function testReturnsEmptyArrayWhenNoValuesMatchPrefix() { $provider = new EnumCompletionProvider(StatusEnum::class); $result = $provider->getCompletions('xyz'); $this->assertSame([], $result); } public function testThrowsExceptionForNonEnumClass() { $this->expectException(InvalidArgumentException::class); $this->expectExceptionMessage('Class "stdClass" is not an enum.'); new EnumCompletionProvider(\stdClass::class); } public function testThrowsExceptionForNonExistentClass() { $this->expectException(InvalidArgumentException::class); $this->expectExceptionMessage('Class "NonExistentClass" is not an enum.'); new EnumCompletionProvider('NonExistentClass'); /* @phpstan-ignore argument.type */ } }