package com.baiyue.warehouse.mapper; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import org.junit.jupiter.api.Test; import java.lang.reflect.Method; import java.util.Arrays; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; class WarehousePalletTransitionMapperContractTest { @Test void annotationSqlUsesNativeComparisonOperatorsInsteadOfXmlEntities() throws Exception { Method locationQuery = WarehousePalletTransitionMapper.class.getMethod( "countActiveLocation", long.class, long.class); String selectSql = String.join(" ", locationQuery.getAnnotation(Select.class).value()); Method transition = Arrays.stream(WarehousePalletTransitionMapper.class.getMethods()) .filter(method -> method.getName().equals("transition")) .findFirst() .orElseThrow(); String updateSql = String.join(" ", transition.getAnnotation(Update.class).value()); assertTrue(selectSql.contains("status<>'INACTIVE'")); assertTrue(updateSql.contains("status<>'SCRAPPED'")); assertFalse(selectSql.contains("<") || selectSql.contains(">")); assertFalse(updateSql.contains("<") || updateSql.contains(">")); } }