CliAppBootstrap and ModuleCliRuntime still required from the old lib/ path, which would break all CLI commands. Also fixes stale lib/ references in docs, test assertion messages, and a PHPDoc comment. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
77 lines
2.7 KiB
PHP
77 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace MintyPHP\Tests\Architecture;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
final class AddressBookModuleIsolationContractTest extends TestCase
|
|
{
|
|
use ModuleExtractionContractSupport;
|
|
|
|
public function testSearchInfrastructureHasNoAddressBookHardcoding(): void
|
|
{
|
|
$searchDir = dirname(__DIR__, 2) . '/core/Support/Search';
|
|
$hits = $this->grepDir($searchDir, '/address.book/i', ['*.php']);
|
|
|
|
self::assertSame([], $hits, sprintf(
|
|
"Search infrastructure still contains address-book hardcodings:\n%s",
|
|
implode("\n", $hits)
|
|
));
|
|
}
|
|
|
|
public function testSearchConfigHasNoAddressBookHardcoding(): void
|
|
{
|
|
$file = dirname(__DIR__, 2) . '/core/Support/SearchConfig.php';
|
|
$content = file_get_contents($file);
|
|
self::assertIsString($content);
|
|
|
|
self::assertStringNotContainsString('address-book', $content);
|
|
self::assertStringNotContainsString('address_book', $content);
|
|
self::assertStringNotContainsString('addressBook', $content);
|
|
}
|
|
|
|
public function testLayoutContextHasNoHardcodedAddressBookBlock(): void
|
|
{
|
|
$file = dirname(__DIR__, 2) . '/core/Support/helpers/app.php';
|
|
$content = file_get_contents($file);
|
|
self::assertIsString($content);
|
|
|
|
self::assertDoesNotMatchRegularExpression(
|
|
"/'\s*addressBook\s*'\s*=>\s*\[/",
|
|
$content,
|
|
'appBuildLayoutNavContext() still has hardcoded addressBook array block'
|
|
);
|
|
}
|
|
|
|
public function testAsideTemplatesHaveNoHardcodedPeopleUi(): void
|
|
{
|
|
$this->assertFilesDoNotContain(
|
|
[
|
|
dirname(__DIR__, 2) . '/templates/partials/app-main-aside-icon-bar.phtml',
|
|
dirname(__DIR__, 2) . '/templates/partials/app-main-aside.phtml',
|
|
],
|
|
[
|
|
'aside-tab-people',
|
|
'$canViewAddressBook',
|
|
'$addressBookUrl',
|
|
'id="aside-panel-people"',
|
|
'data-search-key="address-book"',
|
|
]
|
|
);
|
|
|
|
$aside = file_get_contents(dirname(__DIR__, 2) . '/templates/partials/app-main-aside.phtml');
|
|
self::assertIsString($aside);
|
|
self::assertDoesNotMatchRegularExpression('/^\$canViewAddressBook\s*=/m', $aside);
|
|
self::assertDoesNotMatchRegularExpression('/^\$peopleGroups\s*=/m', $aside);
|
|
}
|
|
|
|
public function testCoreNoLongerContainsAddressBookServiceDirectory(): void
|
|
{
|
|
$coreServiceDir = dirname(__DIR__, 2) . '/core/Service/AddressBook';
|
|
self::assertDirectoryDoesNotExist(
|
|
$coreServiceDir,
|
|
'Addressbook service classes should live in modules/addressbook/lib, not in core/Service'
|
|
);
|
|
}
|
|
}
|