PHP Classes

File: tests/TestRegistration/DirectoryTest.php

Recommend this page to a friend!
  Packages of Thierry Feuzeu   Jaxon   tests/TestRegistration/DirectoryTest.php   Download  
File: tests/TestRegistration/DirectoryTest.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: 4 months ago
Size: 3,875 bytes
 

Contents

Class file image Download
<?php

namespace Jaxon\Tests\TestRegistration;

use
Jaxon\Jaxon;
use
Jaxon\Exception\SetupException;
use
Jaxon\Plugin\Request\CallableClass\CallableClassPlugin;
use
Jaxon\Plugin\Request\CallableClass\CallableObject;
use
Jaxon\Plugin\Request\CallableClass\CallableDirPlugin;
use
PHPUnit\Framework\TestCase;

use function
strlen;

class
DirectoryTest extends TestCase
{
   
/**
     * @var CallableDirPlugin
     */
   
protected $xDirPlugin;

   
/**
     * @var CallableClassPlugin
     */
   
protected $xClassPlugin;

   
/**
     * @throws SetupException
     */
   
public function setUp(): void
   
{
       
jaxon()->setOption('core.prefix.class', 'Jxn');

       
jaxon()->register(Jaxon::CALLABLE_DIR, __DIR__ . '/../src/dir', [
           
'classes' => [
               
'ClassC' => [
                   
'protected' => ['methodCc'],
                ],
               
'ClassD' => [
                   
'excluded' => true,
                ],
            ],
        ]);

       
$this->xDirPlugin = jaxon()->di()->getCallableDirPlugin();
       
$this->xClassPlugin = jaxon()->di()->getCallableClassPlugin();
    }

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

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

   
/**
     * @throws SetupException
     */
   
public function testCallableDirClass()
    {
       
$xClassACallable = $this->xClassPlugin->getCallable('ClassA');
       
$xClassBCallable = $this->xClassPlugin->getCallable('ClassB');
       
$xClassCCallable = $this->xClassPlugin->getCallable('ClassC');
       
$xClassDCallable = $this->xClassPlugin->getCallable('ClassD');
       
// Test callables classes
       
$this->assertEquals(CallableObject::class, get_class($xClassACallable));
       
$this->assertEquals(CallableObject::class, get_class($xClassBCallable));
       
$this->assertEquals(CallableObject::class, get_class($xClassCCallable));
       
$this->assertEquals(CallableObject::class, get_class($xClassDCallable));
       
// Check export
       
$this->assertFalse($xClassACallable->excluded());
       
$this->assertFalse($xClassBCallable->excluded());
       
$this->assertFalse($xClassCCallable->excluded());
       
$this->assertTrue($xClassDCallable->excluded());
       
// Check methods
       
$this->assertTrue($xClassACallable->hasMethod('methodAa'));
       
$this->assertTrue($xClassACallable->hasMethod('methodAb'));
       
$this->assertFalse($xClassACallable->hasMethod('methodAc'));
    }

   
/**
     * @throws SetupException
     */
   
public function testCallableDirJsCode()
    {
       
// The js is generated by the CallableClass plugin
        // $this->assertEquals('96d34bef2486b9b4b342ec292b4e8ed5', $this->xClassPlugin->getHash());
       
$this->assertEquals(32, strlen($this->xClassPlugin->getHash()));
       
// file_put_contents(__DIR__ . '/../src/js/dir.js', $this->xClassPlugin->getScript());
       
$this->assertEquals(file_get_contents(__DIR__ . '/../src/js/dir.js'), $this->xClassPlugin->getScript());
    }

    public function
testClassNotFound()
    {
       
// No callable for standard PHP functions.
       
$this->expectException(SetupException::class);
       
$this->xDirPlugin->getCallable('Simple');
    }

    public function
testCallableDirIncorrectOption()
    {
       
// Register a function with incorrect option
       
$this->expectException(SetupException::class);
       
jaxon()->register(Jaxon::CALLABLE_DIR, __DIR__ . '/../src', true);
    }

    public function
testCallableDirIncorrectPath()
    {
       
// Register a function with incorrect name
       
$this->expectException(SetupException::class);
       
jaxon()->register(Jaxon::CALLABLE_DIR, __DIR__ . '/../door');
    }
}