| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- <?php
- /*
- * This file is part of the php-phantomjs.
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace JonnyW\PhantomJs\Tests\Integration\Procedure;
- use Symfony\Component\Config\FileLocator;
- use JonnyW\PhantomJs\Client;
- use JonnyW\PhantomJs\Procedure\Procedure;
- use JonnyW\PhantomJs\Procedure\ProcedureLoaderInterface;
- use JonnyW\PhantomJs\Procedure\ProcedureValidator;
- use JonnyW\PhantomJs\Validator\Esprima;
- use JonnyW\PhantomJs\Validator\EngineInterface;
- /**
- * PHP PhantomJs
- *
- * @author Jon Wenmoth <contact@jonnyw.me>
- */
- class ProcedureValidatorTest extends \PHPUnit_Framework_TestCase
- {
- /** +++++++++++++++++++++++++++++++++++ **/
- /** ++++++++++++++ TESTS ++++++++++++++ **/
- /** +++++++++++++++++++++++++++++++++++ **/
- /**
- * Test syntax exception is
- * thrown if procedure contains
- * syntax error.
- *
- * @access public
- * @return void
- */
- public function testProcedureSyntaxExceptionIsThrownIfProcedureContainsSyntaxError()
- {
- $this->setExpectedException('\JonnyW\PhantomJs\Exception\SyntaxException');
- $procedureLoader = $this->getProcedureLoader();
- $esprima = $this->getEsprima();
- $validator = $this->getValidator($procedureLoader, $esprima);
- $validator->validate('return false; var');
- }
- /**
- * Test syntax exception contains errors.
- *
- * @access public
- * @return void
- */
- public function testSyntaxExceptionContainsErrors()
- {
- $procedureLoader = $this->getProcedureLoader();
- $esprima = $this->getEsprima();
- try {
- $validator = $this->getValidator($procedureLoader, $esprima);
- $validator->validate('return false; var');
- } catch (\JonnyW\PhantomJs\Exception\SyntaxException $e) {
- $this->assertNotEmpty($e->getErrors());
- }
- }
- /**
- * Test requirement exception is thrown
- * if procedure does not contain phantom
- * exit statement.
- *
- * @access public
- * @return void
- */
- public function testRequirementExceptionIsThrownIfProcedureDoesNotContainPhanomtExitStatement()
- {
- $this->setExpectedException('\JonnyW\PhantomJs\Exception\RequirementException');
- $procedureLoader = $this->getProcedureLoader();
- $esprima = $this->getEsprima();
- $validator = $this->getValidator($procedureLoader, $esprima);
- $validator->validate('var test = function () { console.log("ok"); }');
- }
- /**
- * Test true is returned if procedure is valid
- *
- * @access public
- * @return void
- */
- public function testTrueIsReturnedIfProcedureIsValid()
- {
- $procedureLoader = $this->getProcedureLoader();
- $esprima = $this->getEsprima();
- $validator = $this->getValidator($procedureLoader, $esprima);
- $this->assertTrue($validator->validate('var test = function () { console.log("ok"); }; phantom.exit(1);'));
- }
- /**
- * Test procedure is valid if procedure
- * has comments.
- *
- * @access public
- * @return void
- */
- public function testProcedureIsValidIfProcedureHasComments()
- {
- $procedureLoader = $this->getProcedureLoader();
- $esprima = $this->getEsprima();
- $validator = $this->getValidator($procedureLoader, $esprima);
- $this->assertTrue($validator->validate('/** * Test comment **/ var test = function () { console.log("ok"); }; phantom.exit(1);'));
- }
- /** +++++++++++++++++++++++++++++++++++ **/
- /** ++++++++++ TEST ENTITIES ++++++++++ **/
- /** +++++++++++++++++++++++++++++++++++ **/
- /**
- * Get procedure validator.
- *
- * @access protected
- * @param \JonnyW\PhantomJs\Procedure\ProcedureLoaderInterface $procedureLoader
- * @param \JonnyW\PhantomJs\Validator\EngineInterface $engine
- * @return \JonnyW\PhantomJs\Procedure\ProcedureValidator
- */
- protected function getValidator(ProcedureLoaderInterface $procedureLoader, EngineInterface $engine)
- {
- $validator = new ProcedureValidator($procedureLoader, $engine);
- return $validator;
- }
- /**
- * Get procedure loader.
- *
- * @access protected
- * @return \JonnyW\PhantomJs\Procedure\ProcedureLoader
- */
- protected function getProcedureLoader()
- {
- return Client::getInstance()->getProcedureLoader();
- }
- /**
- * Get esprima.
- *
- * @access protected
- * @return \JonnyW\PhantomJs\Validator\Esprima
- */
- protected function getEsprima()
- {
- $fileLocator = new FileLocator(
- sprintf('%s/../../../Resources/validators/', __DIR__)
- );
- $esprima = new Esprima($fileLocator, 'esprima-2.0.0.js');
- return $esprima;
- }
- }
|