Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\rest\Unit;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Core\Entity\EntityConstraintViolationList;
|
Chris@0
|
6 use Drupal\node\Entity\Node;
|
Chris@0
|
7 use Drupal\Tests\UnitTestCase;
|
Chris@0
|
8 use Drupal\user\Entity\User;
|
Chris@0
|
9 use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException;
|
Chris@0
|
10 use Symfony\Component\Validator\ConstraintViolationInterface;
|
Chris@0
|
11
|
Chris@0
|
12 /**
|
Chris@0
|
13 * @group rest
|
Chris@0
|
14 * @coversDefaultClass \Drupal\rest\Plugin\rest\resource\EntityResourceValidationTrait
|
Chris@0
|
15 */
|
Chris@0
|
16 class EntityResourceValidationTraitTest extends UnitTestCase {
|
Chris@0
|
17
|
Chris@0
|
18 /**
|
Chris@0
|
19 * @covers ::validate
|
Chris@0
|
20 */
|
Chris@0
|
21 public function testValidate() {
|
Chris@0
|
22 $trait = $this->getMockForTrait('Drupal\rest\Plugin\rest\resource\EntityResourceValidationTrait');
|
Chris@0
|
23
|
Chris@0
|
24 $method = new \ReflectionMethod($trait, 'validate');
|
Chris@0
|
25 $method->setAccessible(TRUE);
|
Chris@0
|
26
|
Chris@0
|
27 $violations = $this->prophesize(EntityConstraintViolationList::class);
|
Chris@0
|
28 $violations->filterByFieldAccess()->shouldBeCalled()->willReturn([]);
|
Chris@0
|
29 $violations->count()->shouldBeCalled()->willReturn(0);
|
Chris@0
|
30
|
Chris@0
|
31 $entity = $this->prophesize(Node::class);
|
Chris@0
|
32 $entity->validate()->shouldBeCalled()->willReturn($violations->reveal());
|
Chris@0
|
33
|
Chris@0
|
34 $method->invoke($trait, $entity->reveal());
|
Chris@0
|
35 }
|
Chris@0
|
36
|
Chris@0
|
37 /**
|
Chris@0
|
38 * @covers ::validate
|
Chris@0
|
39 */
|
Chris@0
|
40 public function testFailedValidate() {
|
Chris@0
|
41 $violation1 = $this->prophesize(ConstraintViolationInterface::class);
|
Chris@0
|
42 $violation1->getPropertyPath()->willReturn('property_path');
|
Chris@0
|
43 $violation1->getMessage()->willReturn('message');
|
Chris@0
|
44
|
Chris@0
|
45 $violation2 = $this->prophesize(ConstraintViolationInterface::class);
|
Chris@0
|
46 $violation2->getPropertyPath()->willReturn('property_path');
|
Chris@0
|
47 $violation2->getMessage()->willReturn('message');
|
Chris@0
|
48
|
Chris@0
|
49 $entity = $this->prophesize(User::class);
|
Chris@0
|
50
|
Chris@0
|
51 $violations = $this->getMockBuilder(EntityConstraintViolationList::class)
|
Chris@0
|
52 ->setConstructorArgs([$entity->reveal(), [$violation1->reveal(), $violation2->reveal()]])
|
Chris@0
|
53 ->setMethods(['filterByFieldAccess'])
|
Chris@0
|
54 ->getMock();
|
Chris@0
|
55
|
Chris@0
|
56 $violations->expects($this->once())
|
Chris@0
|
57 ->method('filterByFieldAccess')
|
Chris@0
|
58 ->will($this->returnValue([]));
|
Chris@0
|
59
|
Chris@0
|
60 $entity->validate()->willReturn($violations);
|
Chris@0
|
61
|
Chris@0
|
62 $trait = $this->getMockForTrait('Drupal\rest\Plugin\rest\resource\EntityResourceValidationTrait');
|
Chris@0
|
63
|
Chris@0
|
64 $method = new \ReflectionMethod($trait, 'validate');
|
Chris@0
|
65 $method->setAccessible(TRUE);
|
Chris@0
|
66
|
Chris@0
|
67 $this->setExpectedException(UnprocessableEntityHttpException::class);
|
Chris@0
|
68
|
Chris@0
|
69 $method->invoke($trait, $entity->reveal());
|
Chris@0
|
70 }
|
Chris@0
|
71
|
Chris@0
|
72 }
|