#919 - io.ebean package initial

This commit is contained in:
Rob Bygrave
2016-12-11 23:23:22 +13:00
parent 5821dc96b9
commit 971e2dc91b
2134 changed files with 10721 additions and 8652 deletions
@@ -0,0 +1,46 @@
package org.tests.m2m;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.SqlQuery;
import io.ebean.SqlRow;
import org.tests.model.m2m.MnyA;
import org.tests.model.m2m.MnyB;
import org.tests.model.m2m.MnyC;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class TestM2MDeleteCascadeFromParent extends BaseTestCase {
@Test
public void test() {
MnyC c0 = new MnyC();
c0.setName("c0");
c0.save();
MnyA a0 = new MnyA();
a0.setName("a0");
a0.save();
MnyB b0 = new MnyB();
b0.setName("b0");
b0.setA(a0);
b0.save();
c0.getBs().add(b0);
Ebean.save(c0);
SqlQuery sqlQuery = Ebean.createSqlQuery("select count(*) as count from mny_b_mny_c");
SqlRow unique = sqlQuery.findUnique();
assertEquals(Long.valueOf(1), unique.getLong("count"));
//Ebean.deleteManyToManyAssociations(b0, "cs");
a0.delete();
}
}
@@ -0,0 +1,49 @@
package org.tests.m2m;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import org.tests.model.basic.MnocRole;
import org.tests.model.basic.MnocUser;
import org.junit.Assert;
import org.junit.Test;
import javax.persistence.PersistenceException;
import java.util.List;
public class TestM2MDeleteNoCascade extends BaseTestCase {
@Test
public void test() {
MnocRole r0 = new MnocRole("r0");
MnocRole r1 = new MnocRole("r0");
Ebean.save(r0);
Ebean.save(r1);
MnocUser u0 = new MnocUser("usr0");
u0.addValidRole(r0);
u0.addValidRole(r1);
Ebean.save(u0);
MnocUser loadedUser = Ebean.find(MnocUser.class, u0.getUserId());
List<MnocRole> validRoles = loadedUser.getValidRoles();
Assert.assertEquals(2, validRoles.size());
try {
Ebean.delete(u0);
Assert.assertTrue("expecting an exception", false);
} catch (PersistenceException e) {
// we expect this
Assert.assertTrue(true);
}
u0.getValidRoles().clear();
Ebean.save(u0);
Ebean.delete(u0);
}
}
@@ -0,0 +1,63 @@
package org.tests.m2m;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import org.tests.model.m2m.Permission;
import org.tests.model.m2m.Role;
import org.tests.model.m2m.Tenant;
import org.junit.Assert;
import org.junit.Test;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class TestM2MDeleteObjectWithCascadeToM2m extends BaseTestCase {
@Test
public void test() {
Ebean.createUpdate(Permission.class, "delete from Permission").execute();
Ebean.createUpdate(Tenant.class, "delete from Tenant").execute();
Ebean.createUpdate(Role.class, "delete from Role").execute();
Tenant tenant1 = new Tenant("Tenant");
Ebean.save(tenant1);
Permission p1 = new Permission("p1");
Permission p2 = new Permission("p2");
Ebean.save(p1);
Ebean.save(p2);
Role role1 = new Role("RoleOne");
role1.setTenant(tenant1);
Set<Permission> permissions = new HashSet<>();
List<Permission> permsList = Ebean.find(Permission.class).findList();
permissions.addAll(permsList);
role1.setPermissions(permissions);
Ebean.save(role1);
List<Tenant> tenantList = Ebean.find(Tenant.class).fetch("roles").findList();
List<Role> roleList = Ebean.find(Role.class).fetch("permissions").findList();
List<Permission> permissionList = Ebean.find(Permission.class).fetch("roles").findList();
Assert.assertEquals(1, tenantList.size());
Assert.assertEquals(2, permissionList.size());
Assert.assertEquals(1, roleList.size());
Ebean.delete(tenant1);
List<Tenant> tenantList2 = Ebean.find(Tenant.class).fetch("roles").findList();
List<Role> roleList2 = Ebean.find(Role.class).fetch("permissions").findList();
List<Permission> permissionList2 = Ebean.find(Permission.class).fetch("roles").findList();
Assert.assertEquals(0, tenantList2.size());
Assert.assertEquals(0, roleList2.size());
Assert.assertEquals(2, permissionList2.size());
}
}
@@ -0,0 +1,52 @@
package org.tests.m2m;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import org.tests.model.basic.MRole;
import org.tests.model.basic.MUser;
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class TestM2MDeleteWithCascade extends BaseTestCase {
@Test
public void test() {
MRole r0 = new MRole("r0");
MRole r1 = new MRole("r1");
Ebean.save(r0);
// Ebean.save(r1);
MUser u0 = new MUser("usr0");
u0.addRole(r0);
u0.addRole(r1);
Ebean.save(u0);
List<MRole> roles = u0.getRoles();
// this will delete
Ebean.delete(u0);
MUser notThere = Ebean.find(MUser.class, u0.getUserid());
Assert.assertNull("been deleted", notThere);
List<Object> roleIds = new ArrayList<>();
Collections.addAll(roleIds, r0.getRoleid(), r1.getRoleid());
int rc = Ebean.find(MRole.class).where().idIn(roleIds).findCount();
Assert.assertEquals("roles not deleted", 2, rc);
Ebean.deleteAll(roles);
rc = Ebean.find(MRole.class).where().idIn(roleIds).findCount();
Assert.assertEquals("roles deleted now", 0, rc);
}
}
@@ -0,0 +1,59 @@
package org.tests.m2m;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import org.tests.model.basic.MRole;
import org.tests.model.basic.MUser;
import org.junit.Assert;
import org.junit.Test;
import java.util.List;
public class TestM2MModifyTest extends BaseTestCase {
@Test
public void test() {
// Create 2 roles r0 and r1
MRole r0 = new MRole("r0");
MRole r1 = new MRole("r1");
// Save r1 and r2
Ebean.save(r0);
Ebean.save(r1);
// Create a new user
MUser u0 = new MUser("usr0");
u0.addRole(r0);
u0.addRole(r1);
// Save the user
Ebean.save(u0);
List<MRole> roles = u0.getRoles();
Assert.assertTrue(roles.size() == 2);
u0 = Ebean.find(MUser.class, u0.getUserid());
roles = u0.getRoles();
int nrRoles = roles.size();
Assert.assertTrue(nrRoles == 2);
roles.clear();
roles.add(r0);
roles.add(r1);
roles.remove(r1);
Ebean.save(u0);
u0 = Ebean.find(MUser.class, u0.getUserid());
roles = u0.getRoles();
nrRoles = roles.size();
Assert.assertTrue(nrRoles == 1);
}
}
@@ -0,0 +1,31 @@
package org.tests.m2m;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import org.tests.model.m2m.MailBox;
import org.tests.model.m2m.MailUser;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class TestM2MMultipleLists extends BaseTestCase {
@Test
public void test() {
MailUser u = new MailUser();
u.setName("mailUser1");
MailBox m1 = new MailBox();
m1.setName("mailBox1");
u.getInbox().add(m1);
Ebean.save(u);
u = Ebean.find(MailUser.class, u.getId());
assertEquals(1, u.getInbox().size());
assertEquals(0, u.getOutbox().size());
}
}
@@ -0,0 +1,29 @@
package org.tests.m2m;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import org.tests.model.m2m.MnyTopic;
import org.junit.Test;
/**
* Added to test DDL generation for ManyToMany related back to itself.
*/
public class TestM2MSelfRelationship extends BaseTestCase {
@Test
public void test() {
Ebean.getDefaultServer();
// Create 2 roles r0 and r1
MnyTopic r0 = new MnyTopic("r0");
MnyTopic r1 = new MnyTopic("r1");
// Save r1 and r2
Ebean.save(r0);
Ebean.save(r1);
r0.getSubTopics().add(r1);
Ebean.save(r0);
}
}
@@ -0,0 +1,85 @@
package org.tests.m2m;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import org.tests.model.m2m.Permission;
import org.tests.model.m2m.Role;
import org.tests.model.m2m.Tenant;
import org.junit.Assert;
import org.junit.Test;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class TestM2mDeleteObject extends BaseTestCase {
@Test
public void test() {
Ebean.createUpdate(Permission.class, "delete from Permission").execute();
Ebean.createUpdate(Tenant.class, "delete from Tenant").execute();
Ebean.createUpdate(Role.class, "delete from Role").execute();
Tenant t = new Tenant("tenant");
Ebean.save(t);
Permission p1 = new Permission("p1");
Permission p2 = new Permission("p2");
Ebean.save(p1);
Ebean.save(p2);
Role role1 = new Role("role");
role1.setTenant(t);
Set<Permission> permissions = new HashSet<>();
List<Permission> permsList = Ebean.find(Permission.class).findList();
permissions.addAll(permsList);
role1.setPermissions(permissions);
Ebean.save(role1);
List<Tenant> tenantList = Ebean.find(Tenant.class).fetch("roles").findList();
List<Role> roleList = Ebean.find(Role.class).fetch("permissions").findList();
List<Permission> permissionList = Ebean.find(Permission.class).fetch("roles").findList();
Assert.assertEquals(1, tenantList.size());
Assert.assertEquals(2, permissionList.size());
Assert.assertEquals(1, roleList.size());
Ebean.delete(role1);
List<Tenant> tenantList2 = Ebean.find(Tenant.class).fetch("roles").findList();
List<Role> roleList2 = Ebean.find(Role.class).fetch("permissions").findList();
List<Permission> permissionList2 = Ebean.find(Permission.class).fetch("roles").findList();
Assert.assertEquals(0, roleList2.size());
Assert.assertEquals(1, tenantList2.size());
Assert.assertEquals(2, permissionList2.size());
}
@Test
public void test_deleteCascading() {
Permission p1 = new Permission("p1");
Permission p2 = new Permission("p2");
Ebean.save(p1);
Ebean.save(p2);
Role role1 = new Role("role");
Set<Permission> permissions = new HashSet<>();
permissions.add(p2);
role1.setPermissions(permissions);
Ebean.save(role1);
// only deletes as not associated
Ebean.delete(p1);
// delete cascades
Ebean.delete(role1);
}
}