first version passing tests in Flow 8.3
All checks were successful
ci/woodpecker/push/code-style Pipeline was successful
ci/woodpecker/push/functional-tests/2 Pipeline was successful
ci/woodpecker/push/functional-tests/1 Pipeline was successful
ci/woodpecker/push/functional-tests/3 Pipeline was successful
ci/woodpecker/push/functional-tests/4 Pipeline was successful
All checks were successful
ci/woodpecker/push/code-style Pipeline was successful
ci/woodpecker/push/functional-tests/2 Pipeline was successful
ci/woodpecker/push/functional-tests/1 Pipeline was successful
ci/woodpecker/push/functional-tests/3 Pipeline was successful
ci/woodpecker/push/functional-tests/4 Pipeline was successful
This commit is contained in:
parent
c3e777f53b
commit
b3430789ec
11 changed files with 218 additions and 0 deletions
10
.woodpecker/code-style.yml
Normal file
10
.woodpecker/code-style.yml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
steps:
|
||||||
|
code-style:
|
||||||
|
image: composer
|
||||||
|
commands:
|
||||||
|
- composer global config repositories.repo-name vcs https://git.digital-competence.de/Packages/php-codesniffer
|
||||||
|
- composer global config --no-plugins allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
|
||||||
|
- composer global require digicomp/php-codesniffer:@dev
|
||||||
|
- composer global exec -- phpcs --runtime-set ignore_warnings_on_exit 1 --standard=DigiComp Classes/ Tests/
|
||||||
|
when:
|
||||||
|
- event: [push, pull_request, manual]
|
34
.woodpecker/functional-tests.yml
Normal file
34
.woodpecker/functional-tests.yml
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
workspace:
|
||||||
|
base: /woodpecker
|
||||||
|
path: package
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- FLOW_VERSION: 6.3
|
||||||
|
PHP_VERSION: 7.4
|
||||||
|
- FLOW_VERSION: 7.3
|
||||||
|
PHP_VERSION: 7.4
|
||||||
|
- FLOW_VERSION: 7.3
|
||||||
|
PHP_VERSION: 8.2
|
||||||
|
- FLOW_VERSION: 8.2
|
||||||
|
PHP_VERSION: 8.2
|
||||||
|
|
||||||
|
steps:
|
||||||
|
functional-tests:
|
||||||
|
image: "thecodingmachine/php:${PHP_VERSION}-v4-cli"
|
||||||
|
environment:
|
||||||
|
# Enable the PDO_SQLITE extension
|
||||||
|
- "PHP_EXTENSION_PDO_SQLITE=1"
|
||||||
|
- "FLOW_VERSION=${FLOW_VERSION}"
|
||||||
|
- "NEOS_BUILD_DIR=/woodpecker/Build-${FLOW_VERSION}"
|
||||||
|
commands:
|
||||||
|
- "sudo mkdir $NEOS_BUILD_DIR"
|
||||||
|
- "sudo chown -R docker:docker $NEOS_BUILD_DIR"
|
||||||
|
- "cd $NEOS_BUILD_DIR"
|
||||||
|
- "composer create-project --no-install neos/flow-base-distribution:^$FLOW_VERSION ."
|
||||||
|
- "composer config repositories.repo-name path /woodpecker/package"
|
||||||
|
- "composer remove --dev --no-update neos/behat || composer remove --no-update neos/behat"
|
||||||
|
- "composer require digicomp/fluid-currentcontroller-expression:@dev"
|
||||||
|
- "bin/phpunit --configuration Build/BuildEssentials/PhpUnit/FunctionalTests.xml Packages/Application/DigiComp.FluidCurrentControllerExpression/Tests/Functional"
|
||||||
|
when:
|
||||||
|
- event: [ push, pull_request, manual ]
|
41
Classes/CurrentControllerExpressionNode.php
Normal file
41
Classes/CurrentControllerExpressionNode.php
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DigiComp\FluidCurrentControllerExpression;
|
||||||
|
|
||||||
|
use Neos\FluidAdaptor\Core\Rendering\RenderingContext;
|
||||||
|
use Neos\Utility\ObjectAccess;
|
||||||
|
use TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\Expression\AbstractExpressionNode;
|
||||||
|
use TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\Expression\ExpressionNodeInterface;
|
||||||
|
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
|
||||||
|
|
||||||
|
class CurrentControllerExpressionNode extends AbstractExpressionNode implements ExpressionNodeInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* note: this could be readonly in PHP8
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public static string $detectionExpression = '/{currentController:([a-z0-9]+)}/i';
|
||||||
|
|
||||||
|
public static function evaluateExpression(RenderingContextInterface $renderingContext, $expression, array $matches)
|
||||||
|
{
|
||||||
|
if ($renderingContext instanceof RenderingContext) {
|
||||||
|
$propertyToReturn = $matches[1];
|
||||||
|
if (
|
||||||
|
\in_array(
|
||||||
|
$propertyToReturn,
|
||||||
|
['actionName', 'name', 'objectName', 'packageKey', 'subpackageKey'],
|
||||||
|
true
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
$propertyToReturn = 'controller' . \ucfirst($propertyToReturn);
|
||||||
|
}
|
||||||
|
return ObjectAccess::getProperty(
|
||||||
|
$renderingContext->getControllerContext()->getRequest(),
|
||||||
|
$propertyToReturn
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
9
Configuration/Objects.yaml
Normal file
9
Configuration/Objects.yaml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
Neos\FluidAdaptor\Core\Rendering\RenderingContext:
|
||||||
|
properties:
|
||||||
|
expressionNodeTypes:
|
||||||
|
value:
|
||||||
|
- Neos\FluidAdaptor\Core\Parser\SyntaxTree\Expression\LegacyNamespaceExpressionNode
|
||||||
|
- TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\Expression\CastingExpressionNode
|
||||||
|
- TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\Expression\MathExpressionNode
|
||||||
|
- TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\Expression\TernaryExpressionNode
|
||||||
|
- DigiComp\FluidCurrentControllerExpression\CurrentControllerExpressionNode
|
7
Configuration/Testing/Views.yaml
Normal file
7
Configuration/Testing/Views.yaml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
-
|
||||||
|
requestFilter: 'isFormat("html") && isPackage("DigiComp.FluidCurrentControllerExpression")'
|
||||||
|
options:
|
||||||
|
layoutRootPaths:
|
||||||
|
- "resource://DigiComp.FluidCurrentControllerExpression/Private/Layouts"
|
||||||
|
partialRootPaths:
|
||||||
|
- "resource://DigiComp.FluidCurrentControllerExpression/Private/Partials"
|
1
Resources/Private/Layouts/Test.html
Normal file
1
Resources/Private/Layouts/Test.html
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<f:render section="Content" />
|
|
@ -0,0 +1,6 @@
|
||||||
|
{currentController:name}
|
||||||
|
{currentController:actionName}
|
||||||
|
{currentController:packageKey}
|
||||||
|
{currentController:subpackageKey}
|
||||||
|
{currentController:objectName}
|
||||||
|
{currentController:format}
|
|
@ -0,0 +1,7 @@
|
||||||
|
<f:layout name="Test" />
|
||||||
|
<f:section name="Content">{currentController:name}
|
||||||
|
{currentController:actionName}
|
||||||
|
{currentController:packageKey}
|
||||||
|
{currentController:subpackageKey}
|
||||||
|
{currentController:objectName}
|
||||||
|
{currentController:format}</f:section>
|
65
Tests/Functional/CurrentControllerExpressionNodeTest.php
Normal file
65
Tests/Functional/CurrentControllerExpressionNodeTest.php
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DigiComp\FluidCurrentControllerExpression\Tests\Functional;
|
||||||
|
|
||||||
|
use Neos\Flow\Mvc\Routing\Route;
|
||||||
|
use Neos\Flow\Tests\FunctionalTestCase;
|
||||||
|
|
||||||
|
class CurrentControllerExpressionNodeTest extends FunctionalTestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var \Neos\Flow\Http\Client\Browser
|
||||||
|
*/
|
||||||
|
protected $browser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializer
|
||||||
|
*/
|
||||||
|
protected function setUp(): void
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
|
||||||
|
$route = new Route();
|
||||||
|
$route->setUriPattern('test/currentcontrollerexpressions/test(/{@action})');
|
||||||
|
$route->setDefaults([
|
||||||
|
'@package' => 'DigiComp.FluidCurrentControllerExpression',
|
||||||
|
'@subpackage' => 'Tests\Functional\Fixtures',
|
||||||
|
'@controller' => 'Test',
|
||||||
|
'@action' => 'index',
|
||||||
|
]);
|
||||||
|
$route->setAppendExceedingArguments(true);
|
||||||
|
$this->router->addRoute($route);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function itReturnsCurrentControllerInformations(): void
|
||||||
|
{
|
||||||
|
$response = $this->browser->request('http://localhost/test/currentcontrollerexpressions/test');
|
||||||
|
static::assertEquals(
|
||||||
|
'Test
|
||||||
|
index
|
||||||
|
DigiComp.FluidCurrentControllerExpression
|
||||||
|
Tests\Functional\Fixtures
|
||||||
|
DigiComp\FluidCurrentControllerExpression\Tests\Functional\Fixtures\Controller\TestController
|
||||||
|
html
|
||||||
|
',
|
||||||
|
(string)$response->getBody()
|
||||||
|
);
|
||||||
|
|
||||||
|
$response = $this->browser->request('http://localhost/test/currentcontrollerexpressions/test/withlayout');
|
||||||
|
static::assertEquals(
|
||||||
|
'Test
|
||||||
|
withLayout
|
||||||
|
DigiComp.FluidCurrentControllerExpression
|
||||||
|
Tests\Functional\Fixtures
|
||||||
|
DigiComp\FluidCurrentControllerExpression\Tests\Functional\Fixtures\Controller\TestController
|
||||||
|
html
|
||||||
|
',
|
||||||
|
(string)$response->getBody()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
18
Tests/Functional/Fixtures/Controller/TestController.php
Normal file
18
Tests/Functional/Fixtures/Controller/TestController.php
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DigiComp\FluidCurrentControllerExpression\Tests\Functional\Fixtures\Controller;
|
||||||
|
|
||||||
|
use Neos\Flow\Mvc\Controller\ActionController;
|
||||||
|
|
||||||
|
class TestController extends ActionController
|
||||||
|
{
|
||||||
|
public function indexAction()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function withLayoutAction()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
20
composer.json
Normal file
20
composer.json
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"name": "digicomp/fluid-currentcontroller-expression",
|
||||||
|
"type": "neos-package",
|
||||||
|
"description": "",
|
||||||
|
"require": {
|
||||||
|
"php": "^7.4 | ^8.1",
|
||||||
|
"neos/flow": "^6.3 | ^7.3 | ^8.2",
|
||||||
|
"neos/fluid-adaptor": "^6.3 | ^7.3 | ^8.3"
|
||||||
|
},
|
||||||
|
"extra":{
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-develop": "1.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"DigiComp\\FluidCurrentControllerExpression\\": "Classes/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue