fix(warehouse-overseas): enforce pallet location invariant
This commit is contained in:
+13
-2
@@ -15,7 +15,7 @@ class WarehousePalletTransitionMapperContractTest {
|
||||
@Test
|
||||
void annotationSqlUsesNativeComparisonOperatorsInsteadOfXmlEntities() throws Exception {
|
||||
Method locationQuery = WarehousePalletTransitionMapper.class.getMethod(
|
||||
"countActiveLocation", long.class, long.class);
|
||||
"lockPublicLocation", long.class, long.class);
|
||||
String selectSql = String.join(" ", locationQuery.getAnnotation(Select.class).value());
|
||||
|
||||
Method transition = Arrays.stream(WarehousePalletTransitionMapper.class.getMethods())
|
||||
@@ -24,9 +24,20 @@ class WarehousePalletTransitionMapperContractTest {
|
||||
.orElseThrow();
|
||||
String updateSql = String.join(" ", transition.getAnnotation(Update.class).value());
|
||||
|
||||
assertTrue(selectSql.contains("status<>'INACTIVE'"));
|
||||
assertTrue(selectSql.contains("FOR UPDATE"));
|
||||
assertTrue(updateSql.contains("status<>'SCRAPPED'"));
|
||||
assertFalse(selectSql.contains("<") || selectSql.contains(">"));
|
||||
assertFalse(updateSql.contains("<") || updateSql.contains(">"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void normalResourceReleaseKeepsPalletBoundToTheNowIdleLocation() throws Exception {
|
||||
Method release = WarehouseResourceLockMapper.class.getMethod("releasePallet",
|
||||
long.class, long.class, long.class, long.class);
|
||||
String sql = String.join(" ", release.getAnnotation(Update.class).value());
|
||||
|
||||
assertTrue(sql.contains("SET status = 'IDLE'"));
|
||||
assertFalse(sql.contains("location_id = NULL"));
|
||||
assertTrue(sql.contains("location_id = #{locationId}"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user