Files
Gnuboard7/tests/Unit/Enums/SitemapChangeFreqTest.php
HeuJung 8fda5d31e1 feat(seo): changefreq Enum 도입 + 사이트맵 사전결함 테스트 정정
계획서 위임 항목(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 를 정정.
2026-07-19 20:13:05 +09:00

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));
}
}