From dde2366e3d4003c99c7f9ce6ebf1c01a210d7c76 Mon Sep 17 00:00:00 2001 From: Morton Jonuschat <m.jonuschat@mojocode.de> Date: Fri, 17 Feb 2017 01:03:43 -0800 Subject: [PATCH] [BUGFIX] Fix functional tests for EXT:extbase on PostgreSQL Fix ExpressionBuilder::inSet() to allow working with columns on a seondary table on Non-MySQL databases. Fix the usage of inSet() within Typo3DbQueryParser to properly quote the table identifier and ensure that all places that use inSet() use it to compare a string value or a field on a table. Fix assertions to take string/int differences into account and ensure consistent order when asserting lists of records. Change-Id: I9fecd228cde1a7d5a6202702616d806b4354eb4f Resolves: #79796 Releases: master Reviewed-on: https://review.typo3.org/51733 Tested-by: TYPO3com <no-reply@typo3.com> Reviewed-by: Mona Muzaffar <mona.muzaffar@gmx.de> Tested-by: Mona Muzaffar <mona.muzaffar@gmx.de> Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch> Tested-by: Christian Kuhn <lolli@schwarzbu.ch> --- .../Query/Expression/ExpressionBuilder.php | 6 +- .../DatabaseTreeDataProvider.php | 2 +- .../Expression/ExpressionBuilderTest.php | 21 ++++- .../Generic/Storage/Typo3DbQueryParser.php | 3 +- .../Tests/Functional/Persistence/AddTest.php | 2 +- .../Persistence/QueryParserTest.php | 24 +++--- .../Functional/Persistence/RelationTest.php | 84 +++++++++---------- .../Persistence/TranslationTest.php | 8 +- .../Hooks/TreelistCacheUpdateHooks.php | 4 +- 9 files changed, 90 insertions(+), 64 deletions(-) diff --git a/typo3/sysext/core/Classes/Database/Query/Expression/ExpressionBuilder.php b/typo3/sysext/core/Classes/Database/Query/Expression/ExpressionBuilder.php index a75cbafa0f0b..ad5cf5bdb840 100644 --- a/typo3/sysext/core/Classes/Database/Query/Expression/ExpressionBuilder.php +++ b/typo3/sysext/core/Classes/Database/Query/Expression/ExpressionBuilder.php @@ -272,10 +272,12 @@ class ExpressionBuilder * * @param string $fieldName The fieldname. Will be quoted according to database platform automatically. * @param string $value Argument to be used in FIND_IN_SET() comparison. No automatic quoting/escaping is done. + * @param bool $isColumn Set when the value to compare is a column on a table to activate casting * @return string + * @throws \InvalidArgumentException * @throws \RuntimeException */ - public function inSet(string $fieldName, string $value): string + public function inSet(string $fieldName, string $value, bool $isColumn = false): string { if ($value === '') { throw new \InvalidArgumentException( @@ -295,7 +297,7 @@ class ExpressionBuilder case 'postgresql': case 'pdo_postgresql': return $this->comparison( - $this->literal($value), + $isColumn ? $value . '::text' : $value, self::EQ, sprintf( 'ANY(string_to_array(%s, %s))', diff --git a/typo3/sysext/core/Classes/Tree/TableConfiguration/DatabaseTreeDataProvider.php b/typo3/sysext/core/Classes/Tree/TableConfiguration/DatabaseTreeDataProvider.php index 49e7d1c3a742..5d5029b0d07d 100644 --- a/typo3/sysext/core/Classes/Tree/TableConfiguration/DatabaseTreeDataProvider.php +++ b/typo3/sysext/core/Classes/Tree/TableConfiguration/DatabaseTreeDataProvider.php @@ -495,7 +495,7 @@ class DatabaseTreeDataProvider extends AbstractTableConfigurationTreeDataProvide $queryBuilder->select('uid') ->from($this->getTableName()) - ->where($queryBuilder->expr()->inSet($fieldName, $queryId)); + ->where($queryBuilder->expr()->inSet($fieldName, $queryBuilder->quote($queryId))); if ($queryId === 0) { $queryBuilder->orWhere( diff --git a/typo3/sysext/core/Tests/Unit/Database/Query/Expression/ExpressionBuilderTest.php b/typo3/sysext/core/Tests/Unit/Database/Query/Expression/ExpressionBuilderTest.php index 372053eb652e..30798ba895e9 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Query/Expression/ExpressionBuilderTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Query/Expression/ExpressionBuilderTest.php @@ -260,7 +260,6 @@ class ExpressionBuilderTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCa $databasePlatform->getName()->willReturn('postgresql'); $this->connectionProphet->quote(',', Argument::cetera())->shouldBeCalled()->willReturn("','"); - $this->connectionProphet->quote('\'1\'', Argument::cetera())->shouldBeCalled()->willReturn("'1'"); $this->connectionProphet->quoteIdentifier(Argument::cetera())->will(function ($args) { return '"' . $args[0] . '"'; }); @@ -272,6 +271,26 @@ class ExpressionBuilderTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCa $this->assertSame('\'1\' = ANY(string_to_array("aField"::text, \',\'))', $result); } + /** + * @test + */ + public function inSetForPostgreSQLWithColumn() + { + $databasePlatform = $this->prophesize(MockPlatform::class); + $databasePlatform->getName()->willReturn('postgresql'); + + $this->connectionProphet->quote(',', Argument::cetera())->shouldBeCalled()->willReturn("','"); + $this->connectionProphet->quoteIdentifier(Argument::cetera())->will(function ($args) { + return '"' . $args[0] . '"'; + }); + + $this->connectionProphet->getDatabasePlatform()->willReturn($databasePlatform->reveal()); + + $result = $this->subject->inSet('aField', '"testtable"."uid"', true); + + $this->assertSame('"testtable"."uid"::text = ANY(string_to_array("aField"::text, \',\'))', $result); + } + /** * @test */ diff --git a/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbQueryParser.php b/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbQueryParser.php index fb90ddb40e02..9aba64c24cd0 100644 --- a/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbQueryParser.php +++ b/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbQueryParser.php @@ -941,7 +941,8 @@ class Typo3DbQueryParser } else { $joinConditionExpression = $this->queryBuilder->expr()->inSet( $tableName . '.' . $columnName, - $childTableAlias . '.uid' + $this->queryBuilder->quoteIdentifier($childTableAlias . '.uid'), + true ); } $this->queryBuilder->leftJoin($tableName, $childTableName, $childTableAlias, $joinConditionExpression); diff --git a/typo3/sysext/extbase/Tests/Functional/Persistence/AddTest.php b/typo3/sysext/extbase/Tests/Functional/Persistence/AddTest.php index 7baaa4d1f5a2..1c91cc99c83d 100644 --- a/typo3/sysext/extbase/Tests/Functional/Persistence/AddTest.php +++ b/typo3/sysext/extbase/Tests/Functional/Persistence/AddTest.php @@ -83,7 +83,7 @@ class AddTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTestCase ) ->execute() ->fetchColumn(0); - $this->assertSame(1, $newBlogCount); + $this->assertEquals(1, $newBlogCount); } /** diff --git a/typo3/sysext/extbase/Tests/Functional/Persistence/QueryParserTest.php b/typo3/sysext/extbase/Tests/Functional/Persistence/QueryParserTest.php index 1652424a31c2..77dc94217bb4 100644 --- a/typo3/sysext/extbase/Tests/Functional/Persistence/QueryParserTest.php +++ b/typo3/sysext/extbase/Tests/Functional/Persistence/QueryParserTest.php @@ -110,11 +110,12 @@ class QueryParserTest extends \TYPO3\TestingFramework\Core\Functional\Functional /** @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository $frontendUserRepository */ $frontendUserRepository = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Domain\\Repository\\FrontendUserRepository'); $query = $frontendUserRepository->createQuery(); - - $result = $query->matching( + $query->matching( $query->equals('usergroup.title', 'Group A') - )->execute(); - $this->assertSame(2, count($result)); + ); + + $result = $query->execute()->toArray(); + $this->assertCount(2, $result); } /** @@ -131,7 +132,7 @@ class QueryParserTest extends \TYPO3\TestingFramework\Core\Functional\Functional $query->equals('author.firstname', 'Author') ); $result = $query->execute()->toArray(); - $this->assertEquals(2, count($result)); + $this->assertCount(2, $result); } /** @@ -149,7 +150,7 @@ class QueryParserTest extends \TYPO3\TestingFramework\Core\Functional\Functional ) ); $result = $query->execute()->toArray(); - $this->assertEquals(2, count($result)); + $this->assertCount(2, $result); } /** @@ -168,7 +169,7 @@ class QueryParserTest extends \TYPO3\TestingFramework\Core\Functional\Functional ) ); $result = $query->execute()->toArray(); - $this->assertEquals(1, count($result)); + $this->assertCount(1, $result); } /** @@ -180,10 +181,9 @@ class QueryParserTest extends \TYPO3\TestingFramework\Core\Functional\Functional $frontendUserRepository = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Domain\\Repository\\FrontendUserRepository'); $query = $frontendUserRepository->createQuery(); - $result = $query->matching( - $query->contains('usergroup', 1) - )->execute(); - $this->assertSame(2, count($result)); + $result = $query->matching($query->contains('usergroup', 1)) + ->execute(); + $this->assertCount(2, $result); } /** @@ -194,6 +194,6 @@ class QueryParserTest extends \TYPO3\TestingFramework\Core\Functional\Functional $postRepository = $this->objectManager->get('ExtbaseTeam\\BlogExample\\Domain\\Repository\\PostRepository'); $query = $postRepository->createQuery(); $post = $query->matching($query->equals('uid', 1))->execute()->current(); - $this->assertSame(3, count($post->getCategories())); + $this->assertCount(3, $post->getCategories()); } } diff --git a/typo3/sysext/extbase/Tests/Functional/Persistence/RelationTest.php b/typo3/sysext/extbase/Tests/Functional/Persistence/RelationTest.php index 5505bf37886d..6cc153d3123e 100644 --- a/typo3/sysext/extbase/Tests/Functional/Persistence/RelationTest.php +++ b/typo3/sysext/extbase/Tests/Functional/Persistence/RelationTest.php @@ -103,7 +103,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ) )->execute() ->fetchColumn(0); - $this->assertSame(($countPostsOriginal + 1), $countPosts); + $this->assertEquals($countPostsOriginal + 1, $countPosts); $queryBuilder->resetQueryParts(); $post = $queryBuilder @@ -118,7 +118,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ->execute() ->fetch(); $this->assertSame($newPostTitle, $post['title']); - $this->assertSame((int)($countPostsOriginal + 1), $post['sorting']); + $this->assertEquals($countPostsOriginal + 1, $post['sorting']); } /** @@ -180,7 +180,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes )->orderBy('sorting', 'DESC') ->execute() ->fetch(); - $this->assertSame(null, $post['uid']); + $this->assertNull($post['uid']); $queryBuilder->resetQueryParts(); $post = $queryBuilder @@ -195,7 +195,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ->execute() ->fetch(); $this->assertSame('Post9', $post['title']); - $this->assertSame(9, $post['sorting']); + $this->assertEquals(9, $post['sorting']); } /** @@ -223,7 +223,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes $newPostTitle = 'INSERTED POST at position 6'; foreach ($posts as $post) { $this->blog->addPost($post); - if ($counter == 5) { + if ($counter === 5) { $newPost->setBlog($this->blog); $newPost->setTitle($newPostTitle); $newPost->setContent('Bla Bla Bla'); @@ -239,7 +239,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ->from('tx_blogexample_domain_model_post') ->execute() ->fetchColumn(0); - $this->assertSame(($countPostsOriginal + 1), $countPosts); + $this->assertEquals($countPostsOriginal + 1, $countPosts); //last post $queryBuilder->resetQueryParts(); @@ -255,7 +255,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ->execute() ->fetch(); $this->assertSame('Post10', $post['title']); - $this->assertSame(11, $post['sorting']); + $this->assertEquals(11, $post['sorting']); // check sorting of the post added in the middle $queryBuilder->resetQueryParts(); @@ -271,7 +271,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ->execute() ->fetch(); $this->assertSame($newPostTitle, $post['title']); - $this->assertSame(6, $post['sorting']); + $this->assertEquals(6, $post['sorting']); } /** @@ -293,7 +293,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes $posts = clone $this->blog->getPosts(); $counter = 1; foreach ($posts as $post) { - if ($counter == 5) { + if ($counter === 5) { $this->blog->removePost($post); } $counter++; @@ -306,7 +306,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ->from('tx_blogexample_domain_model_post') ->execute() ->fetchColumn(0); - $this->assertSame(($countPostsOriginal - 1), $countPosts); + $this->assertEquals($countPostsOriginal - 1, $countPosts); $queryBuilder->resetQueryParts(); $post = $queryBuilder @@ -321,7 +321,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ->execute() ->fetch(); $this->assertSame('Post10', $post['title']); - $this->assertSame(10, $post['sorting']); + $this->assertEquals(10, $post['sorting']); } /** @@ -348,10 +348,10 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes $counter = 0; $postCount = $posts->count(); foreach ($posts as $post) { - if ($counter != ($postCount - 1)) { + if ($counter !== ($postCount - 1)) { $this->blog->addPost($post); } - if ($counter == 4) { + if ($counter === 4) { $latestPost->setTitle('MOVED POST ' . $latestPost->getTitle()); $this->blog->addPost($latestPost); } @@ -365,7 +365,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ->from('tx_blogexample_domain_model_post') ->execute() ->fetchColumn(0); - $this->assertSame($countPostsOriginal, $countPosts); + $this->assertEquals($countPostsOriginal, $countPosts); $queryBuilder->getRestrictions()->removeAll(); $post = $queryBuilder @@ -380,7 +380,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ->execute() ->fetch(); $this->assertSame('Post9', $post['title']); - $this->assertSame(10, $post['sorting']); + $this->assertEquals(10, $post['sorting']); $queryBuilder->resetQueryParts(); $post = $queryBuilder @@ -398,7 +398,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ->execute() ->fetch(); $this->assertSame('MOVED POST Post10', $post['title']); - $this->assertSame(10, $post['uid']); + $this->assertEquals(10, $post['uid']); } /** @@ -436,7 +436,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ->from('tx_blogexample_domain_model_tag') ->execute() ->fetchColumn(0); - $this->assertSame(($countOriginal + 1), $count); + $this->assertEquals($countOriginal + 1, $count); $queryBuilder = (new ConnectionPool())->getQueryBuilderForTable('tx_blogexample_post_tag_mm'); $queryBuilder->getRestrictions() @@ -452,7 +452,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes )->orderBy('sorting', 'DESC') ->execute() ->fetch(); - $this->assertSame($newTag->getUid(), $tag['uid_foreign']); + $this->assertEquals($newTag->getUid(), $tag['uid_foreign']); } /** @@ -507,7 +507,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes )->orderBy('sorting', 'DESC') ->execute() ->fetch(); - $this->assertSame(9, $tag['uid_foreign']); + $this->assertEquals(9, $tag['uid_foreign']); $queryBuilder->resetQueryParts(); $tag = $queryBuilder @@ -527,7 +527,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes )->orderBy('sorting', 'DESC') ->execute() ->fetch(); - $this->assertSame(null, $tag['uid_foreign']); + $this->assertNull($tag['uid_foreign']); } /** @@ -561,7 +561,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes $counter = 1; foreach ($tags as $tag) { $post->addTag($tag); - if ($counter == 5) { + if ($counter === 5) { $post->addTag($newTag); } $counter++; @@ -579,7 +579,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ) ->execute() ->fetchColumn(0); - $this->assertSame(($countTagsOriginal + 1), $countTags); + $this->assertEquals($countTagsOriginal + 1, $countTags); $queryBuilder->resetQueryParts(); $tag = $queryBuilder @@ -593,7 +593,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes )->orderBy('sorting', 'DESC') ->execute() ->fetch(); - $this->assertSame(10, $tag['uid_foreign']); + $this->assertEquals(10, $tag['uid_foreign']); $queryBuilder->resetQueryParts(); $tag = $queryBuilder @@ -610,7 +610,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes )->orderBy('sorting', 'DESC') ->execute() ->fetch(); - $this->assertSame($newTag->getUid(), $tag['uid_foreign']); + $this->assertEquals($newTag->getUid(), $tag['uid_foreign']); } /** @@ -631,7 +631,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ) ->execute() ->fetchColumn(0); - $this->assertSame(10, $countTags); + $this->assertEquals(10, $countTags); /** @var \ExtbaseTeam\BlogExample\Domain\Repository\PostRepository $postRepository */ $postRepository = $this->objectManager->get(\ExtbaseTeam\BlogExample\Domain\Repository\PostRepository::class); @@ -639,7 +639,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes $tags = clone $post->getTags(); $counter = 1; foreach ($tags as $tag) { - if ($counter == 5) { + if ($counter === 5) { $post->removeTag($tag); } $counter++; @@ -657,7 +657,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ) ->execute() ->fetchColumn(0); - $this->assertSame(9, $countTags); + $this->assertEquals(9, $countTags); $queryBuilder->resetQueryParts(); $tag = $queryBuilder @@ -671,8 +671,8 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes )->orderBy('sorting', 'DESC') ->execute() ->fetch(); - $this->assertSame(10, $tag['uid_foreign']); - $this->assertSame(10, $tag['sorting']); + $this->assertEquals(10, $tag['uid_foreign']); + $this->assertEquals(10, $tag['sorting']); $queryBuilder->resetQueryParts(); $tag = $queryBuilder @@ -689,7 +689,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ) ->execute() ->fetch(); - $this->assertSame(null, $tag['uid_foreign']); + $this->assertNull($tag['uid_foreign']); } /** @@ -710,7 +710,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ) ->execute() ->fetchColumn(0); - $this->assertSame(10, $countTags); + $this->assertEquals(10, $countTags); /** @var \ExtbaseTeam\BlogExample\Domain\Repository\PostRepository $postRepository */ $postRepository = $this->objectManager->get(\ExtbaseTeam\BlogExample\Domain\Repository\PostRepository::class); @@ -724,10 +724,10 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes $counter = 1; $tagCount = $tags->count(); foreach ($tags as $tag) { - if ($counter != $tagCount) { + if ($counter !== $tagCount) { $post->addTag($tag); } - if ($counter == 5) { + if ($counter === 5) { $post->addTag($latestTag); } $counter++; @@ -746,7 +746,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ) ->execute() ->fetchColumn(0); - $this->assertSame(10, $countTags); + $this->assertEquals(10, $countTags); $queryBuilder->resetQueryParts(); $tag = $queryBuilder @@ -760,8 +760,8 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes )->orderBy('sorting', 'DESC') ->execute() ->fetch(); - $this->assertSame(9, $tag['uid_foreign']); - $this->assertSame(10, $tag['sorting']); + $this->assertEquals(9, $tag['uid_foreign']); + $this->assertEquals(10, $tag['sorting']); $sorting = '6'; $queryBuilder->resetQueryParts(); @@ -782,7 +782,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ) ->execute() ->fetch(); - $this->assertSame(10, $tag['uid_foreign']); + $this->assertEquals(10, $tag['uid_foreign']); } /** @@ -834,7 +834,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes /** @var \ExtbaseTeam\BlogExample\Domain\Repository\PostRepository $postRepository */ $postRepository = $this->objectManager->get(\ExtbaseTeam\BlogExample\Domain\Repository\PostRepository::class); $posts = $postRepository->findByTagAndBlog('Tag2', $this->blog); - $this->assertSame(1, count($posts)); + $this->assertCount(1, $posts); } /** @@ -863,7 +863,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ) ->execute() ->fetchColumn(0); - $this->assertSame(3, $countCategories); + $this->assertEquals(3, $countCategories); /** @var \ExtbaseTeam\BlogExample\Domain\Repository\PostRepository $postRepository */ $postRepository = $this->objectManager->get(\ExtbaseTeam\BlogExample\Domain\Repository\PostRepository::class); @@ -913,7 +913,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ) ->execute() ->fetchColumn(0); - $this->assertSame(3, $countCategories); + $this->assertEquals(3, $countCategories); /** @var \ExtbaseTeam\BlogExample\Domain\Repository\PostRepository $postRepository */ $postRepository = $this->objectManager->get(\ExtbaseTeam\BlogExample\Domain\Repository\PostRepository::class); @@ -947,7 +947,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ) ->execute() ->fetchColumn(0); - $this->assertSame(4, $countCategories); + $this->assertEquals(4, $countCategories); } /** @@ -996,7 +996,7 @@ class RelationTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTes ->execute() ->fetchColumn(0); - $this->assertSame($this->blog->getCategories()->count(), $newBlogCategoryCount); + $this->assertEquals($this->blog->getCategories()->count(), $newBlogCategoryCount); } /** diff --git a/typo3/sysext/extbase/Tests/Functional/Persistence/TranslationTest.php b/typo3/sysext/extbase/Tests/Functional/Persistence/TranslationTest.php index b5797ad5b3c1..3ad305d60beb 100644 --- a/typo3/sysext/extbase/Tests/Functional/Persistence/TranslationTest.php +++ b/typo3/sysext/extbase/Tests/Functional/Persistence/TranslationTest.php @@ -162,12 +162,14 @@ class TranslationTest extends \TYPO3\TestingFramework\Core\Functional\Functional $querySettings->setRespectSysLanguage(true); $querySettings->setLanguageUid(1); + $query->setOrderings(['title' => QueryInterface::ORDER_ASCENDING]); + /** @var Post[] $posts */ $posts = $query->execute()->toArray(); $this->assertCount(3, $posts); - $this->assertSame('B EN:Post1', $posts[0]->getTitle()); - $this->assertSame('A EN:Post2', $posts[1]->getTitle()); + $this->assertSame('A EN:Post2', $posts[0]->getTitle()); + $this->assertSame('B EN:Post1', $posts[1]->getTitle()); $this->assertSame('Post3', $posts[2]->getTitle()); } @@ -183,6 +185,8 @@ class TranslationTest extends \TYPO3\TestingFramework\Core\Functional\Functional $querySettings->setRespectSysLanguage(true); $querySettings->setLanguageUid(2); + $query->setOrderings(['title' => QueryInterface::ORDER_ASCENDING]); + /** @var Post[] $posts */ $posts = $query->execute()->toArray(); diff --git a/typo3/sysext/frontend/Classes/Hooks/TreelistCacheUpdateHooks.php b/typo3/sysext/frontend/Classes/Hooks/TreelistCacheUpdateHooks.php index e18d77380541..0bf670aaadb7 100644 --- a/typo3/sysext/frontend/Classes/Hooks/TreelistCacheUpdateHooks.php +++ b/typo3/sysext/frontend/Classes/Hooks/TreelistCacheUpdateHooks.php @@ -280,7 +280,7 @@ class TreelistCacheUpdateHooks $queryBuilder ->delete('cache_treelist') ->where( - $queryBuilder->expr()->inSet('treelist', (int)$affectedPage) + $queryBuilder->expr()->inSet('treelist', $queryBuilder->quote($affectedPage)) ) ->execute(); } @@ -300,7 +300,7 @@ class TreelistCacheUpdateHooks $queryBuilder ->update('cache_treelist') ->where( - $queryBuilder->expr()->inSet('treelist', (int)$affectedPage) + $queryBuilder->expr()->inSet('treelist', $queryBuilder->quote($affectedPage)) ) ->set('expires', $expirationTime) ->execute(); -- GitLab