Skip to content
Snippets Groups Projects
Commit 9b398933 authored by Torben Hansen's avatar Torben Hansen Committed by Benni Mack
Browse files

[TASK] Avoid usage of ConnectionPool in extbase functional tests

This change changes extbase persistence tests to use CSV files
where suitable.

The `addSimpleObjectTest` has been removed, since
`addObjectSetsDefaultLanguageTest` also tests, if a simple object
can be added.

Additionally, one test is moved from `AddTest.php` to
`UpdateTest.php`, because this test actually tests an update-
scenario instead of an add-scenario.

Resolves: #103668
Releases: main
Change-Id: I4b95a8f6f28be17d50f9f2b88f005a7f02248322
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84153


Tested-by: default avatarBenni Mack <benni@typo3.org>
Reviewed-by: default avatarOliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: default avatarBenni Mack <benni@typo3.org>
Tested-by: default avatarOliver Klee <typo3-coding@oliverklee.de>
Tested-by: default avatarcore-ci <typo3@b13.com>
parent 30399b0e
Branches
Tags
No related merge requests found
......@@ -20,7 +20,6 @@ namespace TYPO3\CMS\Extbase\Tests\Functional\Persistence;
use PHPUnit\Framework\Attributes\Test;
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
use TYPO3\CMS\Core\Core\SystemEnvironmentBuilder;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Http\ServerRequest;
use TYPO3\CMS\Extbase\DomainObject\AbstractDomainObject;
use TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager;
......@@ -51,32 +50,6 @@ final class AddTest extends FunctionalTestCase
$GLOBALS['TYPO3_REQUEST'] = $request;
}
#[Test]
public function addSimpleObjectTest(): void
{
$newBlogTitle = 'aDi1oogh';
$newBlog = new Blog();
$newBlog->setTitle($newBlogTitle);
$this->blogRepository->add($newBlog);
$this->persistentManager->persistAll();
$queryBuilder = (new ConnectionPool())->getQueryBuilderForTable('tx_blogexample_domain_model_blog');
$queryBuilder->getRestrictions()->removeAll();
$newBlogCount = $queryBuilder
->count('*')
->from('tx_blogexample_domain_model_blog')
->where(
$queryBuilder->expr()->eq(
'title',
$queryBuilder->createNamedParameter($newBlogTitle)
)
)
->executeQuery()
->fetchOne();
self::assertEquals(1, $newBlogCount);
}
#[Test]
public function addObjectSetsDefaultLanguageTest(): void
{
......@@ -87,20 +60,7 @@ final class AddTest extends FunctionalTestCase
$this->blogRepository->add($newBlog);
$this->persistentManager->persistAll();
$queryBuilder = (new ConnectionPool())->getQueryBuilderForTable('tx_blogexample_domain_model_blog');
$queryBuilder->getRestrictions()->removeAll();
$newBlogRecord = $queryBuilder
->select('*')
->from('tx_blogexample_domain_model_blog')
->where(
$queryBuilder->expr()->eq(
'title',
$queryBuilder->createNamedParameter($newBlogTitle)
)
)
->executeQuery()
->fetchAssociative();
self::assertEquals(0, $newBlogRecord['sys_language_uid']);
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TestResultAddObjectSetsDefaultLanguage.csv');
}
#[Test]
......@@ -114,53 +74,7 @@ final class AddTest extends FunctionalTestCase
$this->blogRepository->add($newBlog);
$this->persistentManager->persistAll();
$queryBuilder = (new ConnectionPool())->getQueryBuilderForTable('tx_blogexample_domain_model_blog');
$queryBuilder->getRestrictions()->removeAll();
$newBlogRecord = $queryBuilder
->select('*')
->from('tx_blogexample_domain_model_blog')
->where(
$queryBuilder->expr()->eq(
'title',
$queryBuilder->createNamedParameter($newBlogTitle)
)
)
->executeQuery()
->fetchAssociative();
self::assertEquals(-1, $newBlogRecord['sys_language_uid']);
}
#[Test]
public function addObjectSetsNullAsNullForSimpleTypes(): void
{
$newBlogTitle = 'aDi1oogh';
$newBlog = new Blog();
$newBlog->setTitle($newBlogTitle);
$newBlog->setSubtitle('subtitle');
$this->blogRepository->add($newBlog);
$this->persistentManager->persistAll();
// make sure null can be set explicitly
$insertedBlog = $this->blogRepository->findByUid(1);
$insertedBlog->setSubtitle(null);
$this->blogRepository->update($insertedBlog);
$this->persistentManager->persistAll();
$queryBuilder = (new ConnectionPool())->getQueryBuilderForTable('tx_blogexample_domain_model_blog');
$queryBuilder->getRestrictions()->removeAll();
$newBlogRecord = $queryBuilder
->select('*')
->from('tx_blogexample_domain_model_blog')
->where(
$queryBuilder->expr()->eq(
'subtitle',
$queryBuilder->createNamedParameter($newBlogTitle)
)
)
->executeQuery()
->fetchAssociative();
self::assertNull($newBlogRecord['subtitle'] ?? null);
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TestResultAddObjectSetsDefinedLanguage.csv');
}
#[Test]
......
"tx_blogexample_domain_model_blog",,,,,,
,"uid","pid","title",sys_language_uid,"deleted","hidden"
,1,0,"aDi1oogh",0,0,0
"tx_blogexample_domain_model_blog",,,,,,
,"uid","pid","title",sys_language_uid,"deleted","hidden"
,1,0,"aDi1oogh",-1,0,0
"tx_blogexample_domain_model_blog",,,,,,
,"uid","pid","title","subtitle",sys_language_uid,"deleted","hidden"
,1,0,"aDi1oogh",,0,0,0
......@@ -23,8 +23,10 @@ use TYPO3\CMS\Core\Core\SystemEnvironmentBuilder;
use TYPO3\CMS\Core\Http\ServerRequest;
use TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
use TYPO3Tests\BlogExample\Domain\Model\Blog;
use TYPO3Tests\BlogExample\Domain\Model\Person;
use TYPO3Tests\BlogExample\Domain\Model\Post;
use TYPO3Tests\BlogExample\Domain\Repository\BlogRepository;
use TYPO3Tests\BlogExample\Domain\Repository\PostRepository;
final class UpdateTest extends FunctionalTestCase
......@@ -35,6 +37,7 @@ final class UpdateTest extends FunctionalTestCase
private PersistenceManager $persistentManager;
private PostRepository $postRepository;
protected BlogRepository $blogRepository;
protected function setUp(): void
{
......@@ -42,6 +45,7 @@ final class UpdateTest extends FunctionalTestCase
$this->persistentManager = $this->get(PersistenceManager::class);
$this->postRepository = $this->get(PostRepository::class);
$this->blogRepository = $this->get(BlogRepository::class);
$GLOBALS['BE_USER'] = new BackendUserAuthentication();
$request = (new ServerRequest())->withAttribute('applicationType', SystemEnvironmentBuilder::REQUESTTYPE_BE);
......@@ -90,4 +94,24 @@ final class UpdateTest extends FunctionalTestCase
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TestResultNullableDateTimeProperty.csv');
}
#[Test]
public function updateObjectSetsNullAsNullForSimpleTypes(): void
{
$newBlogTitle = 'aDi1oogh';
$newBlog = new Blog();
$newBlog->setTitle($newBlogTitle);
$newBlog->setSubtitle('subtitle');
$this->blogRepository->add($newBlog);
$this->persistentManager->persistAll();
// make sure null can be set explicitly
$insertedBlog = $this->blogRepository->findByUid(1);
$insertedBlog->setSubtitle(null);
$this->blogRepository->update($insertedBlog);
$this->persistentManager->persistAll();
$this->assertCSVDataSet(__DIR__ . '/Fixtures/TestResultUpdateObjectSetsNullAsNullForSimpleTypes.csv');
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment