RegisterValidatorConstraintsPassSpec   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 95
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 4
c 1
b 0
f 1
lcom 0
cbo 2
dl 0
loc 95
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A let() 0 15 1
A it_should_add_tagged_service_for_each_validator_constraint() 0 20 1
A it_should_not_add_service_with_same_id_and_tag_alias() 0 18 1
A it_should_not_add_service_for_classes_not_extending_constraint() 0 18 1
1
<?php
2
3
namespace spec\Knp\RadBundle\DependencyInjection\Compiler;
4
5
use PhpSpec\ObjectBehavior;
6
7
class RegisterValidatorConstraintsPassSpec extends ObjectBehavior
8
{
9
    /**
10
     * @param Symfony\Component\HttpKernel\Bundle\BundleInterface                               $bundle
11
     * @param Symfony\Component\DependencyInjection\ContainerBuilder                            $container
12
     * @param Knp\RadBundle\Finder\ClassFinder                                                  $classFinder
13
     * @param Knp\RadBundle\DependencyInjection\Definition\ValidatorConstraintDefinitionFactory $definitionFactory
14
     * @param Knp\RadBundle\DependencyInjection\ServiceIdGenerator                              $servIdGen
15
     * @param Symfony\Component\DependencyInjection\Definition                                  $validatorFactoryDef
16
     */
17
    function let($bundle, $classFinder, $definitionFactory, $container, $servIdGen, $validatorFactoryDef)
18
    {
19
        $container->getParameter('knp_rad.detect.validator_constraint')->willReturn(true);
20
        $this->beConstructedWith($bundle, $classFinder, $definitionFactory, $servIdGen);
21
22
        $bundle->getPath()->shouldBeCalled()->willReturn('/my/project/src/App');
23
        $bundle->getNamespace()->shouldBeCalled()->willReturn('App');
24
25
        $servIdGen->generateForBundleClass($bundle, 'App\Validator\Constraints\Taste', 'validator')->willReturn('app.validator.constraints.taste_validator');
26
        $servIdGen->generateForBundleClass($bundle, 'App\Validator\Constraints\MinimumHole', 'validator')->willReturn('app.validator.constraints.minimum_hole_validator');
27
28
        $validatorFactoryDef->getArgument(1)->willReturn(array());
29
        $container->hasDefinition('validator.validator_factory')->willReturn(true);
30
        $container->getDefinition('validator.validator_factory')->willReturn($validatorFactoryDef);
31
    }
32
33
    /**
34
     * @param Symfony\Component\DependencyInjection\Definition $tasteValidatorDef
35
     * @param Symfony\Component\DependencyInjection\Definition $minimumHoleValidatorDef
36
     **/
37
    function it_should_add_tagged_service_for_each_validator_constraint($container, $classFinder, $definitionFactory, $tasteValidatorDef, $minimumHoleValidatorDef, $validatorFactoryDef)
0 ignored issues
show
Coding Style introduced by
Method name "RegisterValidatorConstraintsPassSpec::it_should_add_tagged_service_for_each_validator_constraint" is not in camel caps format
Loading history...
38
    {
39
        $validatorFactoryDef->replaceArgument(1, \Prophecy\Argument::any())->shouldBeCalled();
40
        $classes = array(
41
            'App\Validator\Constraints\Taste',
42
            'App\Validator\Constraints\MinimumHole',
43
        );
44
        $classFinder->findClassesMatching('/my/project/src/App/Validator/Constraints', 'App\Validator\Constraints', '(?<!Validator)$')->shouldBeCalled()->willReturn($classes);
45
        $classFinder->filterClassesImplementing($classes, 'Symfony\Component\Validator\Constraint')->willReturn($classes);
46
47
        $container->hasDefinition('app.validator.constraints.taste_validator')->willReturn(false);
48
        $definitionFactory->createDefinition('App\Validator\Constraints\TasteValidator')->shouldBeCalled()->willReturn($tasteValidatorDef);
49
        $container->setDefinition('app.validator.constraints.taste_validator', $tasteValidatorDef)->shouldBeCalled();
50
51
        $container->hasDefinition('app.validator.constraints.minimum_hole_validator')->willReturn(false);
52
        $definitionFactory->createDefinition('App\Validator\Constraints\MinimumHoleValidator')->shouldBeCalled()->willReturn($minimumHoleValidatorDef);
53
        $container->setDefinition('app.validator.constraints.minimum_hole_validator', $minimumHoleValidatorDef)->shouldBeCalled();
54
55
        $this->process($container);
56
    }
57
58
    /**
59
     * @param Symfony\Component\DependencyInjection\Definition $tasteValidatorDef
60
     **/
61
    function it_should_not_add_service_with_same_id_and_tag_alias($container, $classFinder, $definitionFactory, $tasteValidatorDef, $validatorFactoryDef)
0 ignored issues
show
Unused Code introduced by
The parameter $tasteValidatorDef is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Coding Style introduced by
Method name "RegisterValidatorConstraintsPassSpec::it_should_not_add_service_with_same_id_and_tag_alias" is not in camel caps format
Loading history...
62
    {
63
        $validatorFactoryDef->replaceArgument(1, \Prophecy\Argument::any())->shouldBeCalled();
64
        $classes = array(
65
            'App\Validator\Constraints\Taste',
66
            'App\Validator\Constraints\MinimumHole',
67
        );
68
        $classFinder->findClassesMatching('/my/project/src/App/Validator/Constraints', 'App\Validator\Constraints', '(?<!Validator)$')->shouldBeCalled()->willReturn($classes);
69
        $classFinder->filterClassesImplementing($classes, 'Symfony\Component\Validator\Constraint')->willReturn($classes);
70
71
        $container->hasDefinition('app.validator.constraints.taste_validator')->willReturn(true);
72
        $definitionFactory->createDefinition('App\Validator\Constraints\TasteValidator')->shouldNotBeCalled();
73
74
        $container->hasDefinition('app.validator.constraints.minimum_hole_validator')->willReturn(true);
75
        $definitionFactory->createDefinition('App\Validator\Constraints\MinimumHoleValidator')->shouldNotBeCalled();
76
77
        $this->process($container);
78
    }
79
80
    /**
81
     * @param Symfony\Component\DependencyInjection\Definition $tasteValidatorDef
82
     **/
83
    function it_should_not_add_service_for_classes_not_extending_constraint($container, $classFinder, $definitionFactory, $tasteValidatorDef, $validatorFactoryDef)
0 ignored issues
show
Coding Style introduced by
Method name "RegisterValidatorConstraintsPassSpec::it_should_not_add_service_for_classes_not_extending_constraint" is not in camel caps format
Loading history...
84
    {
85
        $validatorFactoryDef->replaceArgument(1, \Prophecy\Argument::any())->shouldBeCalled();
86
        $classes = array(
87
            'App\Validator\Constraints\Taste',
88
            'App\Validator\Constraints\MinimumHole',
89
        );
90
        $classFinder->findClassesMatching('/my/project/src/App/Validator/Constraints', 'App\Validator\Constraints', '(?<!Validator)$')->shouldBeCalled()->willReturn($classes);
91
        $classFinder->filterClassesImplementing($classes, 'Symfony\Component\Validator\Constraint')->willReturn((array) $classes[0]);
92
93
        $container->hasDefinition('app.validator.constraints.taste_validator')->willReturn(false);
94
        $definitionFactory->createDefinition('App\Validator\Constraints\TasteValidator')->willReturn($tasteValidatorDef);
95
        $container->setDefinition('app.validator.constraints.taste_validator', $tasteValidatorDef)->shouldBeCalled();
96
97
        $definitionFactory->createDefinition('App\Validator\Constraints\MinimumHoleValidator')->shouldNotBeCalled();
98
99
        $this->process($container);
100
    }
101
}
102