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()); } }