Neos\Flow\Tests\Unit\Aop\Pointcut\PointcutClassTypeFilterTest::reduceTargetClassNamesFiltersAllClassesExceptTheClassItselfAndAllItsSubclasses PHP Method

reduceTargetClassNamesFiltersAllClassesExceptTheClassItselfAndAllItsSubclasses() public method

    public function reduceTargetClassNamesFiltersAllClassesExceptTheClassItselfAndAllItsSubclasses()
    {
        $testClassName = uniqid('someTestInterface');
        eval('class ' . $testClassName . ' {}');
        $availableClassNames = [$testClassName, 'TestPackage\\Subpackage\\Class1', 'TestPackage\\Class2', 'TestPackage\\Subpackage\\SubSubPackage\\Class3', 'TestPackage\\Subpackage2\\Class4'];
        sort($availableClassNames);
        $availableClassNamesIndex = new Aop\Builder\ClassNameIndex();
        $availableClassNamesIndex->setClassNames($availableClassNames);
        $mockReflectionService = $this->getMockBuilder(ReflectionService::class)->disableOriginalConstructor()->getMock();
        $mockReflectionService->expects($this->any())->method('getAllSubClassNamesForClass')->with($testClassName)->will($this->returnValue(['TestPackage\\Subpackage\\Class1', 'TestPackage\\Subpackage\\SubSubPackage\\Class3', 'SomeMoreClass']));
        $classTypeFilter = new Aop\Pointcut\PointcutClassTypeFilter($testClassName);
        $classTypeFilter->injectReflectionService($mockReflectionService);
        $expectedClassNames = [$testClassName, 'TestPackage\\Subpackage\\Class1', 'TestPackage\\Subpackage\\SubSubPackage\\Class3'];
        sort($expectedClassNames);
        $expectedClassNamesIndex = new Aop\Builder\ClassNameIndex();
        $expectedClassNamesIndex->setClassNames($expectedClassNames);
        $result = $classTypeFilter->reduceTargetClassNames($availableClassNamesIndex);
        $this->assertEquals($expectedClassNamesIndex, $result, 'The wrong class names have been filtered');
    }