Enables usage of PHP instead of XML or CSV for datasets
Find a file
Mathias Brodala af6952d334
[TASK] Clarify trait usage
Properly state that this is a trait, the class name does not suggest so ATM. Also suggest renaming it on import to avoid confusion.
2024-03-26 08:49:10 +01:00
.github/workflows Add support for TYPO3 v13 and PHP 8.3 (#13) 2024-02-05 15:51:10 +01:00
bin Add command to convert from CSV to PHP (#10) 2023-11-09 10:05:45 +01:00
Classes Add support for TYPO3 v13 and PHP 8.3 (#13) 2024-02-05 15:51:10 +01:00
Tests/Functional Support empty extra columns in CSV conversion (#12) 2023-11-09 13:15:56 +01:00
.gitattributes First basic implementation (#1) 2023-04-11 15:12:51 +02:00
.gitignore First basic implementation (#1) 2023-04-11 15:12:51 +02:00
.php-cs-fixer.dist.php Add command to convert from CSV to PHP (#10) 2023-11-09 10:05:45 +01:00
CHANGELOG.md Add support for TYPO3 v13 and PHP 8.3 (#13) 2024-02-05 15:51:10 +01:00
composer.json Add support for TYPO3 v13 and PHP 8.3 (#13) 2024-02-05 15:51:10 +01:00
LICENSE Initial commit 2023-04-11 09:30:44 +02:00
phpstan-baseline.neon First basic implementation (#1) 2023-04-11 15:12:51 +02:00
phpstan.neon Add Support for TYPO3 v12.4 (#6) 2023-05-11 15:07:40 +02:00
phpunit.xml.dist Add support for TYPO3 v13 and PHP 8.3 (#13) 2024-02-05 15:51:10 +01:00
README.rst [TASK] Clarify trait usage 2024-03-26 08:49:10 +01:00
shell.nix Add support for TYPO3 v13 and PHP 8.3 (#13) 2024-02-05 15:51:10 +01:00

PHP DataSets for TYPO3

Provides APIs to use data sets written as PHP arrays with TYPO3.

Why

We don't like the approach of TYPO3 Testing Framework regarding DataSets.

We have the following issues:

  1. XML is only supported for imports, not for assertions
  2. CSV is a bad format that already got hacked, e.g. # to indicate comments. We consider it bad as one needs special toolings in order to properly write CSV files, they are not human readable.

That's why we prefer PHP files instead. That way developers are free to use whatever they want. Either plain PHP or even YAML or other formats. They are not forced to anything but can stick to their known tooling.

We also have situations where we wanna have static database records on production that are maintained by PHP data sets and update wizards.

So this package should in general handle PHP data sets for TYPO3. It should ease the abstract usage by providing convenient integrations for general use cases, like the testing framework.

Usage

See our own tests for how to use, as they do nothing else.

Within testing framework

  1. Create data set

    A data set is a PHP file that returns an array of tables with their records. Format is:

    return [
        'table_name' => [
            // Records
            [
                // column_name => value
                'uid' => 1,
            ],
        ],
    ];
  2. Import the Codappix\Typo3PhpDatasets\TestingFramework trait

    use Codappix\Typo3PhpDatasets\TestingFramework as PhpDatasets;
    
    final class MyTest extends FunctionalTestCase
    {
        use PhpDatasets;
    
        // ...
    }
  3. Use API

    Import:

    $this->importPHPDataSet(__DIR__ . '/Fixtures/SimpleSet.php');

    Assert:

    $this->assertPHPDataSet(__DIR__ . '/Fixtures/SimpleSet.php');

Converter

The package provides a single bin with command to convert existing data-sets. The bin is available as typo3-php-datasets. Available commands:

  • convert-from-xml
  • convert-from-csv

Each command will convert the existing file(s) and place a new php variant next to it. Existing files are only read, not changed.

TODO

  1. Implement use case to check for necessary updates and allow updates. Use for static data during deployment within update wizards or other scripts.