GraphNavigatorInterface::DIRECTION_SERIALIZATION, 'type' => 'App\Validator\ValidationFailedException', 'format' => 'json', 'method' => 'serializeExceptionToJson', ]], ValidationFailedExceptionErrorHandler::getSubscribingMethods()); } public function testWithEmptyConstraintsList() { $translator = $this->createMock(TranslatorInterface::class); $sut = new ValidationFailedExceptionErrorHandler($translator); $constraints = new ConstraintViolationList(); $validations = new ValidationFailedException($constraints, 'Uuups, that is broken'); $serialization = $this->createMock(SerializationVisitorInterface::class); $expected = [ 'code' => '400', 'message' => null, 'errors' => [ 'children' => [] ] ]; self::assertEquals($expected, $sut->serializeExceptionToJson($serialization, $validations, [])); } public function testWithConstraintsList() { $translator = $this->createMock(TranslatorInterface::class); $sut = new ValidationFailedExceptionErrorHandler($translator); $translator->method('trans')->willReturnArgument(0); $constraints = new ConstraintViolationList(); $constraints->add(new ConstraintViolation('toooo many tests', 'abc.def', [], '$root', 'begin', 4, null, null, null, '$cause')); $constraints->add(new ConstraintViolation('missing tests', 'abc.def', [], '$root', 'begin', 4, null, null, null, '$cause')); $constraints->add(new ConstraintViolation('missing tests', 'test %wuuf% 123', ['%wuuf%' => 'xcv'], '$root', 'end', 4, 3, null, null, '$cause')); $validations = new ValidationFailedException($constraints, 'Uuups, that is broken'); $serialization = $this->createMock(SerializationVisitorInterface::class); $expected = [ 'code' => '400', 'message' => 'Uuups, that is broken', 'errors' => [ 'children' => [ 'begin' => [ 'errors' => [ 0 => 'abc.def', 1 => 'abc.def', ], ], 'end' => [ 'errors' => [ 0 => 'test %wuuf% 123', ], ] ] ] ]; self::assertEquals($expected, $sut->serializeExceptionToJson($serialization, $validations, [])); } }