Skip to content

Commit

Permalink
goTo класса BitrixableTestCase.
Browse files Browse the repository at this point in the history
  • Loading branch information
ProklUng committed Jun 15, 2021
1 parent 69aca81 commit db7e265
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 2 deletions.
22 changes: 21 additions & 1 deletion readme.MD
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ public function useComponentInvoker() {
}
```

#### Тестирование работы адаптера шабалона (result_modifier)
#### Тестирование работы адаптера шаблона (result_modifier)

Тестировать result_modifier шаблона компонента можно объектом класса ```Prokl\BitrixTestingTools\Invokers\ResultModifierInvoker```.

Expand Down Expand Up @@ -267,3 +267,23 @@ public function handlersOfEventExist() {
$this->getAssert()->asTrue($eventInvoker->countOfHandlers() > 1);
}
```

#### Прочее

- Метод `goTo` класса `BitrixableTestCase`. Эмулирует нахождение на каком-либо URL. Выставляет все, что связано с URL
в старом ядре и D7.

Также подменяет автоматом все, что возможно из супер-глобалов типа $_SERVER, $_POST и т.д.

```php
$_GET['test'] = 'OK';

$this->goTo('/test/');

$url = $APPLICATION->GetCurPage(); // $url = '/test/index.php'

$request = Application::getInstance()->getContext()->getRequest();
$uriString = $request->getRequestUri(); // $uriString = '/test/'

$testGetParam = $request->getQuery('test'); // $testGetParam = 'OK'
```
39 changes: 38 additions & 1 deletion src/Base/BitrixableTestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace Prokl\BitrixTestingTools\Base;

use Bitrix\Catalog\Model\Price;
use Bitrix\Main\Application;
use Exception;
use Prokl\BitrixTestingTools\Migrations\ArrilotMigratorProcessor;
use Prokl\BitrixTestingTools\Migrator;
Expand All @@ -13,6 +13,8 @@
use Prokl\BitrixTestingTools\Traits\SprintMigrationsTrait;
use Prokl\BitrixTestingTools\Traits\UseMigrationsTrait;
use Prokl\TestingTools\Base\BaseTestCase;
use ReflectionClass;
use ReflectionException;
use Sheerockoff\BitrixCi\Bootstrap;

/**
Expand Down Expand Up @@ -100,6 +102,41 @@ protected function setupDatabaseData() : void
putenv('MYSQL_PASSWORD=');
}

/**
* Эмуляция нахождения на какой-либо странице. Выставляется все, что связано с URL - как в D7,
* так и в старом ядре.
*
* @param string $url URL.
*
* @return void
*
* @throws ReflectionException
*
* @since 15.06.2021
*/
protected function goTo(string $url) : void
{
$_SERVER['REQUEST_URI'] = $url;
$GLOBALS['APPLICATION']->sDirPath = GetPagePath(false, true);

$application = Application::getInstance();

$reflection = new ReflectionClass($application);
$reflection_property = $reflection->getProperty('isExtendedKernelInitialized');
$reflection_property->setAccessible(true);
$reflection_property->setValue($application, false);

$application->initializeExtendedKernel(
[
'server' => $_SERVER,
'get' => $_GET,
'post' => $_POST,
'files' => $_FILES,
'cookie' => $_COOKIE,
]
);
}

/**
* Битриксовые штучки-дрючки с буфером.
*
Expand Down

0 comments on commit db7e265

Please sign in to comment.