‪TYPO3CMS  ‪main
CategoryCollectionTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\Attributes\Test;
24 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
25 
26 final class ‪CategoryCollectionTest extends FunctionalTestCase
27 {
31  private ‪$collectionRecord = [];
32 
33  protected array ‪$testExtensionsToLoad = [
34  'typo3/sysext/core/Tests/Functional/Category/Collection/Fixtures/Extensions/test_tca',
35  ];
36 
40  protected function ‪setUp(): void
41  {
42  parent::setUp();
43  $this->collectionRecord = [
44  'uid' => 0,
45  'title' => ‪StringUtility::getUniqueId('title'),
46  'description' => ‪StringUtility::getUniqueId('description'),
47  'table_name' => 'tx_test_test',
48  'field_name' => 'categories',
49  ];
50  $this->importCSVDataSet(__DIR__ . '/Fixtures/DataSet/categoryRelations.csv');
51  }
52 
53  #[Test]
54  public function ‪checkIfFromArrayMethodSetCorrectProperties(): void
55  {
56  $subject = new ‪CategoryCollection('tx_test_test');
57  $subject->fromArray($this->collectionRecord);
58  self::assertEquals($this->collectionRecord['uid'], $subject->getIdentifier());
59  self::assertEquals($this->collectionRecord['uid'], $subject->getUid());
60  self::assertEquals($this->collectionRecord['title'], $subject->getTitle());
61  self::assertEquals($this->collectionRecord['description'], $subject->getDescription());
62  self::assertEquals($this->collectionRecord['table_name'], $subject->getItemTableName());
63  }
64 
65  #[Test]
66  public function ‪canCreateDummyCollection(): void
67  {
68  $collection = ‪CategoryCollection::create($this->collectionRecord);
69  self::assertInstanceOf(CategoryCollection::class, $collection);
70  }
71 
72  #[Test]
73  public function ‪canCreateDummyCollectionAndFillItems(): void
74  {
75  $collection = ‪CategoryCollection::create($this->collectionRecord, true);
76  self::assertInstanceOf(CategoryCollection::class, $collection);
77  }
78 
79  #[Test]
80  public function ‪getCollectedRecordsReturnsEmptyRecordSet(): void
81  {
82  $subject = new ‪CategoryCollection('tx_test_test');
83  $method = new \ReflectionMethod(CategoryCollection::class, 'getCollectedRecords');
84  $records = $method->invoke($subject);
85  self::assertIsArray($records);
86  self::assertEmpty($records);
87  }
88 
89  #[Test]
90  public function ‪isStorageTableNameEqualsToSysCategory(): void
91  {
92  self::assertEquals('sys_category', ‪CategoryCollection::getStorageTableName());
93  }
94 
95  #[Test]
96  public function ‪isStorageItemsFieldEqualsToItems(): void
97  {
98  self::assertEquals('items', ‪CategoryCollection::getStorageItemsField());
99  }
100 
101  #[Test]
102  public function ‪canLoadADummyCollectionFromDatabase(): void
103  {
104  $collection = ‪CategoryCollection::load(1, true, 'tx_test_test');
105  // Check the number of record
106  self::assertEquals(5, $collection->count());
107  // Check that the first record is the one expected
108  $queryBuilder = $this->getConnectionPool()
109  ->getQueryBuilderForTable('tx_test_test');
110  $queryBuilder->getRestrictions()->removeAll();
111  $statement = $queryBuilder
112  ->select('*')
113  ->from('tx_test_test')
114  ->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter(1, ‪Connection::PARAM_INT)))
115  ->executeQuery();
116  ‪$record = $statement->fetchAssociative();
117  $collection->rewind();
118  self::assertEquals(‪$record, $collection->current());
119  // Add a new record
120  $fakeRecord = [
121  'uid' => 6,
122  'pid' => 0,
123  'title' => ‪StringUtility::getUniqueId('title'),
124  'categories' => 0,
125  ];
126  // Check the number of records
127  $collection->add($fakeRecord);
128  self::assertEquals(6, $collection->count());
129  }
130 
131  #[Test]
133  {
134  $collection = ‪CategoryCollection::load(1, true, 'tx_test_test');
135  // Add a new record
136  $fakeRecord = [
137  'uid' => 6,
138  'pid' => 0,
139  'title' => ‪StringUtility::getUniqueId('title'),
140  'categories' => 0,
141  ];
142  // Check the number of records
143  $collection->add($fakeRecord);
144  self::assertEquals(6, $collection->count());
145  }
146 
147  #[Test]
149  {
150  $collection = ‪CategoryCollection::load(1, false, 'tx_test_test');
151  // Check the number of record
152  self::assertEquals(0, $collection->count());
153  }
154 
155  #[Test]
157  {
158  // Remove one relation
159  $fakeName = [
160  'tablenames' => ‪StringUtility::getUniqueId('name'),
161  ];
162  $this->getConnectionPool()
163  ->getConnectionForTable('sys_category_record_mm')
164  ->update('sys_category_record_mm', $fakeName, ['uid_foreign' => 1]);
165  // Check the number of records
166  $collection = ‪CategoryCollection::load(1, true, 'tx_test_test');
167  self::assertEquals(4, $collection->count());
168  }
169 }
‪TYPO3\CMS\Core\Tests\Functional\Category\Collection\CategoryCollectionTest\canLoadADummyCollectionFromDatabaseAndAddRecord
‪canLoadADummyCollectionFromDatabaseAndAddRecord()
Definition: CategoryCollectionTest.php:131
‪TYPO3\CMS\Core\Tests\Functional\Category\Collection\CategoryCollectionTest\checkIfFromArrayMethodSetCorrectProperties
‪checkIfFromArrayMethodSetCorrectProperties()
Definition: CategoryCollectionTest.php:53
‪TYPO3\CMS\Core\Database\Connection\PARAM_INT
‪const PARAM_INT
Definition: Connection.php:52
‪TYPO3\CMS\Core\Tests\Functional\Category\Collection\CategoryCollectionTest\$collectionRecord
‪array $collectionRecord
Definition: CategoryCollectionTest.php:30
‪TYPO3\CMS\Core\Tests\Functional\Category\Collection\CategoryCollectionTest
Definition: CategoryCollectionTest.php:27
‪TYPO3\CMS\Core\Tests\Functional\Category\Collection\CategoryCollectionTest\canLoadADummyCollectionWithoutContentFromDatabase
‪canLoadADummyCollectionWithoutContentFromDatabase()
Definition: CategoryCollectionTest.php:147
‪TYPO3\CMS\Core\Category\Collection\CategoryCollection
Definition: CategoryCollection.php:32
‪TYPO3\CMS\Core\Tests\Functional\Category\Collection\CategoryCollectionTest\setUp
‪setUp()
Definition: CategoryCollectionTest.php:39
‪TYPO3\CMS\Core\Tests\Functional\Category\Collection\CategoryCollectionTest\canLoadADummyCollectionFromDatabase
‪canLoadADummyCollectionFromDatabase()
Definition: CategoryCollectionTest.php:101
‪TYPO3\CMS\Core\Category\Collection\CategoryCollection\load
‪static CategoryCollection load($id, $fillItems=false, $tableName='', $fieldName='')
Definition: CategoryCollection.php:99
‪TYPO3\CMS\Core\Tests\Functional\Category\Collection\CategoryCollectionTest\isStorageTableNameEqualsToSysCategory
‪isStorageTableNameEqualsToSysCategory()
Definition: CategoryCollectionTest.php:89
‪TYPO3\CMS\Core\Category\Collection\CategoryCollection\getStorageTableName
‪static string getStorageTableName()
Definition: CategoryCollection.php:319
‪TYPO3\CMS\Webhooks\Message\$record
‪identifier readonly int readonly array $record
Definition: PageModificationMessage.php:36
‪TYPO3\CMS\Core\Category\Collection\CategoryCollection\getStorageItemsField
‪static string getStorageItemsField()
Definition: CategoryCollection.php:329
‪TYPO3\CMS\Core\Category\Collection\CategoryCollection\create
‪static CategoryCollection create(array $collectionRecord, $fillItems=false)
Definition: CategoryCollection.php:73
‪TYPO3\CMS\Core\Tests\Functional\Category\Collection\CategoryCollectionTest\$testExtensionsToLoad
‪array $testExtensionsToLoad
Definition: CategoryCollectionTest.php:32
‪TYPO3\CMS\Core\Tests\Functional\Category\Collection\CategoryCollectionTest\canCreateDummyCollection
‪canCreateDummyCollection()
Definition: CategoryCollectionTest.php:65
‪TYPO3\CMS\Core\Tests\Functional\Category\Collection\CategoryCollectionTest\isStorageItemsFieldEqualsToItems
‪isStorageItemsFieldEqualsToItems()
Definition: CategoryCollectionTest.php:95
‪TYPO3\CMS\Core\Database\Connection
Definition: Connection.php:41
‪TYPO3\CMS\Core\Tests\Functional\Category\Collection\CategoryCollectionTest\getCollectedRecordsReturnsEmptyRecordSet
‪getCollectedRecordsReturnsEmptyRecordSet()
Definition: CategoryCollectionTest.php:79
‪TYPO3\CMS\Core\Tests\Functional\Category\Collection\CategoryCollectionTest\canLoadADummyCollectionFromDatabaseAfterRemoveOneRelation
‪canLoadADummyCollectionFromDatabaseAfterRemoveOneRelation()
Definition: CategoryCollectionTest.php:155
‪TYPO3\CMS\Core\Tests\Functional\Category\Collection\CategoryCollectionTest\canCreateDummyCollectionAndFillItems
‪canCreateDummyCollectionAndFillItems()
Definition: CategoryCollectionTest.php:72
‪TYPO3\CMS\Core\Utility\StringUtility
Definition: StringUtility.php:24
‪TYPO3\CMS\Core\Utility\StringUtility\getUniqueId
‪static getUniqueId(string $prefix='')
Definition: StringUtility.php:57
‪TYPO3\CMS\Core\Tests\Functional\Category\Collection
Definition: CategoryCollectionTest.php:18