‪TYPO3CMS  ‪main
RegistryTest.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 ‪RegistryTest extends FunctionalTestCase
27 {
28  #[Test]
30  {
31  self::assertNull((new ‪Registry())->get('myExtension', 'myKey'));
32  }
33 
34  #[Test]
36  {
37  self::assertSame('myDefault', (new ‪Registry())->get('myExtension', 'myKey', 'myDefault'));
38  }
39 
40  #[Test]
41  public function ‪getReturnsEntryFromDatabase(): void
42  {
43  (new ‪ConnectionPool())->getConnectionForTable('sys_registry')
44  ->insert(
45  'sys_registry',
46  [
47  'entry_namespace' => 'myExtension',
48  'entry_key' => 'myKey',
49  'entry_value' => serialize('myValue'),
50  ],
51  [
52  'entry_value' => ‪Connection::PARAM_LOB,
53  ]
54  );
55  self::assertSame('myValue', (new ‪Registry())->get('myExtension', 'myKey'));
56  }
57 
58  #[Test]
59  public function ‪setInsertsEntryInDatabase(): void
60  {
61  (new ‪Registry())->set('myExtension', 'myKey', 'myValue');
62  $valueInDatabase = (new ‪ConnectionPool())->getConnectionForTable('sys_registry')
63  ->select(
64  ['entry_value'],
65  'sys_registry',
66  ['entry_namespace' => 'myExtension', 'entry_key' => 'myKey']
67  )
68  ->fetchAssociative();
69  self::assertSame('myValue', unserialize($valueInDatabase['entry_value']));
70  }
71 
72  #[Test]
74  {
75  (new ‪ConnectionPool())->getConnectionForTable('sys_registry')
76  ->insert(
77  'sys_registry',
78  [
79  'entry_namespace' => 'myExtension',
80  'entry_key' => 'myKey',
81  'entry_value' => serialize('myValue'),
82  ],
83  [
84  'entry_value' => ‪Connection::PARAM_LOB,
85  ]
86  );
87  (new ‪Registry())->set('myExtension', 'myKey', 'myNewValue');
88  $valueInDatabase = (new ‪ConnectionPool())->getConnectionForTable('sys_registry')
89  ->select(
90  ['entry_value'],
91  'sys_registry',
92  ['entry_namespace' => 'myExtension', 'entry_key' => 'myKey']
93  )
94  ->fetchAssociative();
95  self::assertSame('myNewValue', unserialize($valueInDatabase['entry_value']));
96  }
97 
98  #[Test]
100  {
101  $connection = (new ‪ConnectionPool())->getConnectionForTable('sys_registry');
102  $connection->bulkInsert(
103  'sys_registry',
104  [
105  ['ns1', 'k1', serialize('v1')],
106  ['ns1', 'k2', serialize('v2')],
107  ['ns2', 'k1', serialize('v1')],
108  ],
109  ['entry_namespace', 'entry_key', 'entry_value'],
110  [
111  'entry_value' => ‪Connection::PARAM_LOB,
112  ]
113  );
114 
115  (new ‪Registry())->remove('ns1', 'k1');
116 
117  self::assertSame(0, $connection->count('*', 'sys_registry', ['entry_namespace' => 'ns1', 'entry_key' => 'k1']));
118  self::assertSame(1, $connection->count('*', 'sys_registry', ['entry_namespace' => 'ns1', 'entry_key' => 'k2']));
119  self::assertSame(1, $connection->count('*', 'sys_registry', ['entry_namespace' => 'ns2', 'entry_key' => 'k1']));
120  }
121 
122  #[Test]
124  {
125  $connection = (new ‪ConnectionPool())->getConnectionForTable('sys_registry');
126  $connection->bulkInsert(
127  'sys_registry',
128  [
129  ['ns1', 'k1', serialize('v1')],
130  ['ns1', 'k2', serialize('v2')],
131  ['ns2', 'k1', serialize('v1')],
132  ],
133  ['entry_namespace', 'entry_key', 'entry_value'],
134  [
135  'entry_value' => ‪Connection::PARAM_LOB,
136  ]
137  );
138 
139  (new ‪Registry())->removeAllByNamespace('ns1');
140 
141  self::assertSame(0, $connection->count('*', 'sys_registry', ['entry_namespace' => 'ns1', 'entry_key' => 'k1']));
142  self::assertSame(0, $connection->count('*', 'sys_registry', ['entry_namespace' => 'ns1', 'entry_key' => 'k2']));
143  self::assertSame(1, $connection->count('*', 'sys_registry', ['entry_namespace' => 'ns2', 'entry_key' => 'k1']));
144  }
145 
146  #[Test]
147  public function ‪canGetSetEntry(): void
148  {
149  $registry = new ‪Registry();
150  $registry->set('ns1', 'key1', 'value1');
151  self::assertSame('value1', $registry->get('ns1', 'key1'));
152  }
153 
154  #[Test]
156  {
157  $registry = new ‪Registry();
158  $registry->set('ns1', 'key1', 'value1');
159  $registry->set('ns1', 'key1', 'value2');
160  self::assertSame('value2', $registry->get('ns1', 'key1'));
161  }
162 
163  #[Test]
164  public function ‪canNotGetRemovedEntry(): void
165  {
166  $registry = new ‪Registry();
167  $registry->set('ns1', 'key1', 'value1');
168  $registry->remove('ns1', 'key1');
169  self::assertNull($registry->get('ns1', 'key1'));
170  }
171 
172  #[Test]
174  {
175  $registry = new ‪Registry();
176  $registry->set('ns1', 'key1', 'value1');
177  $registry->removeAllByNamespace('ns1');
178  self::assertNull($registry->get('ns1', 'key1'));
179  }
180 }
‪TYPO3\CMS\Core\Tests\Functional\RegistryTest\setInsertsEntryInDatabase
‪setInsertsEntryInDatabase()
Definition: RegistryTest.php:59
‪TYPO3\CMS\Core\Tests\Functional\RegistryTest\canNotGetRemovedEntry
‪canNotGetRemovedEntry()
Definition: RegistryTest.php:164
‪TYPO3\CMS\Core\Tests\Functional\RegistryTest\getReturnsNewValueIfValueHasBeenSetMultipleTimes
‪getReturnsNewValueIfValueHasBeenSetMultipleTimes()
Definition: RegistryTest.php:155
‪TYPO3\CMS\Core\Registry
Definition: Registry.php:33
‪TYPO3\CMS\Core\Tests\Functional\RegistryTest\getReturnsEntryFromDatabase
‪getReturnsEntryFromDatabase()
Definition: RegistryTest.php:41
‪TYPO3\CMS\Core\Tests\Functional\RegistryTest
Definition: RegistryTest.php:27
‪TYPO3\CMS\Core\Tests\Functional\RegistryTest\canGetSetEntry
‪canGetSetEntry()
Definition: RegistryTest.php:147
‪TYPO3\CMS\Core\Tests\Functional
‪TYPO3\CMS\Core\Tests\Functional\RegistryTest\removeAllByNamespaceDeletesEntryInDatabaseAndLeavesOthers
‪removeAllByNamespaceDeletesEntryInDatabaseAndLeavesOthers()
Definition: RegistryTest.php:123
‪TYPO3\CMS\Core\Tests\Functional\RegistryTest\getReturnsDefaultValueIfEntryIsNotInDatabase
‪getReturnsDefaultValueIfEntryIsNotInDatabase()
Definition: RegistryTest.php:35
‪TYPO3\CMS\Core\Tests\Functional\RegistryTest\canNotGetRemovedAllByNamespaceEntry
‪canNotGetRemovedAllByNamespaceEntry()
Definition: RegistryTest.php:173
‪TYPO3\CMS\Core\Database\Connection
Definition: Connection.php:41
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\Core\Tests\Functional\RegistryTest\removeDeletesEntryInDatabaseButLeavesOthers
‪removeDeletesEntryInDatabaseButLeavesOthers()
Definition: RegistryTest.php:99
‪TYPO3\CMS\Core\Tests\Functional\RegistryTest\getReturnsNullIfEntryIsNotInDatabase
‪getReturnsNullIfEntryIsNotInDatabase()
Definition: RegistryTest.php:29
‪TYPO3\CMS\Core\Database\Connection\PARAM_LOB
‪const PARAM_LOB
Definition: Connection.php:62
‪TYPO3\CMS\Core\Tests\Functional\RegistryTest\setOverridesExistingEntryInDatabase
‪setOverridesExistingEntryInDatabase()
Definition: RegistryTest.php:73