Skip to content

Commit 2a390bb

Browse files
minor #26165 do not mock the container builder in tests (xabbuh)
This PR was merged into the 3.4 branch. Discussion ---------- do not mock the container builder in tests | Q | A | ------------- | --- | Branch? | 3.4 | Bug fix? | no | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | | License | MIT | Doc PR | Commits ------- 777acfb do not mock the container builder in tests
2 parents d196d4f + d79c20e commit 2a390bb

File tree

2 files changed

+29
-42
lines changed

2 files changed

+29
-42
lines changed

Tests/ContainerConstraintValidatorFactoryTest.php

Lines changed: 21 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Component\DependencyInjection\Container;
16-
use Symfony\Component\DependencyInjection\ContainerBuilder;
1716
use Symfony\Component\Validator\Constraint;
1817
use Symfony\Component\Validator\Constraints\Blank as BlankConstraint;
1918
use Symfony\Component\Validator\ConstraintValidator;
@@ -23,16 +22,8 @@ class ContainerConstraintValidatorFactoryTest extends TestCase
2322
{
2423
public function testGetInstanceCreatesValidator()
2524
{
26-
$class = get_class($this->getMockForAbstractClass(ConstraintValidator::class));
27-
28-
$constraint = $this->getMockBuilder(Constraint::class)->getMock();
29-
$constraint
30-
->expects($this->once())
31-
->method('validatedBy')
32-
->will($this->returnValue($class));
33-
3425
$factory = new ContainerConstraintValidatorFactory(new Container());
35-
$this->assertInstanceOf($class, $factory->getInstance($constraint));
26+
$this->assertInstanceOf(DummyConstraintValidator::class, $factory->getInstance(new DummyConstraint()));
3627
}
3728

3829
public function testGetInstanceReturnsExistingValidator()
@@ -45,30 +36,13 @@ public function testGetInstanceReturnsExistingValidator()
4536

4637
public function testGetInstanceReturnsService()
4738
{
48-
$service = 'validator_constraint_service';
49-
$validator = $this->getMockForAbstractClass(ConstraintValidator::class);
50-
51-
// mock ContainerBuilder b/c it implements TaggedContainerInterface
52-
$container = $this->getMockBuilder(ContainerBuilder::class)->setMethods(array('get', 'has'))->getMock();
53-
$container
54-
->expects($this->once())
55-
->method('get')
56-
->with($service)
57-
->willReturn($validator);
58-
$container
59-
->expects($this->once())
60-
->method('has')
61-
->with($service)
62-
->willReturn(true);
63-
64-
$constraint = $this->getMockBuilder(Constraint::class)->getMock();
65-
$constraint
66-
->expects($this->once())
67-
->method('validatedBy')
68-
->will($this->returnValue($service));
39+
$validator = new DummyConstraintValidator();
40+
$container = new Container();
41+
$container->set(DummyConstraintValidator::class, $validator);
6942

7043
$factory = new ContainerConstraintValidatorFactory($container);
71-
$this->assertSame($validator, $factory->getInstance($constraint));
44+
45+
$this->assertSame($validator, $factory->getInstance(new DummyConstraint()));
7246
}
7347

7448
/**
@@ -86,3 +60,18 @@ public function testGetInstanceInvalidValidatorClass()
8660
$factory->getInstance($constraint);
8761
}
8862
}
63+
64+
class DummyConstraint extends Constraint
65+
{
66+
public function validatedBy()
67+
{
68+
return DummyConstraintValidator::class;
69+
}
70+
}
71+
72+
class DummyConstraintValidator extends ConstraintValidator
73+
{
74+
public function validate($value, Constraint $constraint)
75+
{
76+
}
77+
}

Tests/DependencyInjection/AddConstraintValidatorsPassTest.php

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public function testThatConstraintValidatorServicesAreProcessed()
5050
public function testAbstractConstraintValidator()
5151
{
5252
$container = new ContainerBuilder();
53-
$validatorFactory = $container->register('validator.validator_factory')
53+
$container->register('validator.validator_factory')
5454
->addArgument(array());
5555

5656
$container->register('my_abstract_constraint_validator')
@@ -63,18 +63,16 @@ public function testAbstractConstraintValidator()
6363

6464
public function testThatCompilerPassIsIgnoredIfThereIsNoConstraintValidatorFactoryDefinition()
6565
{
66-
$definition = $this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
67-
$container = $this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition', 'findTaggedServiceIds', 'getDefinition'))->getMock();
66+
$container = new ContainerBuilder();
6867

69-
$container->expects($this->never())->method('findTaggedServiceIds');
70-
$container->expects($this->never())->method('getDefinition');
71-
$container->expects($this->atLeastOnce())
72-
->method('hasDefinition')
73-
->with('validator.validator_factory')
74-
->will($this->returnValue(false));
75-
$definition->expects($this->never())->method('replaceArgument');
68+
$definitionsBefore = count($container->getDefinitions());
69+
$aliasesBefore = count($container->getAliases());
7670

7771
$addConstraintValidatorsPass = new AddConstraintValidatorsPass();
7872
$addConstraintValidatorsPass->process($container);
73+
74+
// the container is untouched (i.e. no new definitions or aliases)
75+
$this->assertCount($definitionsBefore, $container->getDefinitions());
76+
$this->assertCount($aliasesBefore, $container->getAliases());
7977
}
8078
}

0 commit comments

Comments
 (0)