<?php
namespace Jaxon\Tests\TestRegistration;
use Jaxon\App\Component\Pagination;
use Jaxon\Exception\SetupException;
use Jaxon\Jaxon;
use Jaxon\Plugin\Request\CallableClass\CallableClassPlugin;
use Jaxon\Plugin\Request\CallableClass\CallableObject;
use Jaxon\Plugin\Request\CallableClass\CallableDirPlugin;
use Jaxon\Tests\Ns\Ajax\ClassA;
use Jaxon\Tests\Ns\Ajax\ClassB;
use Jaxon\Tests\Ns\Ajax\ClassC;
use PHPUnit\Framework\TestCase;
use function strlen;
class NamespaceTest extends TestCase
{
/**
* @var CallableDirPlugin
*/
protected $xDirPlugin;
/**
* @var CallableClassPlugin
*/
protected $xClassPlugin;
/**
* @throws SetupException
*/
public function setUp(): void
{
jaxon()->setOption('core.prefix.class', '');
// This directory is already registered with the autoload.
jaxon()->register(Jaxon::CALLABLE_DIR, __DIR__ . '/../src/Ns/Ajax',
['namespace' => "Jaxon\\Tests\\Ns\\Ajax", 'autoload' => false]);
// This directory needs to be registered with the autoload.
jaxon()->register(Jaxon::CALLABLE_DIR, __DIR__ . '/../src/dir_ns', "Jaxon\\NsTests");
$this->xDirPlugin = jaxon()->di()->getCallableDirPlugin();
$this->xClassPlugin = jaxon()->di()->getCallableClassPlugin();
}
/**
* @throws SetupException
*/
public function tearDown(): void
{
jaxon()->reset();
parent::tearDown();
}
/**
* @throws SetupException
*/
public function testRegisterWithUnderscoreAsSeparator()
{
jaxon()->register(Jaxon::CALLABLE_CLASS, ClassA::class);
jaxon()->register(Jaxon::CALLABLE_CLASS, ClassB::class);
jaxon()->register(Jaxon::CALLABLE_CLASS, ClassC::class);
// The js is generated by the CallableClass plugin
// $this->assertEquals('a345cf8862e7ce14752fba0e789adc1c', $this->xClassPlugin->getHash());
$this->assertEquals(32, strlen($this->xClassPlugin->getHash()));
$sJsCode = $this->xClassPlugin->getScript();
// file_put_contents(__DIR__ . '/../src/js/nsu.js', $sJsCode);
$this->assertEquals(file_get_contents(__DIR__ . '/../src/js/nsu.js'), $sJsCode);
$xCallable = $this->xClassPlugin->getCallable('Jaxon_Tests_Ns_Ajax_ClassA');
$this->assertEquals(CallableObject::class, get_class($xCallable));
}
}
|