계획서 위임 항목(Q6·Q7·Q8) 마감. Q8: sitemaps.org 폐쇄 어휘를 App\Enums\SitemapChangeFreq 로 도입해 저장(SitemapIndexer)·렌더(SitemapXmlRenderer) 두 경계에서 normalize 하고, 생산 지점(생성기 정적 URL·3 contributor·4 리스너) 리터럴을 enum case 로 치환. 규격에 없는 changefreq 가 사이트맵에 그대로 출력되던 것을 차단(대소문자·공백 흡수). Q6: Upgrade_7_0_0_beta_3Test 의 "동결 TARGETS === 살아있는 config" 단언은 동결 규정과 충돌하는 무효 불변식(config 는 에서 정당하게 진화)이므로 의도적 divergence 를 검증하도록 재작성. Q7: 코어 20건 사전 실패를 격리 실측으로 재분류 — 6클러스터는 전 스위트 OOM/싱글톤 누수 오염(격리 시 통과), GenericNotificationViaTest 는 readiness 게이트를 mock 하지 않아 빈 settings 로 mail 이 항상 제외되던 stale test 를 정정.
58 lines
1.8 KiB
PHP
58 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\Enums;
|
|
|
|
use App\Enums\SitemapChangeFreq;
|
|
use Tests\TestCase;
|
|
|
|
/**
|
|
* SitemapChangeFreq Enum 테스트
|
|
*
|
|
* sitemaps.org 폐쇄 어휘(7값)와 normalize() 정규화/차단 동작을 검증합니다.
|
|
*/
|
|
class SitemapChangeFreqTest extends TestCase
|
|
{
|
|
/**
|
|
* sitemaps.org 의 7개 값이 모두 존재해야 한다.
|
|
*/
|
|
public function test_cases_cover_sitemaps_org_vocabulary(): void
|
|
{
|
|
$values = array_map(fn (SitemapChangeFreq $c) => $c->value, SitemapChangeFreq::cases());
|
|
|
|
$this->assertSame(
|
|
['always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly', 'never'],
|
|
$values
|
|
);
|
|
}
|
|
|
|
/**
|
|
* 유효한 값은 그대로 정규화된다.
|
|
*/
|
|
public function test_normalize_returns_valid_value(): void
|
|
{
|
|
$this->assertSame('daily', SitemapChangeFreq::normalize('daily'));
|
|
$this->assertSame('monthly', SitemapChangeFreq::normalize('monthly'));
|
|
}
|
|
|
|
/**
|
|
* 대소문자·앞뒤 공백은 흡수한다.
|
|
*/
|
|
public function test_normalize_absorbs_case_and_whitespace(): void
|
|
{
|
|
$this->assertSame('weekly', SitemapChangeFreq::normalize('WEEKLY'));
|
|
$this->assertSame('weekly', SitemapChangeFreq::normalize(' Weekly '));
|
|
}
|
|
|
|
/**
|
|
* 폐쇄 어휘에 없는 값·빈 값·null 은 null 로 떨어진다 (XML 유입 차단).
|
|
*/
|
|
public function test_normalize_rejects_invalid_and_empty(): void
|
|
{
|
|
$this->assertNull(SitemapChangeFreq::normalize('biweekly'));
|
|
$this->assertNull(SitemapChangeFreq::normalize('yes'));
|
|
$this->assertNull(SitemapChangeFreq::normalize(''));
|
|
$this->assertNull(SitemapChangeFreq::normalize(' '));
|
|
$this->assertNull(SitemapChangeFreq::normalize(null));
|
|
}
|
|
}
|