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