package jnpf.dmsDatabase; import com.baomidou.mybatisplus.core.MybatisConfiguration; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.type.TypeHandler; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.config.BeanPostProcessor; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Types; import java.util.UUID; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertInstanceOf; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; class DmsUuidTypeHandlerTest { private final DmsUuidTypeHandler handler = new DmsUuidTypeHandler(); @Test void bindsUuidAsPostgresqlOtherType() throws Exception { PreparedStatement statement = mock(PreparedStatement.class); UUID value = UUID.randomUUID(); handler.setNonNullParameter(statement, 2, value, null); verify(statement).setObject(2, value, Types.OTHER); } @Test void readsNativeAndTextUuidValues() throws Exception { ResultSet resultSet = mock(ResultSet.class); UUID value = UUID.randomUUID(); when(resultSet.getObject("native_id")).thenReturn(value); when(resultSet.getObject("text_id")).thenReturn(value.toString()); assertEquals(value, handler.getNullableResult(resultSet, "native_id")); assertEquals(value, handler.getNullableResult(resultSet, "text_id")); } @Test void registersHandlerForGeneratedBaseMapperStatements() { MybatisConfiguration configuration = new MybatisConfiguration(); SqlSessionFactory sessionFactory = mock(SqlSessionFactory.class); when(sessionFactory.getConfiguration()).thenReturn(configuration); BeanPostProcessor registrar = DmsMybatisConfig.dmsMybatisConfigurationRegistrar(); registrar.postProcessAfterInitialization(sessionFactory, "sqlSessionFactoryOne"); TypeHandler registered = configuration.getTypeHandlerRegistry().getTypeHandler(UUID.class); assertInstanceOf(DmsUuidTypeHandler.class, registered); assertTrue(configuration.isMapUnderscoreToCamelCase()); } }