package org.easyframe.tutorial.lesson5_a;
import java.sql.SQLException;
import java.util.Arrays;
import jef.database.DbClient;
import jef.database.DbClientBuilder;
import jef.database.QB;
import jef.database.meta.MetaHolder;
import jef.database.meta.TupleMetadata;
import org.easyframe.tutorial.lesson5_a.entity.Role;
import org.easyframe.tutorial.lesson5_a.entity.User;
import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;
/**
* 关于新增特性,三表关联(多对多)中间表自动实现
* @author jiyi
*
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class ManyToManyTest extends org.junit.Assert {
private static DbClient db;
@BeforeClass
public static void setup() throws SQLException {
db = new DbClientBuilder().setEnhancePackages("org.easyframe.tutorial.lesson5_a").build();
db.dropTable(User.class,Role.class);
db.createTable(User.class, Role.class);
}
@Test
public void empty() throws SQLException {
}
@Test
public void test1() throws SQLException {
User user = new User();
user.setName("admin");
Role role = new Role();
role.setName("一般用户");
user.setRoles(Arrays.asList(role));
db.insertCascade(user);
int userId=user.getId();
int roleId=role.getId();
System.out.println("=========================================111");
User u = db.load(User.class, userId);
System.out.println("=========================================222");
Role r = db.load(Role.class, roleId);
{
//检查
assertNotNull(u);
assertNotNull(r);
assertEquals(1,u.getRoles().size());
System.out.println("====1");
System.out.println(u.getRoleNames());
System.out.println("====xxx");
System.out.println(u.getRoles().get(0).getUsers());
}
Role role2=new Role();
role2.setName("超级用户");
u.getRoles().add(role2);
db.updateCascade(u);
{
//检查2
assertEquals(2, db.count(QB.create(Role.class)));
TupleMetadata meta=MetaHolder.getDynamicMeta("user_roles");
assertEquals(2, db.count(QB.create(meta)));
u = db.load(User.class, userId);
assertEquals(2, u.getRoles().size());
System.out.println("====2");
System.out.println(u.getRoleNames());
}
//脏数据测试
{
db.delete(Role.class, role.getId());
u = db.load(User.class, userId);
assertEquals(1, u.getRoles().size());
System.out.println(u.getRoleNames());
}
//删除测试
u=new User();
u.setId(userId);
db.deleteCascade(u);
{
assertEquals(1, db.count(QB.create(Role.class)));
assertEquals(0, db.count(QB.create(User.class)));
TupleMetadata meta=MetaHolder.getDynamicMeta("user_roles");
assertEquals(0, db.count(QB.create(meta)));
}
}
}