Skip to content

Commit 3773743

Browse files
committed
Inject Modules into constructor
1 parent 8b44a23 commit 3773743

File tree

2 files changed

+20
-20
lines changed

2 files changed

+20
-20
lines changed

system/Config/BaseConfig.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,9 @@ public static function __set_state(array $array)
8080
*
8181
* The "shortPrefix" is the lowercase-only config class name.
8282
*/
83-
public function __construct()
83+
public function __construct(?Modules $modules = null)
8484
{
85-
static::$moduleConfig = new Modules();
85+
static::$moduleConfig = $modules ?? new Modules();
8686

8787
if (! static::$override) {
8888
return;

tests/system/Config/BaseConfigTest.php

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@
1111

1212
namespace CodeIgniter\Config;
1313

14+
use CodeIgniter\Autoloader\FileLocator;
1415
use CodeIgniter\Test\CIUnitTestCase;
16+
use Config\Modules;
1517
use Encryption;
18+
use PHPUnit\Framework\MockObject\MockObject;
1619
use RegistrarConfig;
1720
use RuntimeException;
1821
use SimpleConfig;
@@ -45,6 +48,8 @@ protected function setUp(): void
4548
if (! class_exists('Encryption', false)) {
4649
require $this->fixturesFolder . '/Encryption.php';
4750
}
51+
52+
BaseConfig::$registrars = [];
4853
}
4954

5055
public function testBasicValues(): void
@@ -265,32 +270,27 @@ public function testBadRegistrar(): void
265270
$this->assertSame('bar', $config->foo);
266271
}
267272

268-
public function testNotEnabled(): void
273+
public function testDiscoveryNotEnabledWillNotPopulateRegistrarsArray(): void
269274
{
270-
$modulesConfig = config('Modules');
271-
$modulesConfig->enabled = false;
272-
273-
$config = new RegistrarConfig();
274-
$config::$registrars = [];
275-
$expected = $config::$registrars;
275+
/** @var MockObject&Modules $modules */
276+
$modules = $this->createMock(Modules::class);
277+
$modules->method('shouldDiscover')->with('registrars')->willReturn(false);
276278

277-
$method = $this->getPrivateMethodInvoker($config, 'registerProperties');
278-
$method();
279+
$config = new RegistrarConfig($modules);
279280

280-
$this->assertSame($expected, $config::$registrars);
281+
$this->assertSame([], $config::$registrars);
281282
}
282283

283-
public function testDidDiscovery(): void
284+
public function testRedoingDiscoveryWillStillSetDidDiscoveryPropertyToTrue(): void
284285
{
285-
$modulesConfig = config('Modules');
286-
$modulesConfig->enabled = true;
286+
/** @var FileLocator&MockObject $locator */
287+
$locator = $this->createMock(FileLocator::class);
288+
$locator->method('search')->with('Config/Registrar.php')->willReturn([]);
289+
Services::injectMock('locator', $locator);
287290

288-
$config = new RegistrarConfig();
289-
$config::$registrars = [];
291+
$config = new RegistrarConfig();
290292
$this->setPrivateProperty($config, 'didDiscovery', false);
291-
292-
$method = $this->getPrivateMethodInvoker($config, 'registerProperties');
293-
$method();
293+
($this->getPrivateMethodInvoker($config, 'registerProperties'))();
294294

295295
$this->assertTrue($this->getPrivateProperty($config, 'didDiscovery'));
296296
}

0 commit comments

Comments
 (0)