- 页面在「违规分类」后新增「违规原因」「处置方式」,统一表头、导出、模板、导入同步支持 - 新迁移:统一表 store_violation_records 增加 violation_reason、disposition 两列 - 同步命令:上游视图补齐 violation_reason/disposition(或 reason/handling_method)后自动参与同步;未提供时不触碰这两列,导入补充的数据不会被每日同步清空 - 导入:违规原因/处置方式独立映射;仅提供违规原因时,违规分类按原因关键词自动归类 - 测试:StoreViolation*、NavigationTest 共 23 项通过(含新导入用例与列探测用例)
34 lines
1.1 KiB
PHP
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']),
|
|
);
|
|
}
|
|
}
|