package com.freetmp.maven.mbg.extend.plugin;
import com.freetmp.mbg.plugin.page.MySqlPaginationPlugin;
import com.freetmp.mbg.plugin.page.PostgreSQLPaginationPlugin;
import org.apache.commons.lang3.reflect.FieldUtils;
import org.junit.Test;
import static org.junit.Assert.*;
import org.mybatis.generator.config.Context;
import org.mybatis.generator.config.JDBCConnectionConfiguration;
import org.mybatis.generator.config.PluginConfiguration;
import java.lang.reflect.Field;
import java.util.List;
/**
* Created by LiuPin on 2015/2/3.
*/
public class XmbgMojoUnitTest {
@SuppressWarnings("unchecked")
protected boolean checkPlugin(Class<?> clazz, Context context){
Field field = FieldUtils.getDeclaredField(Context.class,"pluginConfigurations",true);
try {
List<PluginConfiguration> pluginConfigurations = (List<PluginConfiguration>) field.get(context);
for(PluginConfiguration pluginConfiguration : pluginConfigurations){
if(pluginConfiguration.getConfigurationType().equals(clazz.getTypeName())){
return true;
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return false;
}
@Test
public void testChoosePagination(){
Context context = new Context(null);
//测试PostgreSQL
JDBCConnectionConfiguration jdbcConnectionConfiguration = new JDBCConnectionConfiguration();
jdbcConnectionConfiguration.setConnectionURL("jdbc:postgresql://10.1.8.61:5432/DataManageSystem");
context.setJdbcConnectionConfiguration(jdbcConnectionConfiguration);
MyBatisGeneratorMojo mbgm = new MyBatisGeneratorMojo();
mbgm.choosePaginationPlugin(context);
assertTrue(checkPlugin(PostgreSQLPaginationPlugin.class,context));
//测试MySql
jdbcConnectionConfiguration.setConnectionURL("jdbc:mysql://localhost/web-monitor?useUnicode=true&characterEncoding=utf-8");
context.setJdbcConnectionConfiguration(jdbcConnectionConfiguration);
mbgm.choosePaginationPlugin(context);
assertTrue(checkPlugin(MySqlPaginationPlugin.class,context));
}
}