public function testMakeMethodCreatesValidValidator()
 {
     $translator = m::mock('Symfony\\Component\\Translation\\TranslatorInterface');
     $factory = new Factory($translator);
     $validator = $factory->make(array('foo' => 'bar'), array('baz' => 'boom'));
     $this->assertEquals($translator, $validator->getTranslator());
     $this->assertEquals(array('foo' => 'bar'), $validator->getData());
     $this->assertEquals(array('baz' => array('boom')), $validator->getRules());
     $presence = m::mock('Illuminate\\Validation\\PresenceVerifierInterface');
     $noop1 = function () {
     };
     $noop2 = function () {
     };
     $noop3 = function () {
     };
     $factory->extend('foo', $noop1);
     $factory->extendImplicit('implicit', $noop2);
     $factory->replacer('replacer', $noop3);
     $factory->setPresenceVerifier($presence);
     $validator = $factory->make(array(), array());
     $this->assertEquals(array('foo' => $noop1, 'implicit' => $noop2), $validator->getExtensions());
     $this->assertEquals(array('replacer' => $noop3), $validator->getReplacers());
     $this->assertEquals($presence, $validator->getPresenceVerifier());
     $presence = m::mock('Illuminate\\Validation\\PresenceVerifierInterface');
     $factory->extend('foo', $noop1, 'foo!');
     $factory->extendImplicit('implicit', $noop2, 'implicit!');
     $factory->setPresenceVerifier($presence);
     $validator = $factory->make(array(), array());
     $this->assertEquals(array('foo' => $noop1, 'implicit' => $noop2), $validator->getExtensions());
     $this->assertEquals(array('foo' => 'foo!', 'implicit' => 'implicit!'), $validator->getFallbackMessages());
     $this->assertEquals($presence, $validator->getPresenceVerifier());
 }
 /**
  * Register the validation factory.
  *
  * @return void
  */
 protected function registerValidationFactory()
 {
     $this->app->singleton('validator', function ($app) {
         $validator = new Factory($app['translator'], $app);
         // The validation presence verifier is responsible for determining the existence
         // of values in a given data collection, typically a relational database or
         // other persistent data stores. And it is used to check for uniqueness.
         if (isset($app['validation.presence'])) {
             $validator->setPresenceVerifier($app['validation.presence']);
         }
         return $validator;
     });
 }