39 lines
1.5 KiB
Java
39 lines
1.5 KiB
Java
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());
|
||
|
|
}
|
||
|
|
}
|