assertEquals(0, $exception->getCode()); $this->assertEquals('Not a valid result', $exception->getMessage()); $this->assertEquals(false, $exception->getResult()->valid()); $this->assertEquals('Not a valid result', $exception->getResult()->message()); } /** * Test that ValidationResult object with multiple errors can correctly * populate a ValidationException */ public function testCreateFromComplexValidationResult() { $result = new ValidationResult(); $result->error('Invalid type'); $result->error('Out of kiwis'); $exception = new ValidationException($result); $this->assertEquals(0, $exception->getCode()); $this->assertEquals('Invalid type; Out of kiwis', $exception->getMessage()); $this->assertEquals(false, $exception->getResult()->valid()); $this->assertEquals('Invalid type; Out of kiwis', $exception->getResult()->message()); } /** * Test that a ValidationException created with no contained ValidationResult * will correctly populate itself with an inferred version */ public function testCreateFromMessage() { $exception = new ValidationException('Error inferred from message', E_USER_ERROR); $this->assertEquals(E_USER_ERROR, $exception->getCode()); $this->assertEquals('Error inferred from message', $exception->getMessage()); $this->assertEquals(false, $exception->getResult()->valid()); $this->assertEquals('Error inferred from message', $exception->getResult()->message()); } /** * Test that ValidationException can be created with both a ValidationResult * and a custom message */ public function testCreateWithValidationResultAndMessage() { $result = new ValidationResult(false, 'Incorrect placement of cutlery'); $exception = new ValidationException($result, 'An error has occurred', E_USER_WARNING); $this->assertEquals(E_USER_WARNING, $exception->getCode()); $this->assertEquals('An error has occurred', $exception->getMessage()); $this->assertEquals(false, $exception->getResult()->valid()); $this->assertEquals('Incorrect placement of cutlery', $exception->getResult()->message()); } /** * Test that ValidationException can be created with both a ValidationResult * and a custom message */ public function testCreateWithComplexValidationResultAndMessage() { $result = new ValidationResult(); $result->error('A spork is not a knife'); $result->error('A knife is not a back scratcher'); $exception = new ValidationException($result, 'An error has occurred', E_USER_WARNING); $this->assertEquals(E_USER_WARNING, $exception->getCode()); $this->assertEquals('An error has occurred', $exception->getMessage()); $this->assertEquals(false, $exception->getResult()->valid()); $this->assertEquals('A spork is not a knife; A knife is not a back scratcher', $exception->getResult()->message()); } }