<?php
namespace tests\UpgradeRegression;

use app\p\logic\Restaurant;
use PHPUnit\Framework\TestCase;

require_once __DIR__ . '/../Restaurant/RestaurantMealTimeEditLogicTest.php';

/** Upgrade diagnosis: records below are synthetic legacy formats, not customer DB evidence. */
class LegacyRestaurantCompatibilityTest extends TestCase
{
    public function testSecondPrecisionLegacyRecordBlocksNameOnlyEdit(): void
    {
        $record = [
            'id' => 9, 'name' => '测试档口', 'restaurant_shop_id' => 3,
            'morning_start' => '00:00:00', 'morning_end' => '10:00:59',
            'noon_start' => '10:01:00', 'noon_end' => '16:00:59',
            'night_start' => '16:01:00', 'night_end' => '19:30:59',
            'night_snack_start' => '19:31:00', 'night_snack_end' => '23:59:59',
        ];
        $this->assertRejectedBeforeWrite($record, '请完整设置有效的早餐时间');
    }

    public function testLegacyThreeMealRecordBlocksNameOnlyEdit(): void
    {
        $record = [
            'id' => 9, 'name' => '测试档口', 'restaurant_shop_id' => 3,
            'morning_start' => '00:00', 'morning_end' => '10:00',
            'noon_start' => '10:01', 'noon_end' => '16:00',
            'night_start' => '16:01', 'night_end' => '23:59',
        ];
        $this->assertRejectedBeforeWrite($record, '请完整设置有效的夜宵时间');
    }

    private function assertRejectedBeforeWrite(array $record, string $message): void
    {
        $model = new \tests\Restaurant\RestaurantMealTimeFakeModel($record);
        $reflection = new \ReflectionClass(Restaurant::class);
        $logic = $reflection->newInstanceWithoutConstructor();
        $property = $reflection->getProperty('RestaurantsModel');
        $property->setAccessible(true);
        $property->setValue($logic, $model);
        $result = $logic->restaurant_edit([
            'id' => 9, 'name' => '仅改名', 'status' => 1, 'stall_type' => 1,
        ], ['name' => 'isolated-test']);
        $this->assertSame(1, $result['code']);
        $this->assertSame($message, $result['message']);
        $this->assertNull($model->modifiedData);
    }
}
