PHP Classes

File: tests/TestRequestHandler/HookTest.php

Recommend this page to a friend!
  Packages of Thierry Feuzeu   Jaxon   tests/TestRequestHandler/HookTest.php   Download  
File: tests/TestRequestHandler/HookTest.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: 6,175 bytes
 

Contents

Class file image Download
<?php

namespace Jaxon\Tests\TestRequestHandler;

use
Jaxon\Jaxon;
use
Jaxon\Exception\RequestException;
use
Jaxon\Exception\SetupException;
use
Jaxon\Request\Target;
use
Nyholm\Psr7Server\ServerRequestCreator;
use
PHPUnit\Framework\TestCase;
use
Psr\Http\Message\ServerRequestInterface;


class
HookTest extends TestCase
{
   
/**
     * @var Target
     */
   
protected $xTarget;

   
/**
     * @var mixed
     */
   
protected $xCallable;

   
/**
     * @var bool
     */
   
protected $bEndRequest;

   
/**
     * @var int
     */
   
protected $nBootCount = 0;

   
/**
     * @var string
     */
   
protected $sMessage = '';

   
/**
     * @throws SetupException
     */
   
public function setUp(): void
   
{
       
jaxon()->setOption('core.response.send', false);
       
jaxon()->setOption('core.prefix.class', '');
       
jaxon()->register(Jaxon::CALLABLE_DIR, __DIR__ . '/../src/response', [
           
'classes' => [
               
'TestHk' => [
                   
'functions' => [
                       
'*' => [
                           
'__before' => 'before',
                           
'__after' => 'after',
                        ],
                       
'three' => [
                           
'__before' => ['before2'],
                        ],
                       
'four' => [
                           
'__after' => [
                               
'after1' => ['p1'],
                               
'after2' => ['p1', 'p2'],
                            ],
                        ],
                       
'param' => [
                           
'__before' => ['beforeParam' => ['__method__', '__args__']],
                        ],
                    ],
                ],
            ],
        ]);
    }

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

   
/**
     * @throws RequestException
     */
   
public function testHookAllBefore()
    {
       
// Send a request to the registered class
       
jaxon()->di()->set(ServerRequestInterface::class, function($c) {
            return
$c->g(ServerRequestCreator::class)
                ->
fromGlobals()
                ->
withParsedBody([
                   
'jxncall' => json_encode([
                       
'type' => 'class',
                       
'name' => 'TestHk',
                       
'method' => 'one',
                       
'args' => [],
                    ]),
                ])
                ->
withMethod('POST');
        });
       
// Process the request and get the response
       
jaxon()->processRequest();

       
$xResponse = jaxon()->getResponse();
       
$this->assertEquals(3, $xResponse->getCommandCount());
    }

   
/**
     * @throws RequestException
     */
   
public function testHookAllAfter()
    {
       
// Send a request to the registered class
       
jaxon()->di()->set(ServerRequestInterface::class, function($c) {
            return
$c->g(ServerRequestCreator::class)
                ->
fromGlobals()
                ->
withParsedBody([
                   
'jxncall' => json_encode([
                       
'type' => 'class',
                       
'name' => 'TestHk',
                       
'method' => 'two',
                       
'args' => [],
                    ]),
                ])
                ->
withMethod('POST');
        });
       
// Process the request and get the response
       
jaxon()->processRequest();

       
$xResponse = jaxon()->getResponse();
       
$this->assertEquals(4, $xResponse->getCommandCount());
    }

   
/**
     * @throws RequestException
     */
   
public function testHookArrayBefore()
    {
       
// Send a request to the registered class
       
jaxon()->di()->set(ServerRequestInterface::class, function($c) {
            return
$c->g(ServerRequestCreator::class)
                ->
fromGlobals()
                ->
withParsedBody([
                   
'jxncall' => json_encode([
                       
'type' => 'class',
                       
'name' => 'TestHk',
                       
'method' => 'three',
                       
'args' => [],
                    ]),
                ])
                ->
withMethod('POST');
        });
       
// Process the request and get the response
       
jaxon()->processRequest();

       
$xResponse = jaxon()->getResponse();
       
$this->assertEquals(5, $xResponse->getCommandCount());
    }

   
/**
     * @throws RequestException
     */
   
public function testHookArrayAfter()
    {
       
// Send a request to the registered class
       
jaxon()->di()->set(ServerRequestInterface::class, function($c) {
            return
$c->g(ServerRequestCreator::class)
                ->
fromGlobals()
                ->
withParsedBody([
                   
'jxncall' => json_encode([
                       
'type' => 'class',
                       
'name' => 'TestHk',
                       
'method' => 'four',
                       
'args' => [],
                    ]),
                ])
                ->
withMethod('POST');
        });
       
// Process the request and get the response
       
jaxon()->processRequest();

       
$xResponse = jaxon()->getResponse();
       
$this->assertEquals(5, $xResponse->getCommandCount());
    }

   
/**
     * @throws RequestException
     */
   
public function testHookParamAccess()
    {
       
// Send a request to the registered class
       
jaxon()->di()->set(ServerRequestInterface::class, function($c) {
            return
$c->g(ServerRequestCreator::class)
                ->
fromGlobals()
                ->
withParsedBody([
                   
'jxncall' => json_encode([
                       
'type' => 'class',
                       
'name' => 'TestHk',
                       
'method' => 'param',
                       
'args' => ['value'],
                    ]),
                ])
                ->
withMethod('POST');
        });
       
// Process the request and get the response
       
jaxon()->processRequest();

       
$xResponse = jaxon()->getResponse();
       
$this->assertEquals(3, $xResponse->getCommandCount());
    }
}