Skip to content

Commit

Permalink
[TASK] Refactor complete controller
Browse files Browse the repository at this point in the history
  • Loading branch information
calien666 committed Nov 9, 2024
1 parent 1a1a251 commit a7e8b3a
Show file tree
Hide file tree
Showing 39 changed files with 1,381 additions and 951 deletions.
7 changes: 3 additions & 4 deletions .ddev/config.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: xlsexport
type: typo3
docroot: public
php_version: "8.1"
docroot: .Build/Web
php_version: "8.2"
webserver_type: nginx-fpm
router_http_port: "80"
router_https_port: "443"
Expand All @@ -11,8 +11,7 @@ additional_fqdns: []
database:
type: mariadb
version: "10.3"
nfs_mount_enabled: false
mutagen_enabled: false
performance_mode: none
use_dns_when_possible: true
composer_version: "2"
web_environment:
Expand Down
180 changes: 180 additions & 0 deletions .github/workflows/testcore12.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
name: tests core 12

on:
pull_request:
workflow_dispatch:

jobs:
code-quality:
name: "code quality with core v12"
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
php-version: [ '8.1']
permissions:
# actions: read|write|none
actions: none
# checks: read|write|none
checks: none
# contents: read|write|none
contents: read
# deployments: read|write|none
deployments: none
# id-token: read|write|none
id-token: none
# issues: read|write|none
issues: none
# discussions: read|write|none
discussions: none
# packages: read|write|none
packages: read
# pages: read|write|none
pages: none
# pull-requests: read|write|none
pull-requests: none
# repository-projects: read|write|none
repository-projects: read
# security-events: read|write|none
security-events: none
# statuses: read|write|none
statuses: none
steps:
- name: "Checkout"
uses: actions/checkout@v4

- name: "Prepare dependencies for TYPO3 v12"
run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s composerUpdate"

# Disabled, as latest installable version of TypoScript linter does not support the TYPO3 backend layout
# override syntax in PageTSConfig files.
# @see https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/12.0/Feature-96812-OverrideBackendTemplatesWithTSconfig.html
# - name: "Run TypoScript lint"
# run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s lintTypoScript"

- name: "Run PHP lint"
run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s lintPhp"

- name: "Validate CGL"
run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s cgl"

- name: "Ensure tests methods do not start with \"test\""
run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s checkTestMethodsPrefix"

- name: "Ensure UTF-8 files do not contain BOM"
run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s checkBom"

- name: "Test .rst files for integrity"
run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s checkRst"

- name: "Find duplicate exception codes"
run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s checkExceptionCodes"

- name: "Run PHPStan"
run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s phpstan"

typoscript:
name: "Linting TypoScript and TSConfig files"
runs-on: ubuntu-24.04
permissions:
# actions: read|write|none
actions: none
# checks: read|write|none
checks: none
# contents: read|write|none
contents: read
# deployments: read|write|none
deployments: none
# id-token: read|write|none
id-token: none
# issues: read|write|none
issues: none
# discussions: read|write|none
discussions: none
# packages: read|write|none
packages: read
# pages: read|write|none
pages: none
# pull-requests: read|write|none
pull-requests: none
# repository-projects: read|write|none
repository-projects: read
# security-events: read|write|none
security-events: none
# statuses: read|write|none
statuses: none
steps:
- name: "Checkout"
uses: actions/checkout@v4

- name: "Prepare dependencies for TYPO3 v12"
run: "Build/Scripts/runTests.sh -t 12 -p 8.1 -s composerUpdate"


testsuite:
name: all tests with core v12
runs-on: ubuntu-24.04
needs:
- code-quality
- typoscript
strategy:
fail-fast: false
matrix:
php-version: [ '8.1', '8.2', '8.3', '8.4' ]
permissions:
# actions: read|write|none
actions: none
# checks: read|write|none
checks: none
# contents: read|write|none
contents: read
# deployments: read|write|none
deployments: none
# id-token: read|write|none
id-token: none
# issues: read|write|none
issues: none
# discussions: read|write|none
discussions: none
# packages: read|write|none
packages: read
# pages: read|write|none
pages: none
# pull-requests: read|write|none
pull-requests: none
# repository-projects: read|write|none
repository-projects: read
# security-events: read|write|none
security-events: none
# statuses: read|write|none
statuses: none
steps:
- name: "Checkout"
uses: actions/checkout@v4

- name: "Prepare dependencies for TYPO3 v12"
run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s composerUpdate"

- name: "Unit"
run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s unit"

- name: "Functional SQLite"
run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s functional -d sqlite"

- name: "Functional MariaDB 10.5 mysqli"
run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s functional -d mariadb -a mysqli"

- name: "Functional MariaDB 10.5 pdo_mysql"
run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s functional -d mariadb -a pdo_mysql"

- name: "Functional MySQL 8.0 mysqli"
run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s functional -d mariadb -a mysqli"

- name: "Functional MySQL 8.0 pdo_mysql"
run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s functional -d mariadb -a pdo_mysql"

- name: "Functional PostgresSQL 10"
# v12 postgres functional disabled with PHP 8.2 since https://github.com/doctrine/dbal/commit/73eec6d882b99e1e2d2d937accca89c1bd91b2d7
# is not fixed in doctrine core v12 doctrine 2.13.9
if: ${{ matrix.php <= '8.1' }}
run: "Build/Scripts/runTests.sh -t 12 -p ${{ matrix.php-version }} -s functional -d postgres"
62 changes: 56 additions & 6 deletions Build/phpstan/phpstan-baseline.neon
Original file line number Diff line number Diff line change
@@ -1,16 +1,66 @@
parameters:
ignoreErrors:
-
message: "#^Parameter \\#1 \\$formSettings of method Lavitto\\\\FormToDatabase\\\\Controller\\\\FormResultsController\\:\\:getAvailableFormDefinitions\\(\\) expects array\\{persistenceManager\\: array\\{allowedFileMounts\\: array\\<string\\>\\}\\}, array given\\.$#"
message: "#^Expression on left side of \\?\\? is not nullable\\.$#"
count: 1
path: ../../Classes/Controller/XlsExportController.php

-
message: "#^Property Calien\\\\Xlsexport\\\\Controller\\\\XlsExportController\\:\\:\\$modTSconfig \\(array\\<non\\-empty\\-string, mixed\\>\\) does not accept array\\<int\\|string, mixed\\>\\.$#"
count: 1
path: ../../Classes/Controller/XlsExportController.php

-
message: "#^Instanceof between string and Doctrine\\\\DBAL\\\\ParameterType will always evaluate to false\\.$#"
count: 1
path: ../../Classes/Service/DatabaseQueryTypoScriptParser.php

-
message: "#^Parameter \\#1 \\$objectOrClass of class ReflectionClass constructor expects class\\-string\\<T of object\\>\\|T of object, string given\\.$#"
count: 1
path: ../../Classes/Service/DatabaseQueryTypoScriptParser.php

-
message: "#^Parameter \\#2 \\$configuration of method Calien\\\\Xlsexport\\\\Service\\\\DatabaseQueryTypoScriptParser\\:\\:generateValue\\(\\) expects array\\{fieldName\\: string, parameter\\: array\\<float\\|int\\|string\\>\\|float\\|int\\|string, type\\: string, expressionType\\: string, isColumn\\?\\: bool\\}, array\\{fieldName\\: string, parameter\\: array\\<float\\|int\\|string\\>\\|float\\|int\\|string, type\\: 0\\|1\\|2\\|3\\|4\\|5\\|101\\|102\\|117, expressionType\\: string, isColumn\\?\\: bool\\} given\\.$#"
count: 6
path: ../../Classes/Service/DatabaseQueryTypoScriptParser.php

-
message: "#^Strict comparison using \\=\\=\\= between '0'\\|bool and '1' will always evaluate to false\\.$#"
count: 1
path: ../../Classes/Service/DatabaseQueryTypoScriptParser.php

-
message: "#^Call to an undefined method TYPO3\\\\CMS\\\\Core\\\\Database\\\\Query\\\\QueryBuilder\\:\\:getFrom\\(\\)\\.$#"
count: 2
path: ../../Classes/Controller/FormResultsController.php
path: ../../Tests/Functional/Service/DatabaseQueryTypoScriptParserTest.php

-
message: "#^Call to an undefined method TYPO3\\\\CMS\\\\Core\\\\Database\\\\Query\\\\QueryBuilder\\:\\:getSelect\\(\\)\\.$#"
count: 4
path: ../../Tests/Functional/Service/DatabaseQueryTypoScriptParserTest.php

-
message: "#^Call to an undefined method TYPO3\\\\CMS\\\\Core\\\\Database\\\\Query\\\\QueryBuilder\\:\\:getWhere\\(\\)\\.$#"
count: 1
path: ../../Tests/Functional/Service/DatabaseQueryTypoScriptParserTest.php

-
message: "#^Parameter \\#1 \\$configuration of method Calien\\\\Xlsexport\\\\Service\\\\DatabaseQueryTypoScriptParser\\:\\:buildQueryBuilderFromArray\\(\\) expects array\\{table\\: non\\-empty\\-string, alias\\?\\: non\\-empty\\-string, select\\: array\\<non\\-empty\\-string\\>, count\\?\\: non\\-empty\\-string, selectLiteral\\?\\: array\\<non\\-empty\\-string\\>, where\\: array\\<array\\{fieldName\\: string, parameter\\: array\\<float\\|int\\|string\\>\\|float\\|int\\|string, type\\: 0\\|1\\|2\\|3\\|4\\|5\\|101\\|102\\|117, expressionType\\: string, isColumn\\?\\: bool\\}\\>, join\\?\\: array\\<array\\{from\\: non\\-empty\\-string, to\\: non\\-empty\\-string, toAlias\\?\\: non\\-empty\\-string, where\\: array\\<array\\{fieldName\\: string, parameter\\: array\\<float\\|int\\|string\\>\\|float\\|int\\|string, type\\: 0\\|1\\|2\\|3\\|4\\|5\\|101\\|102\\|117, expressionType\\: string, isColumn\\?\\: bool\\}\\>\\}\\>, leftJoin\\?\\: array\\<array\\{from\\: non\\-empty\\-string, to\\: non\\-empty\\-string, toAlias\\?\\: non\\-empty\\-string, where\\: array\\<array\\{fieldName\\: string, parameter\\: array\\<float\\|int\\|string\\>\\|float\\|int\\|string, type\\: 0\\|1\\|2\\|3\\|4\\|5\\|101\\|102\\|117, expressionType\\: string, isColumn\\?\\: bool\\}\\>\\}\\>, \\.\\.\\.\\}, array\\{table\\: 'pages', select\\: array\\{'uid', 'pid', 'title'\\}, where\\: array\\{array\\{fieldName\\: 'pid', parameter\\: 1, type\\: 'Connection\\:\\:PARAM…', expressionType\\: 'eq'\\}\\}, join\\: array\\{array\\{from\\: 'pages', to\\: 'tt_content', where\\: array\\{array\\{fieldName\\: 'pages\\.uid', parameter\\: 'tt_content\\.pid', type\\: 'Connection\\:\\:PARAM…', expressionType\\: 'eq', isColumn\\: true\\}\\}\\}\\}\\} given\\.$#"
count: 1
path: ../../Tests/Functional/Service/DatabaseQueryTypoScriptParserTest.php

-
message: "#^Parameter \\#1 \\$configuration of method Calien\\\\Xlsexport\\\\Service\\\\DatabaseQueryTypoScriptParser\\:\\:buildQueryBuilderFromArray\\(\\) expects array\\{table\\: non\\-empty\\-string, alias\\?\\: non\\-empty\\-string, select\\: array\\<non\\-empty\\-string\\>, count\\?\\: non\\-empty\\-string, selectLiteral\\?\\: array\\<non\\-empty\\-string\\>, where\\: array\\<array\\{fieldName\\: string, parameter\\: array\\<float\\|int\\|string\\>\\|float\\|int\\|string, type\\: 0\\|1\\|2\\|3\\|4\\|5\\|101\\|102\\|117, expressionType\\: string, isColumn\\?\\: bool\\}\\>, join\\?\\: array\\<array\\{from\\: non\\-empty\\-string, to\\: non\\-empty\\-string, toAlias\\?\\: non\\-empty\\-string, where\\: array\\<array\\{fieldName\\: string, parameter\\: array\\<float\\|int\\|string\\>\\|float\\|int\\|string, type\\: 0\\|1\\|2\\|3\\|4\\|5\\|101\\|102\\|117, expressionType\\: string, isColumn\\?\\: bool\\}\\>\\}\\>, leftJoin\\?\\: array\\<array\\{from\\: non\\-empty\\-string, to\\: non\\-empty\\-string, toAlias\\?\\: non\\-empty\\-string, where\\: array\\<array\\{fieldName\\: string, parameter\\: array\\<float\\|int\\|string\\>\\|float\\|int\\|string, type\\: 0\\|1\\|2\\|3\\|4\\|5\\|101\\|102\\|117, expressionType\\: string, isColumn\\?\\: bool\\}\\>\\}\\>, \\.\\.\\.\\}, array\\{table\\: 'pages', select\\: array\\{'uid', 'pid', 'title'\\}, where\\: array\\{array\\{fieldName\\: 'pid', parameter\\: 1, type\\: 'Connection\\:\\:PARAM…', expressionType\\: 'eq'\\}\\}\\} given\\.$#"
count: 1
path: ../../Tests/Functional/Service/DatabaseQueryTypoScriptParserTest.php

-
message: "#^Parameter \\#1 \\$targetFolder of method TYPO3\\\\CMS\\\\Core\\\\Resource\\\\AbstractFile\\:\\:moveTo\\(\\) expects TYPO3\\\\CMS\\\\Core\\\\Resource\\\\Folder, TYPO3\\\\CMS\\\\Core\\\\Resource\\\\FolderInterface given\\.$#"
message: "#^Parameter \\#1 \\$configuration of method Calien\\\\Xlsexport\\\\Service\\\\DatabaseQueryTypoScriptParser\\:\\:buildQueryBuilderFromArray\\(\\) expects array\\{table\\: non\\-empty\\-string, alias\\?\\: non\\-empty\\-string, select\\: array\\<non\\-empty\\-string\\>, count\\?\\: non\\-empty\\-string, selectLiteral\\?\\: array\\<non\\-empty\\-string\\>, where\\: array\\<array\\{fieldName\\: string, parameter\\: array\\<float\\|int\\|string\\>\\|float\\|int\\|string, type\\: 0\\|1\\|2\\|3\\|4\\|5\\|101\\|102\\|117, expressionType\\: string, isColumn\\?\\: bool\\}\\>, join\\?\\: array\\<array\\{from\\: non\\-empty\\-string, to\\: non\\-empty\\-string, toAlias\\?\\: non\\-empty\\-string, where\\: array\\<array\\{fieldName\\: string, parameter\\: array\\<float\\|int\\|string\\>\\|float\\|int\\|string, type\\: 0\\|1\\|2\\|3\\|4\\|5\\|101\\|102\\|117, expressionType\\: string, isColumn\\?\\: bool\\}\\>\\}\\>, leftJoin\\?\\: array\\<array\\{from\\: non\\-empty\\-string, to\\: non\\-empty\\-string, toAlias\\?\\: non\\-empty\\-string, where\\: array\\<array\\{fieldName\\: string, parameter\\: array\\<float\\|int\\|string\\>\\|float\\|int\\|string, type\\: 0\\|1\\|2\\|3\\|4\\|5\\|101\\|102\\|117, expressionType\\: string, isColumn\\?\\: bool\\}\\>\\}\\>, \\.\\.\\.\\}, array\\{table\\: 'pages', select\\: array\\{'uid', 'pid', 'title'\\}, where\\: array\\{array\\{fieldName\\: 'pid', parameter\\: 1, type\\: 'Connection\\:\\:PARAM…', expressionType\\: 'not\\-allowed…'\\}\\}\\} given\\.$#"
count: 1
path: ../../Classes/Controller/FormResultsController.php
path: ../../Tests/Functional/Service/DatabaseQueryTypoScriptParserTest.php

-
message: "#^Parameter \\#1 \\$targetFolder of method TYPO3\\\\CMS\\\\Core\\\\Resource\\\\AbstractFile\\:\\:copyTo\\(\\) expects TYPO3\\\\CMS\\\\Core\\\\Resource\\\\Folder, TYPO3\\\\CMS\\\\Core\\\\Resource\\\\FolderInterface given\\.$#"
message: "#^Parameter \\#1 \\$configuration of method Calien\\\\Xlsexport\\\\Service\\\\DatabaseQueryTypoScriptParser\\:\\:buildQueryBuilderFromArray\\(\\) expects array\\{table\\: non\\-empty\\-string, alias\\?\\: non\\-empty\\-string, select\\: array\\<non\\-empty\\-string\\>, count\\?\\: non\\-empty\\-string, selectLiteral\\?\\: array\\<non\\-empty\\-string\\>, where\\: array\\<array\\{fieldName\\: string, parameter\\: array\\<float\\|int\\|string\\>\\|float\\|int\\|string, type\\: 0\\|1\\|2\\|3\\|4\\|5\\|101\\|102\\|117, expressionType\\: string, isColumn\\?\\: bool\\}\\>, join\\?\\: array\\<array\\{from\\: non\\-empty\\-string, to\\: non\\-empty\\-string, toAlias\\?\\: non\\-empty\\-string, where\\: array\\<array\\{fieldName\\: string, parameter\\: array\\<float\\|int\\|string\\>\\|float\\|int\\|string, type\\: 0\\|1\\|2\\|3\\|4\\|5\\|101\\|102\\|117, expressionType\\: string, isColumn\\?\\: bool\\}\\>\\}\\>, leftJoin\\?\\: array\\<array\\{from\\: non\\-empty\\-string, to\\: non\\-empty\\-string, toAlias\\?\\: non\\-empty\\-string, where\\: array\\<array\\{fieldName\\: string, parameter\\: array\\<float\\|int\\|string\\>\\|float\\|int\\|string, type\\: 0\\|1\\|2\\|3\\|4\\|5\\|101\\|102\\|117, expressionType\\: string, isColumn\\?\\: bool\\}\\>\\}\\>, \\.\\.\\.\\}, array\\{table\\: 'pages', select\\: array\\{'uid', 'pid', 'title'\\}, where\\: array\\{array\\{fieldName\\: 'pid', parameter\\: array\\{1\\}, type\\: 'Connection\\:\\:PARAM…', expressionType\\: 'in'\\}\\}\\} given\\.$#"
count: 1
path: ../../Classes/Hooks/FormHooks.php
path: ../../Tests/Functional/Service/DatabaseQueryTypoScriptParserTest.php
7 changes: 4 additions & 3 deletions Build/phpstan/phpstan.neon
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ includes:
parameters:
# Use local .cache dir instead of /tmp
tmpDir: ../../.cache/phpstan
ignoreErrors:
- '#Variable \$_EXTKEY might not be defined\.#'
# ignoreErrors:
# - '#Variable \$_EXTKEY might not be defined\.#'
level: 8

paths:
- ../../.
- ../../Classes
- ../../Tests

excludePaths:
- ../../.Build/*
Expand Down
Loading

0 comments on commit a7e8b3a

Please sign in to comment.