yanderong
2026-10-02 bca4733e4b0fcd9b6496e608304549a09f982463
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/TVinChargingOrderAuthorizeStopTest.java
@@ -125,15 +125,21 @@
    }
    @Test
    void shortAuthorizationUsesHalfOfDurationAsAheadWindow() {
        // 授权时长 90 秒 → 提前量 min(60, 45)=45 秒,剩余 30 秒时触发停充
    void shortAuthorizationUsesFixedSixtySecondsAheadWindow() {
        // 授权时长 90 秒 → 提前量 min(60, 90)=60 秒,剩余 30 秒时触发停充
        assertTrue(needStop(order(LocalDateTime.now().minusSeconds(60), LocalDateTime.now().plusSeconds(30), null)));
    }
    @Test
    void shortAuthorizationIsNotStoppedImmediately() {
        // 授权时长 100 秒 → 提前量 min(60, 50)=50 秒,剩余 55 秒时仍继续充电
        assertFalse(needStop(order(LocalDateTime.now().minusSeconds(45), LocalDateTime.now().plusSeconds(55), null)));
    void shortAuthorizationStopsImmediatelyWithinFixedAheadWindow() {
        // 授权时长 100 秒:固定 60 秒提前量,剩余 55 秒即触发停充(不再按授权时长的一半收缩)
        assertTrue(needStop(order(LocalDateTime.now().minusSeconds(45), LocalDateTime.now().plusSeconds(55), null)));
    }
    @Test
    void veryShortAuthorizationUsesWholeDurationAsAheadWindow() {
        // 授权总时长 30 秒不足提前量 → 按整个授权时长提前,剩余 20 秒即停充
        assertTrue(needStop(order(LocalDateTime.now().minusSeconds(10), LocalDateTime.now().plusSeconds(20), null)));
    }
    @Test