added foreign keys
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
package jef.model;
|
||||
|
||||
import jef.DbSet;
|
||||
import jef.model.annotations.Clazz;
|
||||
import jef.model.annotations.Id;
|
||||
import jef.serializable.SerializableObject;
|
||||
import lombok.Getter;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
class ForeignKeyInitializerNestedObject2LayerTest {
|
||||
@Test
|
||||
public void test() {
|
||||
var mb = ModelBuilder.from(Ctx.class);
|
||||
|
||||
assertEquals(3, mb.getEntities().size());
|
||||
assertEquals(TestClass3.class.getSimpleName(), mb.getEntity(TestClass3.class).getName());
|
||||
assertEquals(TestClass2.class.getSimpleName(), mb.getEntity(TestClass2.class).getName());
|
||||
assertEquals(TestClass.class.getSimpleName(), mb.getEntity(TestClass.class).getName());
|
||||
assertTrue(mb.getEntity(TestClass3.class).getFields().stream().allMatch(e -> e.getEntity() == mb.getEntity(TestClass3.class)));
|
||||
assertTrue(mb.getEntity(TestClass2.class).getFields().stream().allMatch(e -> e.getEntity() == mb.getEntity(TestClass2.class)));
|
||||
assertTrue(mb.getEntity(TestClass.class).getFields().stream().allMatch(e -> e.getEntity() == mb.getEntity(TestClass.class)));
|
||||
assertTrue(mb.getEntity(TestClass3.class).getForeignKeys().stream().allMatch(e -> e.getEntity() == mb.getEntity(TestClass3.class)));
|
||||
assertTrue(mb.getEntity(TestClass2.class).getForeignKeys().stream().allMatch(e -> e.getEntity() == mb.getEntity(TestClass2.class)));
|
||||
assertTrue(mb.getEntity(TestClass.class).getForeignKeys().stream().allMatch(e -> e.getEntity() == mb.getEntity(TestClass.class)));
|
||||
|
||||
//fields ------------------------
|
||||
//TestClass3
|
||||
assertEquals(3, mb.getEntity(TestClass3.class).getFields().size());
|
||||
assertEquals(1, mb.getEntity(TestClass3.class).getFields().stream().filter(e -> e.getName().equals("id") && e.isModelField() && e.isDatabaseField()).count());
|
||||
assertEquals(1, mb.getEntity(TestClass3.class).getFields().stream().filter(e -> e.getName().equals("nested2") && e.isModelField() && !e.isDatabaseField()).count());
|
||||
assertEquals(1, mb.getEntity(TestClass3.class).getFields().stream().filter(e -> e.getName().equals("nested2I") && !e.isModelField() && e.isDatabaseField()).count());
|
||||
|
||||
//TestClass2
|
||||
assertEquals(3, mb.getEntity(TestClass2.class).getFields().size());
|
||||
assertEquals(1, mb.getEntity(TestClass2.class).getFields().stream().filter(e -> e.getName().equals("i") && e.isModelField() && e.isDatabaseField()).count());
|
||||
assertEquals(1, mb.getEntity(TestClass2.class).getFields().stream().filter(e -> e.getName().equals("nested") && e.isModelField() && !e.isDatabaseField()).count());
|
||||
assertEquals(1, mb.getEntity(TestClass2.class).getFields().stream().filter(e -> e.getName().equals("nestedI") && !e.isModelField() && e.isDatabaseField()).count());
|
||||
|
||||
//TestClass
|
||||
assertEquals(5, mb.getEntity(TestClass.class).getFields().size());
|
||||
assertEquals(1, mb.getEntity(TestClass.class).getFields().stream().filter(e -> e.getName().equals("i")).count());
|
||||
assertEquals(1, mb.getEntity(TestClass.class).getFields().stream().filter(e -> e.getName().equals("d")).count());
|
||||
assertEquals(1, mb.getEntity(TestClass.class).getFields().stream().filter(e -> e.getName().equals("f")).count());
|
||||
assertEquals(1, mb.getEntity(TestClass.class).getFields().stream().filter(e -> e.getName().equals("l")).count());
|
||||
assertEquals(1, mb.getEntity(TestClass.class).getFields().stream().filter(e -> e.getName().equals("o")).count());
|
||||
// /fields ------------------------
|
||||
|
||||
//keys ------------------------
|
||||
assertEquals(1, mb.getEntity(TestClass3.class).getForeignKeys().size());
|
||||
assertEquals(1, mb.getEntity(TestClass2.class).getForeignKeys().size());
|
||||
assertEquals(0, mb.getEntity(TestClass.class).getForeignKeys().size());
|
||||
|
||||
//refs TestClass3, TestClass2
|
||||
assertEquals(mb.getEntity(TestClass3.class), mb.getEntity(TestClass3.class).getForeignKeys().get(0).getEntity());
|
||||
assertEquals(mb.getEntity(TestClass2.class), mb.getEntity(TestClass3.class).getForeignKeys().get(0).getReferencedEntity());
|
||||
assertEquals(mb.getEntity(TestClass3.class).getFields().stream().filter(e -> e.getName().equals("nested2I")).toList(),
|
||||
mb.getEntity(TestClass3.class).getForeignKeys().get(0).getFields());
|
||||
assertEquals(mb.getEntity(TestClass2.class).getPrimaryKey().getFields(), mb.getEntity(TestClass3.class).getForeignKeys().get(0).getReferencedFields());
|
||||
|
||||
//refs TestClass2, TestClass
|
||||
assertEquals(mb.getEntity(TestClass2.class), mb.getEntity(TestClass2.class).getForeignKeys().get(0).getEntity());
|
||||
assertEquals(mb.getEntity(TestClass.class), mb.getEntity(TestClass2.class).getForeignKeys().get(0).getReferencedEntity());
|
||||
assertEquals(mb.getEntity(TestClass2.class).getFields().stream().filter(e -> e.getName().equals("nestedI")).toList(),
|
||||
mb.getEntity(TestClass2.class).getForeignKeys().get(0).getFields());
|
||||
assertEquals(mb.getEntity(TestClass.class).getPrimaryKey().getFields(), mb.getEntity(TestClass2.class).getForeignKeys().get(0).getReferencedFields());
|
||||
// /keys ------------------------
|
||||
}
|
||||
|
||||
public static class Ctx extends DbContext {
|
||||
@Clazz(clazz = TestClass3.class)
|
||||
private DbSet<TestClass3> objects1;
|
||||
}
|
||||
|
||||
@Getter
|
||||
public static class TestClass3 extends SerializableObject {
|
||||
public int id = 1;
|
||||
public TestClass2 nested2;
|
||||
}
|
||||
|
||||
@Getter
|
||||
public static class TestClass2 extends SerializableObject {
|
||||
@Id
|
||||
public int i = 1;
|
||||
public TestClass nested;
|
||||
}
|
||||
|
||||
@Getter
|
||||
public static class TestClass extends SerializableObject {
|
||||
@Id
|
||||
public int i = 1;
|
||||
public Object o = new Object();
|
||||
public double d;
|
||||
public float f;
|
||||
public long l;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user