---
title: "Testing Examples"
manual: "RTE CKEditor Image"
version: "main"
permalink: "https://docs.typo3.org/permalink/netresearch/rte-ckeditor-image:examples-testing@main"
source: "Examples/Testing.rst"
rendered: "2026-10-01T01:27:51+00:00"
---

# Testing Examples {#examples-testing}

Examples for writing functional and unit tests for the RTE CKEditor Image extension.

**Table of Contents**

-   [Functional Test](https://docs.typo3.org/permalink/netresearch/rte-ckeditor-image:functional-test@main)
-   [Unit Test](https://docs.typo3.org/permalink/netresearch/rte-ckeditor-image:unit-test@main)
-   [Run Tests](https://docs.typo3.org/permalink/netresearch/rte-ckeditor-image:run-tests@main)
-   [Related Documentation](https://docs.typo3.org/permalink/netresearch/rte-ckeditor-image:related-documentation@main)

## Functional Test {#functional-test}

### Controller Test Example {#controller-test-example}

**Tests/Functional/Controller/SelectImageControllerTest.php**

```php
namespace Netresearch\RteCKEditorImage\Tests\Functional\Controller;

use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;

class SelectImageControllerTest extends FunctionalTestCase
{
    protected $testExtensionsToLoad = [
        'typo3conf/ext/rte_ckeditor_image'
    ];

    /**
     * @test
     */
    public function infoActionReturnsJsonForValidFile(): void
    {
        // Import test data
        $this->importDataSet(__DIR__ . '/Fixtures/sys_file.xml');

        // Create request
        $request = $this->createRequest('/typo3/rte/wizard/selectimage')
            ->withQueryParams([
                'action' => 'info',
                'fileId' => 1,
                'table' => 'sys_file'
            ]);

        // Execute
        $response = $this->executeFrontendRequest($request);

        // Assert
        self::assertEquals(200, $response->getStatusCode());

        $json = json_decode((string)$response->getBody(), true);
        self::assertArrayHasKey('uid', $json);
        self::assertArrayHasKey('url', $json);
        self::assertEquals(1, $json['uid']);
    }
}
```

## Unit Test {#unit-test}

### Database Hook Test Example {#database-hook-test-example}

**Tests/Unit/Database/RteImagesDbHookTest.php**

```php
namespace Netresearch\RteCKEditorImage\Tests\Unit\Database;

use Netresearch\RteCKEditorImage\Database\RteImagesDbHook;
use TYPO3\TestingFramework\Core\Unit\UnitTestCase;

class RteImagesDbHookTest extends UnitTestCase
{
    /**
     * @test
     */
    public function processDatamapAddsImageAttributes(): void
    {
        $hook = new RteImagesDbHook(/* dependencies */);

        $fieldArray = ['bodytext' => '<img src="/fileadmin/image.jpg" />'];
        $hook->processDatamap_postProcessFieldArray('new', 'tt_content', '1', $fieldArray, $dataHandler);

        self::assertStringContainsString('alt=', $fieldArray['bodytext']);
    }
}
```

## Run Tests {#run-tests}

### Execute Test Suites {#execute-test-suites}

```bash
# Functional tests
./vendor/bin/phpunit -c Build/phpunit-functional.xml

# Unit tests
./vendor/bin/phpunit -c Build/phpunit-unit.xml
```

**Result**: Automated testing suite ✅

## Related Documentation {#related-documentation}

-   [Controllers API](https://docs.typo3.org/permalink/netresearch/rte-ckeditor-image:api-controllers@main) \- Controller API documentation
-   [Data Handling API](https://docs.typo3.org/permalink/netresearch/rte-ckeditor-image:api-datahandling@main) \- Data handling API
-   [Custom Extensions](https://docs.typo3.org/permalink/netresearch/rte-ckeditor-image:examples-custom-extensions@main) \- Custom extensions
-   [Troubleshooting & Support](https://docs.typo3.org/permalink/netresearch/rte-ckeditor-image:troubleshooting-index@main) \- Common issues
