Phalcon\Test\Unit\Annotations\ReflectionTest::testClassAnnotations PHP Method

testClassAnnotations() public method

Tests parsing class annotations
Since: 2016-01-26
Author: Serghei Iakovlev ([email protected])
    public function testClassAnnotations()
    {
        $this->specify('Reflection does not parse annotations correctly', function () {
            $reader = new Reader();
            $reflection = new Reflection($reader->parse('TestClass'));
            $methodsAnnotations = $reflection->getMethodsAnnotations();
            expect(gettype($methodsAnnotations))->equals('array');
            expect(get_class($methodsAnnotations['testMethod1']))->equals('Phalcon\\Annotations\\Collection');
            $total = 0;
            foreach ($methodsAnnotations as $method => $annotations) {
                expect(gettype($method))->equals('string');
                $number = 0;
                foreach ($annotations as $annotation) {
                    expect(get_class($annotation))->equals('Phalcon\\Annotations\\Annotation');
                    $number++;
                    $total++;
                }
                expect($number > 0)->true();
            }
            expect($total)->equals(14);
            /** @var \Phalcon\Annotations\Collection $annotations */
            $annotations = $methodsAnnotations['testMethod1'];
            expect($annotations->has('Simple'))->true();
            expect($annotations->has('NoSimple'))->false();
            $annotation = $annotations->get('Simple');
            expect($annotation->getName())->equals('Simple');
            expect($annotation->getArguments())->equals(null);
            expect($annotation->numberArguments())->equals(0);
            expect($annotation->hasArgument('none'))->false();
            $annotation = $annotations->get('NamedMultipleParams');
            expect($annotation->getName())->equals('NamedMultipleParams');
            expect($annotation->numberArguments())->equals(2);
            expect($annotation->getArguments())->equals(['first' => 'First', 'second' => 'Second']);
            expect($annotation->hasArgument('first'))->true();
            expect($annotation->getArgument('first'))->equals('First');
            expect($annotation->hasArgument('none'))->false();
            $propertiesAnnotations = $reflection->getPropertiesAnnotations();
            expect(is_array($propertiesAnnotations))->true();
            expect(get_class($propertiesAnnotations['testProp1']))->equals('Phalcon\\Annotations\\Collection');
            $total = 0;
            foreach ($propertiesAnnotations as $property => $annotations) {
                expect(get_class($propertiesAnnotations['testProp1']))->equals('Phalcon\\Annotations\\Collection');
                $number = 0;
                foreach ($annotations as $annotation) {
                    expect(get_class($annotation))->equals('Phalcon\\Annotations\\Annotation');
                    $number++;
                    $total++;
                }
                expect($number > 0)->true();
            }
            expect($total)->equals(10);
        });
    }