fix migration generation where sqltype was not properly set; also fix tests for that

This commit is contained in:
wea_ondara
2022-11-27 06:41:38 +01:00
parent 03850b78dd
commit 1f90bc551b
4 changed files with 44 additions and 0 deletions

View File

@@ -23,5 +23,12 @@
<artifactId>core</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>jef</groupId>
<artifactId>core</artifactId>
<version>${project.parent.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

@@ -251,6 +251,7 @@ public class MigrationCreator {
if (fromField == null) {
handledTo.add(toField);
steps.add(new AddFieldOperation.Builder(toField.getEntity().getName(), toField.getName())
.sqlType(getSqlType(toField))
.notNull(toField.isNotNull()));
}
}

View File

@@ -1,7 +1,11 @@
package jef.model.migration.creator;
import jef.model.DbContext;
import jef.model.DbEntityBuilder;
import jef.model.DbFieldBuilder;
import jef.model.ModelBuilder;
import jef.platform.base.SqlTypeMapper;
import jef.serializable.SerializableObject;
import java.io.File;
import java.net.URL;
@@ -14,6 +18,7 @@ import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static jef.model.ModelBuilderCloneTest.debugHelper;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class MigrationCreatorTestBase {
@@ -47,6 +52,8 @@ public class MigrationCreatorTestBase {
compile(packageName, className, snapshotJava);
var clazz = (Class<? extends DbContext>) loadClass(packageName, className);
var mb = ModelBuilder.from(clazz);
applySqlTypes(mb);
debugHelper(from, mb);
assertEquals(from, mb);
} catch (AssertionError | RuntimeException e) {
throw e;
@@ -62,6 +69,8 @@ public class MigrationCreatorTestBase {
compile(packageName, className, snapshotJava);
var clazz = (Class<? extends DbContext>) loadClass(packageName, className);
var mb = ModelBuilder.from(clazz);
applySqlTypes(mb);
debugHelper(to, mb);
assertEquals(to, mb);
} catch (AssertionError | RuntimeException e) {
throw e;
@@ -70,6 +79,16 @@ public class MigrationCreatorTestBase {
}
}
private void applySqlTypes(ModelBuilder mb) {
for (DbEntityBuilder<? extends SerializableObject> entity : mb.entities()) {
for (DbFieldBuilder<?> field : entity.fields()) {
if (field.getField().getSqlType() == null) {
field.getField().setSqlType(new SqlTypeMapper().map(field.getField().getTypeName()).orElseThrow());
}
}
}
}
private File compile(String packageName, String className, String java) {
try {//src
File srcdir = new File(getSourcesFilesDir(), packageName.replace(".", File.separator));