28 lines
1.8 KiB
Java
28 lines
1.8 KiB
Java
package com.baiyue.lastleg.calendar;
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
import org.springframework.web.server.ResponseStatusException;
|
|
import java.time.LocalDate;
|
|
import java.util.List;
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
import static org.mockito.Mockito.*;
|
|
|
|
class WarehouseCalendarServiceTest {
|
|
/** 读取资格不代替写权限,已有入库计划仍冻结时间。 */
|
|
@Test void keepsReadAccessSeparateFromWriteAndFreezesExistingPlans() {
|
|
var repository=mock(WarehouseCalendarRepository.class);
|
|
var arrivals=mock(com.baiyue.lastleg.service.ContainerWarehouseArrivalService.class);
|
|
var service=new WarehouseCalendarService(repository,arrivals);
|
|
var query=new WarehouseCalendarModels.Query(LocalDate.of(2026,11,1),LocalDate.of(2026,12,1),List.of("1"));
|
|
var open=new WarehouseCalendarModels.Entry("1","D0001","CONT","Warehouse","W",null,null,0,0,false,null,false);
|
|
var frozen=new WarehouseCalendarModels.Entry("2","D0002","CONT2","Warehouse","W",null,null,1,1,false,null,false);
|
|
when(arrivals.resolve(List.of("1","2"))).thenReturn(List.of(
|
|
new com.baiyue.lastleg.dto.ContainerArrivalTimeView("1",null,null,0,0,LocalDate.of(2026,11,2),true),
|
|
new com.baiyue.lastleg.dto.ContainerArrivalTimeView("2",null,null,1,1,LocalDate.of(2026,11,3),false)));
|
|
when(repository.calendar(query)).thenReturn(List.of(open,frozen));
|
|
assertTrue(service.calendar(query,true).get(0).canEdit()); assertFalse(service.calendar(query,true).get(1).canEdit());
|
|
assertTrue(service.calendar(query,false).stream().noneMatch(WarehouseCalendarModels.Entry::canEdit));
|
|
assertThrows(ResponseStatusException.class,()->service.calendar(new WarehouseCalendarModels.Query(query.from(),query.to(),List.of("1","1")),true));
|
|
}
|
|
}
|