修改提交
This commit is contained in:
+34
@@ -77,6 +77,34 @@ class InventoryCommandServiceTest {
|
||||
verify(operations).updateById(any(InventoryOperation.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void registersInTransitWithoutCreatingAPalletPosition() {
|
||||
when(balances.lockDimension("100", "WH-1", "ONT8", 101L, "IN-CODE-1", "SKU-1")).thenReturn(null);
|
||||
|
||||
InventoryCommandResponse result = service.registerInTransit("100", "SYSTEM", inTransit("transit-1", 12));
|
||||
|
||||
assertEquals(0, result.availablePackages());
|
||||
assertEquals(null, result.positionId());
|
||||
ArgumentCaptor<InventoryBalance> balance = ArgumentCaptor.forClass(InventoryBalance.class);
|
||||
verify(balances).updateById(balance.capture());
|
||||
assertEquals(12L, balance.getValue().getInTransitPackages());
|
||||
verify(positions, never()).insert(any(InventoryPosition.class));
|
||||
verify(ledgers).insert(any(InventoryLedger.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void stockInTransfersPackagesFromInTransitToAvailable() {
|
||||
InventoryBalance balance = balance(200L, 0);
|
||||
balance.setInTransitPackages(12L);
|
||||
when(balances.lockDimension("100", "WH-1", "ONT8", 101L, "IN-CODE-1", "SKU-1")).thenReturn(balance);
|
||||
|
||||
InventoryCommandResponse result = service.stockIn("100", "7", stockIn("IN-1", "stock-in-transit", 12, 24));
|
||||
|
||||
assertEquals(12, result.availablePackages());
|
||||
assertEquals(0L, balance.getInTransitPackages());
|
||||
assertEquals(12L, balance.getAvailablePackages());
|
||||
}
|
||||
|
||||
@Test
|
||||
void stockInAllowsPalletPositionWithZeroOptionalPackages() {
|
||||
when(balances.lockDimension("100", "WH-1", "ONT8", 101L, "IN-CODE-1", "SKU-1")).thenReturn(null);
|
||||
@@ -161,6 +189,12 @@ class InventoryCommandServiceTest {
|
||||
packages, "ORD-1", "EVT-1", key, null);
|
||||
}
|
||||
|
||||
private InventoryCommandRequests.InTransit inTransit(String key, long packages) {
|
||||
return new InventoryCommandRequests.InTransit("Customer 100", "WH-1", "WH1", "Warehouse 1",
|
||||
"DEST-1", "ONT8", "ONT8", 101L, "IN-1", "IN-CODE-1", "SKU-1", "Product 1", null,
|
||||
packages, "ORD-1", "EVT-1", key, null);
|
||||
}
|
||||
|
||||
private InventoryBalance balance(Long id, long available) {
|
||||
InventoryBalance value = new InventoryBalance();
|
||||
value.setId(id); value.setCustomerId("100"); value.setOverseasWarehouseId("WH-1");
|
||||
|
||||
+40
@@ -50,6 +50,25 @@ class InventoryQueryServiceTest {
|
||||
assertEquals(12, result.totalPackages());
|
||||
}
|
||||
|
||||
@Test
|
||||
void dashboardExcludesTransitAndProcurementFromOnHandAndDerivesAvailableFromHold() {
|
||||
InventoryQueryRequests.BalanceQuery query = balanceQuery(null);
|
||||
InventoryAggregateProjection aggregate = new InventoryAggregateProjection();
|
||||
aggregate.setAvailablePackages(8L);
|
||||
aggregate.setHoldPackages(2L);
|
||||
aggregate.setAllocatedPackages(3L);
|
||||
aggregate.setInTransitPackages(7L);
|
||||
aggregate.setProcurementPackages(5L);
|
||||
when(mapper.aggregate("100", query)).thenReturn(aggregate);
|
||||
|
||||
InventoryDashboardResponse result = service.dashboard("100", query);
|
||||
|
||||
assertEquals(13L, result.totalPackages());
|
||||
assertEquals(11L, result.availablePackages());
|
||||
assertEquals(7L, result.inTransitPackages());
|
||||
assertEquals(5L, result.procurementPackages());
|
||||
}
|
||||
|
||||
@Test
|
||||
void balancePageIsBoundToRequestedTenant() {
|
||||
InventoryQueryRequests.BalanceQuery query = balanceQuery(null);
|
||||
@@ -65,6 +84,27 @@ class InventoryQueryServiceTest {
|
||||
verify(mapper).balances("100", query, 0, 20);
|
||||
}
|
||||
|
||||
@Test
|
||||
void balanceViewUsesTheSameOnHandAndAvailableFormulaAsDashboard() {
|
||||
InventoryQueryRequests.BalanceQuery query = balanceQuery(null);
|
||||
InventoryBalance balance = new InventoryBalance();
|
||||
balance.setId(1L);
|
||||
balance.setCustomerId("100");
|
||||
balance.setAvailablePackages(8L);
|
||||
balance.setHoldPackages(2L);
|
||||
balance.setAllocatedPackages(3L);
|
||||
balance.setInTransitPackages(7L);
|
||||
balance.setProcurementPackages(5L);
|
||||
when(mapper.countBalances("100", query)).thenReturn(1L);
|
||||
when(mapper.balances("100", query, 0, 20)).thenReturn(List.of(balance));
|
||||
|
||||
var result = service.balances("100", query).records().get(0);
|
||||
|
||||
assertEquals(13L, result.totalPackages());
|
||||
assertEquals(11L, result.availablePackages());
|
||||
assertEquals(7L, result.inTransitPackages());
|
||||
}
|
||||
|
||||
@Test
|
||||
void platformBalancePagePassesNoCustomerFilter() {
|
||||
InventoryQueryRequests.BalanceQuery query = balanceQuery(null);
|
||||
|
||||
Reference in New Issue
Block a user