feat(ft546): add WCS operations console
This commit is contained in:
@@ -33,11 +33,29 @@ class WcsOperationsQueryServiceTest {
|
||||
new FakeReadRepository());
|
||||
|
||||
assertEquals("ALARM-1", queries.device("VEH-1").getActiveAlarmCode());
|
||||
assertEquals(77L, queries.resource("NODE:A").getFencingToken());
|
||||
ResourceOperationsView resource = queries.resource("NODE:A");
|
||||
assertEquals("NODE", resource.getResourceType());
|
||||
assertEquals(2, resource.getCapacity());
|
||||
assertEquals(1, resource.getProtectedCount());
|
||||
assertEquals("VEH-1", resource.getHolder());
|
||||
assertEquals(77L, resource.getFencingToken());
|
||||
assertEquals("TASK_NUMBER_MISMATCH",
|
||||
queries.recoveryCase("RC-1").getReason());
|
||||
}
|
||||
|
||||
@Test
|
||||
void representsAFreeResourceWithoutFabricatingReservationOwnership() {
|
||||
ResourceOperationsView resource = new ResourceOperationsView(
|
||||
"NODE:B", "NODE", 2, 0, null, "FREE", null, null,
|
||||
null, 0L, null, Instant.EPOCH);
|
||||
|
||||
assertEquals("FREE", resource.getReservationState());
|
||||
assertEquals(0, resource.getProtectedCount());
|
||||
assertEquals(null, resource.getHolder());
|
||||
assertEquals(null, resource.getOrderId());
|
||||
assertEquals(0L, resource.getFencingToken());
|
||||
}
|
||||
|
||||
@Test
|
||||
void pagesRecoveryCasesByExplicitStateWithABoundedLimit() {
|
||||
WcsOperationsQueryService queries = new WcsOperationsQueryService(
|
||||
@@ -54,6 +72,31 @@ class WcsOperationsQueryServiceTest {
|
||||
() -> queries.recoveryCases("OPEN", 0, 501));
|
||||
}
|
||||
|
||||
@Test
|
||||
void pagesOperationalViewsWithStableTotalsAndOrderIdentifiers() {
|
||||
WcsOperationsQueryService queries = new WcsOperationsQueryService(
|
||||
new FakeReadRepository());
|
||||
|
||||
OperationsPage<OrderExecutionView> orders = queries.orders(
|
||||
"EXECUTING", 0, 20);
|
||||
OperationsPage<DeviceOperationsView> devices = queries.devices(
|
||||
"UNKNOWN", 0, 20);
|
||||
OperationsPage<ResourceOperationsView> resources = queries.resources(
|
||||
"OCCUPIED", 0, 20);
|
||||
OperationsPage<RecoveryCaseView> recovery = queries.recoveryCasePage(
|
||||
"OPEN", 0, 20);
|
||||
|
||||
assertEquals(2L, orders.getTotal());
|
||||
assertEquals("TASK-1", orders.getRows().get(0)
|
||||
.getExternalRequestId());
|
||||
assertEquals("EXECUTING", orders.getRows().get(0).getOrderState());
|
||||
assertEquals(1L, devices.getTotal());
|
||||
assertEquals(1L, resources.getTotal());
|
||||
assertEquals(2L, recovery.getTotal());
|
||||
assertThrows(UnsupportedOperationException.class,
|
||||
() -> orders.getRows().add(orders.getRows().get(0)));
|
||||
}
|
||||
|
||||
@Test
|
||||
void missingOrBlankOperationsLookupFailsExplicitly() {
|
||||
WcsOperationsQueryService queries = new WcsOperationsQueryService(
|
||||
@@ -71,8 +114,9 @@ class WcsOperationsQueryServiceTest {
|
||||
if (!"ORDER-1".equals(orderId)) {
|
||||
return null;
|
||||
}
|
||||
return new OrderExecutionView("ORDER-1", "WF-1", "STEP-1",
|
||||
"VEH-1", "CMD-1", "UNKNOWN", "RC-1", Instant.EPOCH);
|
||||
return new OrderExecutionView("ORDER-1", "TASK-1", "EXECUTING",
|
||||
"WF-1", "STEP-1", "VEH-1", "CMD-1", "UNKNOWN",
|
||||
"RC-1", Instant.EPOCH);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -89,9 +133,9 @@ class WcsOperationsQueryServiceTest {
|
||||
|
||||
@Override
|
||||
public ResourceOperationsView findResource(String resourceKey) {
|
||||
return new ResourceOperationsView("NODE:A", "OCCUPIED",
|
||||
"ORDER-1", "STEP-1", "VEH-1", 77L, null,
|
||||
Instant.EPOCH);
|
||||
return new ResourceOperationsView("NODE:A", "NODE", 2, 1,
|
||||
"VEH-1", "OCCUPIED", "ORDER-1", "STEP-1",
|
||||
"VEH-1", 77L, null, Instant.EPOCH);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -106,6 +150,48 @@ class WcsOperationsQueryServiceTest {
|
||||
return Arrays.asList(recovery("RC-1"), recovery("RC-2"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OrderExecutionView> findOrders(String state, int offset,
|
||||
int limit) {
|
||||
return Arrays.asList(findOrder("ORDER-1"),
|
||||
new OrderExecutionView("ORDER-2", "TASK-2", "PLANNED",
|
||||
"WF-2", null, null, null, null, null,
|
||||
Instant.EPOCH));
|
||||
}
|
||||
|
||||
@Override
|
||||
public long countOrders(String state) {
|
||||
return 2L;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceOperationsView> findDevices(String state,
|
||||
int offset, int limit) {
|
||||
return Collections.singletonList(findDevice("VEH-1"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public long countDevices(String state) {
|
||||
return 1L;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ResourceOperationsView> findResources(String state,
|
||||
int offset,
|
||||
int limit) {
|
||||
return Collections.singletonList(findResource("NODE:A"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public long countResources(String state) {
|
||||
return 1L;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long countRecoveryCases(String state) {
|
||||
return 2L;
|
||||
}
|
||||
|
||||
private static RecoveryCaseView recovery(String caseId) {
|
||||
return new RecoveryCaseView(caseId, "VEH-1", "CMD-1", "OPEN",
|
||||
"TASK_NUMBER_MISMATCH", Instant.EPOCH, null, null);
|
||||
|
||||
Reference in New Issue
Block a user