Files
HeuJung 4e1ec6e001 fix(core,admin_basic,board,ecommerce,page,gdpr,verification): 설정 미러·자동 정리·탈퇴 원자성·일괄 선택 범위 정비
공개이슈 ··· 및 그 전수 해소분.

- 설정 저장·복원·초기화가 상주 프로세스 미러를 갱신하도록 단일 소유자화
- 만료 데이터 자동 정리 예약 12종 신설, 파기는 기본키 배치로 분할
- 회원 탈퇴를 전 경로 원자화하고 관리자 상태변경 경로를 정식 탈퇴로 통일
- 일괄 처리 목록의 선택을 화면에 보이는 행으로 한정(selectionScope)
- 비밀번호 정책 문구를 도메인 중립 라벨로 정정
- 정적 검사 2종·검증 스킬 설계 정합성 축 신설
2026-08-14 11:06:25 +09:00

57 lines
1.9 KiB
PHP

<?php
namespace Modules\Sirsoft\Ecommerce\Tests\Feature\Services;
use Modules\Sirsoft\Ecommerce\Services\EcommerceSettingsService;
use Modules\Sirsoft\Ecommerce\Tests\ModuleTestCase;
/**
* 이커머스 설정 미러 재채움 테스트 (공개이슈 #109, A3)
*
* 모듈 설정 저장에는 코어 공통 지점이 없어 각 모듈 서비스가 직접 저장한다.
* 그 지점에서 미러를 갱신하지 않으면 상주 프로세스(큐 워커 등)가 옛 값을 계속 읽는다.
*
* @scenario scope=module, trigger=save, trigger=cache_clear
*
* @effects module_mirror_refreshed_after_save, module_mirror_refreshed_after_cache_clear
*/
class EcommerceSettingsMirrorTest extends ModuleTestCase
{
/**
* 설정 저장 후 같은 프로세스의 미러가 신값을 읽는다.
*/
public function test_module_settings_mirror_is_refreshed_after_save(): void
{
$service = app(EcommerceSettingsService::class);
$basic = $service->getSettings('basic_info');
$newName = '미러 확인 상점 '.uniqid();
$service->saveSettings(['basic_info' => array_merge($basic, ['shop_name' => $newName])]);
$this->assertSame(
$newName,
g7_module_settings('sirsoft-ecommerce', 'basic_info.shop_name'),
'저장 후에도 미러가 옛 값을 유지합니다'
);
}
/**
* 캐시 초기화도 미러를 함께 갱신한다.
*/
public function test_clear_cache_also_refreshes_mirror(): void
{
$service = app(EcommerceSettingsService::class);
config(['g7_settings.modules.sirsoft-ecommerce' => null]);
$service->clearCache();
$this->assertIsArray(
g7_module_settings('sirsoft-ecommerce'),
'캐시 초기화 후 미러가 다시 채워지지 않았습니다'
);
$this->assertNotEmpty(g7_module_settings('sirsoft-ecommerce'));
}
}