Nimut / testing-framework

TYPO3 testing framework that provides base classes and configuration for PHPUnit tests
GNU General Public License v2.0
52 stars 25 forks source link

AbstractTestSystem::initializeTestDatabase should not truncate tables that contain static data #105

Open oliverklee opened 5 years ago

oliverklee commented 5 years ago

I'm currently working on an extension that imports static data using an ext_tables_static+adt.sql file, and that includes a functional repository test that tests that records can be loaded from the corresponding table, and that fields are mapped correctly for the model.

The first time one of those tests is run (when a new test system and a new DB is created), is passes. The second time, it fails because the database is truncated:

    public function setUp(
            // …
    ) {
        $this->registerNtfStreamWrapper();
        $this->setTypo3Context();
        if ($this->recentTestSystemExists()) {
            $this->includeAndStartCoreBootstrap();
            $this->initializeTestDatabase();
            $this->loadExtensionConfiguration();
        } else {
            // …
        }
    protected function initializeTestDatabase()
    {
        $this->bootstrap->initializeTypo3DbGlobal();
        /** @var DatabaseConnection $database */
        $database = $GLOBALS['TYPO3_DB'];
            // …
        foreach ($database->admin_get_tables() as $table) {
            $database->admin_query('TRUNCATE ' . $table['Name'] . ';');
        }
    }

This problem occurs with nimut/testing-framework 2.0.3, but the corresponding code in master does the same things.

May a configuration in the functional test case which tables should be kept would be an approach for this?

oliverklee commented 5 years ago

For me personally, it's not important whether the table always is empty or filled with the static data. The test run results should be consistent between the first and the subsequent runs, though.

mbrodala commented 5 years ago

Alternatively the logic to import static data could be executed again after truncating all tables.

lolli42 commented 2 years ago

Note: https://github.com/TYPO3/testing-framework/ solved this.