fix(core,board,page,ecommerce,basic,pay): FULLTEXT 게이트·검색 실패 표면화와 페이지네이션/접두사 결함 정비
- 공개 : MATCH 는 커버 인덱스가 있을 때만 조립 — 부재 시 LIKE 폴백 + 1회 경고, 카테고리 검색 예외를 categories_failed/search_failed 로 표면화하고 basic 템플릿이 오류 안내 렌더 - 공개 동근원: paginate page 명시 전달 (언어팩 check-updates, 상품 문의 목록) - 공개 동근원: raw SQL 접두사/별칭 하드코딩 정리 (board 시더, 7.0.6 업그레이드 스텝, 결제 3플러그인 컨트롤러 51지점 모델 파생 전환) - audit 룰 3종 신설 + repository-raw-hardcoded-table 컨트롤러 확대, 확장 TestCase 오토로더 중복 선언 가드 16지점, ja 언어팩 동기
This commit is contained in:
1 parent
3ccfb24417
commit
7f457a05b3
77 files changed
+2578
-526
No files matched your search
@@ -3,6 +3,7 @@
|
||||
namespace Modules\Gnuboard7\HelloModule\Tests;
|
||||
|
||||
use App\Enums\ExtensionStatus;
|
||||
use App\Extension\HookManager;
|
||||
use App\Models\Module;
|
||||
use App\Models\Permission;
|
||||
use App\Models\Role;
|
||||
@@ -10,6 +11,7 @@ use App\Models\User;
|
||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Modules\Gnuboard7\HelloModule\Providers\HelloModuleServiceProvider;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
@@ -52,7 +54,7 @@ abstract class ModuleTestCase extends TestCase
|
||||
|
||||
$this->registerModuleAutoload();
|
||||
|
||||
$this->app->register(\Modules\Gnuboard7\HelloModule\Providers\HelloModuleServiceProvider::class);
|
||||
$this->app->register(HelloModuleServiceProvider::class);
|
||||
|
||||
$this->runModuleMigrationIfNeeded();
|
||||
|
||||
@@ -80,7 +82,7 @@ abstract class ModuleTestCase extends TestCase
|
||||
*/
|
||||
private function snapshotHookManager(): void
|
||||
{
|
||||
$ref = new \ReflectionClass(\App\Extension\HookManager::class);
|
||||
$ref = new \ReflectionClass(HookManager::class);
|
||||
$this->hookSnapshot = [
|
||||
'hooks' => $ref->getProperty('hooks')->getValue(),
|
||||
'filters' => $ref->getProperty('filters')->getValue(),
|
||||
@@ -97,7 +99,7 @@ abstract class ModuleTestCase extends TestCase
|
||||
return;
|
||||
}
|
||||
|
||||
$ref = new \ReflectionClass(\App\Extension\HookManager::class);
|
||||
$ref = new \ReflectionClass(HookManager::class);
|
||||
$ref->getProperty('hooks')->setValue(null, $this->hookSnapshot['hooks']);
|
||||
$ref->getProperty('filters')->setValue(null, $this->hookSnapshot['filters']);
|
||||
$ref->getProperty('dispatching')->setValue(null, $this->hookSnapshot['dispatching']);
|
||||
@@ -153,8 +155,12 @@ abstract class ModuleTestCase extends TestCase
|
||||
$file = $moduleBasePath.'/src/'.str_replace('\\', '/', $relativeClass).'.php';
|
||||
}
|
||||
|
||||
if (file_exists($file)) {
|
||||
require $file;
|
||||
if (file_exists($file)
|
||||
&& ! class_exists($class, false) && ! interface_exists($class, false)
|
||||
&& ! trait_exists($class, false) && ! enum_exists($class, false)) {
|
||||
// 활성 디렉토리 사본이 이미 로드된 심볼을 다시 선언하면 fatal 이 된다 —
|
||||
// 선언 여부를 자체 확인하고 require_once 로 이중 방어한다
|
||||
require_once $file;
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -221,12 +227,12 @@ abstract class ModuleTestCase extends TestCase
|
||||
'version' => '0.1.0-beta.1',
|
||||
]);
|
||||
|
||||
$hookManager = app(\App\Extension\HookManager::class);
|
||||
$hookManager = app(HookManager::class);
|
||||
foreach ($module->getHookListeners() as $listenerClass) {
|
||||
foreach ($listenerClass::getSubscribedHooks() as $hookName => $config) {
|
||||
$method = is_array($config) ? ($config['method'] ?? 'handle') : 'handle';
|
||||
$priority = is_array($config) ? ($config['priority'] ?? 10) : 10;
|
||||
$hookManager->addAction($hookName, [new $listenerClass(), $method], $priority);
|
||||
$hookManager->addAction($hookName, [new $listenerClass, $method], $priority);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user