PHP Classes

File: tests/TestRegistrationApp/FunctionTest.php

Recommend this page to a friend!
  Packages of Thierry Feuzeu   Jaxon   tests/TestRegistrationApp/FunctionTest.php   Download  
File: tests/TestRegistrationApp/FunctionTest.php
Role: Class source
Content type: text/plain
Description: Class source
Class: Jaxon
Call PHP classes from JavaScript using AJAX
Author: By
Last change:
Date: 1 year ago
Size: 3,900 bytes
 

Contents

Class file image Download
<?php

namespace Jaxon\Tests\TestRegistrationApp;

require_once __DIR__ . '/../src/functions.php';

use Jaxon\Exception\SetupException;
use Jaxon\Jaxon;
use Jaxon\Plugin\Request\CallableFunction\CallableFunction;
use Jaxon\Plugin\Request\CallableFunction\CallableFunctionPlugin;
use PHPUnit\Framework\TestCase;
use function strlen;

final class FunctionTest extends TestCase
{
    /**
     * @var CallableFunctionPlugin
     */
    protected $xPlugin;

    /**
     * @throws SetupException
     */
    public function setUp(): void
    {
        jaxon()->app()->setup(__DIR__ . '/../config/app/functions.php');

        $this->xPlugin = jaxon()->di()->getCallableFunctionPlugin();
    }

    /**
     * @throws SetupException
     */
    public function tearDown(): void
    {
        jaxon()->reset();
        parent::tearDown();
    }

    public function testPluginName()
    {
        $this->assertEquals(Jaxon::CALLABLE_FUNCTION, $this->xPlugin->getName());
    }

    public function testPHPFunction()
    {
        // No callable for standard PHP functions.
        $this->assertEquals(null, $this->xPlugin->getCallable('file_get_contents'));
    }

    public function testNonCallableFunction()
    {
        // No callable for aliased functions.
        $this->assertEquals(null, $this->xPlugin->getCallable('my_second_function'));
    }

    public function testCallableFunctionClass()
    {
        $xFirstCallable = $this->xPlugin->getCallable('my_first_function');
        $xAliasCallable = $this->xPlugin->getCallable('my_alias_function');
        $xThirdCallable = $this->xPlugin->getCallable('my_third_function');
        // Test callables classes
        $this->assertEquals(CallableFunction::class, get_class($xFirstCallable));
        $this->assertEquals(CallableFunction::class, get_class($xAliasCallable));
        $this->assertEquals(CallableFunction::class, get_class($xThirdCallable));
    }

    public function testCallableFunctionName()
    {
        $xFirstCallable = $this->xPlugin->getCallable('my_first_function');
        $xAliasCallable = $this->xPlugin->getCallable('my_alias_function');
        $xThirdCallable = $this->xPlugin->getCallable('my_third_function');
        // Test callables classes
        $this->assertEquals('my_first_function', $xFirstCallable->getName());
        $this->assertEquals('my_alias_function', $xAliasCallable->getName());
        $this->assertEquals('my_third_function', $xThirdCallable->getName());
    }

    public function testCallableFunctionJsName()
    {
        $xFirstCallable = $this->xPlugin->getCallable('my_first_function');
        $xAliasCallable = $this->xPlugin->getCallable('my_alias_function');
        $xThirdCallable = $this->xPlugin->getCallable('my_third_function');
        // Test callables classes
        $this->assertEquals('jxn_my_first_function', $xFirstCallable->getJsName());
        $this->assertEquals('jxn_my_alias_function', $xAliasCallable->getJsName());
        $this->assertEquals('jxn_my_third_function', $xThirdCallable->getJsName());
    }

    public function testCallableFunctionOptions()
    {
        $xFirstCallable = $this->xPlugin->getCallable('my_first_function');
        $xAliasCallable = $this->xPlugin->getCallable('my_alias_function');
        $xThirdCallable = $this->xPlugin->getCallable('my_third_function');
        // Test callables classes
        $this->assertCount(0, $xFirstCallable->getOptions());
        $this->assertCount(1, $xAliasCallable->getOptions());
        $this->assertCount(0, $xThirdCallable->getOptions());
    }

    public function testCallableFunctionJsCode()
    {
        $this->assertEquals(32, strlen($this->xPlugin->getHash()));
        // $this->assertEquals('34608e208fda374f8761041969acf96e', $this->xPlugin->getHash());
        $this->assertEquals(file_get_contents(__DIR__ . '/../src/js/function.js'), $this->xPlugin->getScript());
    }
}