PHP Classes

File: tests/TestRegistration/PackageTest.php

Recommend this page to a friend!
  Packages of Thierry Feuzeu   Jaxon   tests/TestRegistration/PackageTest.php   Download  
File: tests/TestRegistration/PackageTest.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: 2,798 bytes
 

Contents

Class file image Download
<?php

namespace Jaxon\Tests\TestRegistration;

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

use Jaxon\Exception\SetupException;
use Jaxon\Plugin\AbstractPackage;
use Jaxon\Utils\Http\UriException;
use PHPUnit\Framework\TestCase;
use SamplePackage;


class PackageTest extends TestCase
{
    /**
     * @throws SetupException
     */
    public function setUp(): void
    {
        jaxon()->setOption('core.prefix.class', '');
        jaxon()->setOption('core.request.uri', 'http://example.test/path');
        jaxon()->registerPackage(SamplePackage::class,
            ['option1' => 'value1', 'option2' => ['option3' => 'value3']]);
    }

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

    /**
     * @throws UriException
     */
    // public function testPackage()
    // {
    //     $this->assertNotNull(jaxon()->package(SamplePackage::class));
    //     $this->assertEquals(SamplePackage::class, get_class(jaxon()->package(SamplePackage::class)));
    //     $xSamplePackage = jaxon()->package(SamplePackage::class);
    //     $xSamplePackage->ready();
    //     $sScript = jaxon()->getScript();
    //     $this->assertStringContainsString('SamplePackageClass = {}', $sScript);
    // }

    public function testPackageOptions()
    {
        /** @var AbstractPackage */
        $xPackage = jaxon()->di()->g(SamplePackage::class);
        $xPackageConfig = $xPackage->getConfig();
        $this->assertEquals('value1', $xPackageConfig->getOption('option1'));
        $this->assertEquals('value3', $xPackageConfig->getOption('option2.option3'));

        $this->assertEquals('value1', $xPackage->getOption('option1'));
        $this->assertEquals('value3', $xPackage->getOption('option2.option3'));
    }

    public function testRegisterInvalidPackage()
    {
        require_once __DIR__ . '/../src/sample.php';
        // Register a class which is not a package as a package.
        $this->expectException(SetupException::class);
        jaxon()->registerPackage('Sample');
    }

    public function testRegisterPackageWithIncorrectConfig()
    {
        // Register a package with incorrect config data type.
        $this->expectException(SetupException::class);
        jaxon()->registerPackage('BadConfigPackage');
    }

    public function testGetInvalidPackage()
    {
        $this->assertNull(jaxon()->package('Sample'));
    }

    public function testRegisterUnknownPackage()
    {
        // Register a class which doesn't exist.
        $this->expectException(SetupException::class);
        jaxon()->registerPackage('UnknownPackage');
    }

    public function testGetUnknownPackage()
    {
        $this->assertNull(jaxon()->package('UnknownPackage'));
    }
}