68 lines
4.3 KiB
Java
68 lines
4.3 KiB
Java
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 ForeignKeyInitializerRecursive1To1RelationTest {
|
|
@Test
|
|
public void test() {
|
|
var mb = ModelBuilder.from(Ctx.class);
|
|
|
|
assertEquals(1, mb.getEntities().size());
|
|
assertEquals(TestClass.class.getSimpleName(), mb.getEntity(TestClass.class).getName());
|
|
assertTrue(mb.getEntity(TestClass.class).getFields().stream().allMatch(e -> e.getEntity() == mb.getEntity(TestClass.class)));
|
|
assertTrue(mb.getEntity(TestClass.class).getForeignKeys().stream().allMatch(e -> e.getEntity() == mb.getEntity(TestClass.class)));
|
|
|
|
//fields ------------------------
|
|
//TestClass
|
|
assertEquals(9, mb.getEntity(TestClass.class).getFields().size());
|
|
assertEquals(1, mb.getEntity(TestClass.class).getFields().stream().filter(e -> e.getName().equals("i") && e.isModelField() && e.isDatabaseField()).count());
|
|
assertEquals(1, mb.getEntity(TestClass.class).getFields().stream().filter(e -> e.getName().equals("d") && e.isModelField() && e.isDatabaseField()).count());
|
|
assertEquals(1, mb.getEntity(TestClass.class).getFields().stream().filter(e -> e.getName().equals("f") && e.isModelField() && e.isDatabaseField()).count());
|
|
assertEquals(1, mb.getEntity(TestClass.class).getFields().stream().filter(e -> e.getName().equals("l") && e.isModelField() && e.isDatabaseField()).count());
|
|
assertEquals(1, mb.getEntity(TestClass.class).getFields().stream().filter(e -> e.getName().equals("o") && e.isModelField() && e.isDatabaseField()).count());
|
|
assertEquals(1, mb.getEntity(TestClass.class).getFields().stream().filter(e -> e.getName().equals("previous") && e.isModelField() && !e.isDatabaseField()).count());
|
|
assertEquals(1, mb.getEntity(TestClass.class).getFields().stream().filter(e -> e.getName().equals("previousI") && !e.isModelField() && e.isDatabaseField()).count());
|
|
assertEquals(1, mb.getEntity(TestClass.class).getFields().stream().filter(e -> e.getName().equals("next") && e.isModelField() && !e.isDatabaseField()).count());
|
|
assertEquals(1, mb.getEntity(TestClass.class).getFields().stream().filter(e -> e.getName().equals("nextI") && !e.isModelField() && e.isDatabaseField()).count());
|
|
// /fields ------------------------
|
|
|
|
//keys ------------------------
|
|
assertEquals(2, mb.getEntity(TestClass.class).getForeignKeys().size());
|
|
assertEquals(mb.getEntity(TestClass.class), mb.getEntity(TestClass.class).getForeignKeys().get(0).getEntity());
|
|
assertEquals(mb.getEntity(TestClass.class), mb.getEntity(TestClass.class).getForeignKeys().get(1).getEntity());
|
|
assertEquals(mb.getEntity(TestClass.class), mb.getEntity(TestClass.class).getForeignKeys().get(0).getReferencedEntity());
|
|
assertEquals(mb.getEntity(TestClass.class), mb.getEntity(TestClass.class).getForeignKeys().get(1).getReferencedEntity());
|
|
assertEquals(mb.getEntity(TestClass.class).getFields().stream().filter(e -> e.getName().equals("nextI")).toList(),
|
|
mb.getEntity(TestClass.class).getForeignKeys().get(0).getFields());
|
|
assertEquals(mb.getEntity(TestClass.class).getFields().stream().filter(e -> e.getName().equals("previousI")).toList(),
|
|
mb.getEntity(TestClass.class).getForeignKeys().get(1).getFields());
|
|
assertEquals(mb.getEntity(TestClass.class).getPrimaryKey().getFields(), mb.getEntity(TestClass.class).getForeignKeys().get(0).getReferencedFields());
|
|
assertEquals(mb.getEntity(TestClass.class).getPrimaryKey().getFields(), mb.getEntity(TestClass.class).getForeignKeys().get(1).getReferencedFields());
|
|
// /keys ------------------------
|
|
}
|
|
|
|
public static class Ctx extends DbContext {
|
|
@Clazz(clazz = TestClass.class)
|
|
private DbSet<TestClass> objects2;
|
|
}
|
|
|
|
@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;
|
|
private TestClass previous;
|
|
private TestClass next;
|
|
}
|
|
} |