CaiWuXiTong/tests/Unit/Console/StoreViolationsSyncExtraColumnsTest.php
苏木 8e93e71024 店铺违规预警:新增违规原因与处置方式两列(页面/统一表/导入导出)
- 页面在「违规分类」后新增「违规原因」「处置方式」,统一表头、导出、模板、导入同步支持
- 新迁移:统一表 store_violation_records 增加 violation_reason、disposition 两列
- 同步命令:上游视图补齐 violation_reason/disposition(或 reason/handling_method)后自动参与同步;未提供时不触碰这两列,导入补充的数据不会被每日同步清空
- 导入:违规原因/处置方式独立映射;仅提供违规原因时,违规分类按原因关键词自动归类
- 测试:StoreViolation*、NavigationTest 共 23 项通过(含新导入用例与列探测用例)
2026-10-13 11:31:52 +08:00

34 lines
1.1 KiB
PHP

<?php
namespace Tests\Unit\Console;
use App\Console\Commands\SyncStoreViolations;
use PHPUnit\Framework\TestCase;
/**
* 店铺违规同步:上游视图扩展列(违规原因/处置方式)的自动探测。
*/
class StoreViolationsSyncExtraColumnsTest extends TestCase
{
public function test_picks_no_columns_when_upstream_only_has_base_fields(): void
{
$this->assertSame([], SyncStoreViolations::pickExtraColumns([
'id', 'shop_name', 'violation_no', 'violation_date', 'deadline',
'violation_content', 'status', 'window_name', 'platform', 'crawl_date',
]));
}
public function test_picks_exact_and_alternative_column_names_case_insensitively(): void
{
$this->assertSame(
['violation_reason' => 'violation_reason', 'disposition' => 'disposition'],
SyncStoreViolations::pickExtraColumns(['id', 'violation_reason', 'disposition']),
);
$this->assertSame(
['violation_reason' => 'reason', 'disposition' => 'handling_method'],
SyncStoreViolations::pickExtraColumns(['Reason', 'HANDLING_METHOD']),
);
}
}