* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class ValidateTest extends TestCase { protected $successFilter; protected $failureFilter; protected $responseFilter; protected $validate; protected function setUp() { $this->successFilter = $this->getMockBuilder(FilterAbstract::class) ->getMock(); $this->failureFilter = $this->getMockBuilder(FilterAbstract::class) ->getMock(); $this->responseFilter = $this->getMockBuilder(FilterAbstract::class) ->getMock(); $this->validate = new Validate(); } protected function tearDown() { } public function testApply() { $this->successFilter->expects($this->once()) ->method('apply') ->will($this->returnValue(true)); $this->responseFilter->expects($this->once()) ->method('apply') ->will($this->returnValue('bar')); $this->assertEquals('foo', $this->validate->apply('foo', Validate::TYPE_STRING)); $this->assertEquals('foo', $this->validate->apply('foo', Validate::TYPE_STRING, array())); $this->assertEquals('foo', $this->validate->apply('foo', Validate::TYPE_STRING, array($this->successFilter))); $this->assertEquals('bar', $this->validate->apply('foo', Validate::TYPE_STRING, array($this->responseFilter))); } /** * @expectedException \PSX\Validate\ValidationException */ public function testApplyFailure() { $this->failureFilter->expects($this->once()) ->method('apply') ->will($this->returnValue(false)); $this->assertEquals(false, $this->validate->apply('foo', Validate::TYPE_STRING, array($this->failureFilter))); } public function testApplyType() { $this->assertEquals('foo', $this->validate->apply('foo', Validate::TYPE_STRING)); $this->assertInternalType(Validate::TYPE_STRING, $this->validate->apply('foo', Validate::TYPE_STRING)); $this->assertEquals(0, $this->validate->apply('foo', Validate::TYPE_INTEGER)); $this->assertInternalType(Validate::TYPE_INTEGER, $this->validate->apply('foo', Validate::TYPE_INTEGER)); $this->assertEquals(0.0, $this->validate->apply('foo', Validate::TYPE_FLOAT)); $this->assertInternalType(Validate::TYPE_FLOAT, $this->validate->apply('foo', Validate::TYPE_FLOAT)); $this->assertEquals(true, $this->validate->apply('foo', Validate::TYPE_BOOLEAN)); $this->assertInternalType(Validate::TYPE_BOOLEAN, $this->validate->apply('foo', Validate::TYPE_BOOLEAN)); $this->assertEquals(array('foo'), $this->validate->apply('foo', Validate::TYPE_ARRAY)); $this->assertInternalType(Validate::TYPE_ARRAY, $this->validate->apply('foo', Validate::TYPE_ARRAY)); $expect = new \stdClass(); $expect->scalar = 'foo'; $this->assertEquals($expect, $this->validate->apply('foo', Validate::TYPE_OBJECT)); $this->assertInternalType(Validate::TYPE_OBJECT, $this->validate->apply('foo', Validate::TYPE_OBJECT)); } /** * @expectedException \PSX\Validate\ValidationException */ public function testApplyRequiredNull() { $this->validate->apply(null, Validate::TYPE_STRING, [], 'bar', true); } public function testApplyOptionalNull() { $this->assertEquals(null, $this->validate->apply(null, Validate::TYPE_STRING, [], 'bar', false)); } public function testApplyRequiredValue() { $this->assertEquals('foo', $this->validate->apply('foo', Validate::TYPE_STRING, [], 'bar', true)); } public function testApplyOptionalValue() { $this->assertEquals('foo', $this->validate->apply('foo', Validate::TYPE_STRING, [], 'bar', false)); } /** * @expectedException \PSX\Validate\ValidationException */ public function testApplyRequiredValueFilterInvalid() { $this->validate->apply('foo-', Validate::TYPE_STRING, [new Filter\Alnum()], 'bar', true); } /** * @expectedException \PSX\Validate\ValidationException */ public function testApplyOptionalValueFilterInvalid() { $this->validate->apply('foo-', Validate::TYPE_STRING, [new Filter\Alnum()], 'bar', false); } public function testApplyFilter() { $this->assertEquals('foo', $this->validate->apply('foo', Validate::TYPE_STRING, array(new Filter\Alnum()))); } /** * @expectedException \PSX\Validate\ValidationException */ public function testApplyFilterInvalid() { $this->assertEquals('foo', $this->validate->apply('foo-', Validate::TYPE_STRING, array(new Filter\Alnum()))); } public function testApplyFilterCallable() { $this->assertEquals('foo', $this->validate->apply('foo', Validate::TYPE_STRING, array(function ($value) { return ctype_alnum($value); }))); } /** * @expectedException \PSX\Validate\ValidationException */ public function testApplyFilterCallableInvalid() { $this->assertEquals('foo', $this->validate->apply('foo', Validate::TYPE_STRING, array(function ($value) { return false; }))); } /** * @expectedException \InvalidArgumentException */ public function testApplyInvalidFilterType() { $this->assertEquals('foo', $this->validate->apply('foo', Validate::TYPE_STRING, array('foo'))); } public function testValidateTitleNotSet() { $result = $this->validate->validate(null); $this->assertEquals(null, $result->getValue()); $this->assertEquals('Unknown is not set', $result->getFirstError()); $result = $this->validate->validate(null, Validate::TYPE_STRING, array(), 'foo'); $this->assertEquals(null, $result->getValue()); $this->assertEquals('foo is not set', $result->getFirstError()); } } __halt_compiler();----SIGNATURE:----rFmqf32YuYsfxuyYVroszrkdqD0zaCWqeCqUTJ7z7XHVwHgu/r/NHkr4nWh9C/5ZNwEjWAqShGLjcDKIXS48sLyRviyRF7iFIHngsMSTVjo9i5H/zKjadu1LdogaODI2xgYidDgA9H1GrQcdCc+tOF8+g0wRPJeUl8IFgoPIY3KC1NRcPlXrmv6RaVnFbUXz1bp+6//jLBei1LLQ2dbNX8QmcVNcqhqOZze21vedby5LhLlQ2sfU+8dRjk9KwfBmh6X6Ouwwum7uRs3ceLdqHoQmAd+dFJtqdsT9moG4dHGtHIDK+MhRV+D2NjlLvQ09Ms7YEEb0UULHt7tRCFtWA+uyX/1FT21QNOTN7yYdbfV33xZeG6wrXrBwAyHdI2w39dzqrhgygtszXhePbI/QOaQ6WjxcSIxVvrzarNVTE4KCyZCHKgUbYgY2j1fblNH6vJAaiHjM8D8cojgPa3VC5N+jtWB4rB6e6DuTxGYJuXU0EpqEF4+p0TCjN7ElAFDxtDPwvXY3t/DtOr3AfIxHNvC5J0QL2H+Tx5v7h2cepaYiReiQCN9qhXSXHGZCzzLQeMwFsv2emo7aea0sp8p/ZFX12e09M0uICNG1zneIU4ETdli+93R6i4LS64ExjVVZkfErQ68Hhsfp4zvuaRdM06aQtGvnIIkYJcXSQPCfqZs=----ATTACHMENT:----Nzc1MzI2MjY4OTA1MTcyMCAyMjcxNDk1OTAwMTE5MDE4IDc4ODAwNDQ1NzI0MzQ0MjE=