Files
baiyue-firstleg/lastleg-service/src/test/java/com/baiyue/lastleg/dispatch/DispatchPalletLockPersistenceContractTest.java
T

39 lines
1.5 KiB
Java
Raw Normal View History

2026-08-21 17:21:26 +08:00
package com.baiyue.lastleg.dispatch;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baiyue.lastleg.dispatch.entity.DispatchPalletLock;
import com.baiyue.lastleg.dispatch.mapper.DispatchPalletLockMapper;
import org.apache.ibatis.annotations.Update;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
class DispatchPalletLockPersistenceContractTest {
@Test
void nullableLockFieldsAreWrittenAsNullOnReleaseAndFinalization() throws Exception {
assertAlwaysUpdated("activeKey");
assertAlwaysUpdated("draftToken");
assertAlwaysUpdated("expiresAt");
}
@Test
void relockClearsInactiveUniqueKeyResidue() throws Exception {
Update update = DispatchPalletLockMapper.class
.getMethod("clearInactiveActiveKey", String.class, String.class)
.getAnnotation(Update.class);
String sql = String.join(" ", Arrays.asList(update.value()));
assertTrue(sql.contains("active_key=NULL"));
assertTrue(sql.contains("status!='ACTIVE'"));
}
private void assertAlwaysUpdated(String fieldName) throws Exception {
TableField field = DispatchPalletLock.class.getDeclaredField(fieldName).getAnnotation(TableField.class);
assertEquals(FieldStrategy.ALWAYS, field.updateStrategy());
}
}