diff --git a/scm-core/src/main/java/sonia/scm/plugin/QueryableTypeDescriptor.java b/scm-core/src/main/java/sonia/scm/plugin/QueryableTypeDescriptor.java index de440b0aba..72102ff249 100644 --- a/scm-core/src/main/java/sonia/scm/plugin/QueryableTypeDescriptor.java +++ b/scm-core/src/main/java/sonia/scm/plugin/QueryableTypeDescriptor.java @@ -33,6 +33,11 @@ public class QueryableTypeDescriptor extends NamedClassElement { @XmlJavaTypeAdapter(XmlArrayStringAdapter.class) private String[] types; + QueryableTypeDescriptor(String name, String clazz, String[] types) { + super(name, clazz); + this.types = types; + } + public String[] getTypes() { return types == null ? new String[0] : types; } diff --git a/scm-persistence/src/test/java/sonia/scm/store/sqlite/QueryableTypeDescriptorTestData.java b/scm-persistence/src/test/java/sonia/scm/store/sqlite/QueryableTypeDescriptorTestData.java index 8f87526be8..dcdf8d4abb 100644 --- a/scm-persistence/src/test/java/sonia/scm/store/sqlite/QueryableTypeDescriptorTestData.java +++ b/scm-persistence/src/test/java/sonia/scm/store/sqlite/QueryableTypeDescriptorTestData.java @@ -18,19 +18,22 @@ package sonia.scm.store.sqlite; import sonia.scm.plugin.QueryableTypeDescriptor; -import static org.mockito.Mockito.lenient; -import static org.mockito.Mockito.mock; +import java.lang.reflect.Constructor; public class QueryableTypeDescriptorTestData { - static QueryableTypeDescriptor createDescriptor(String[] t) { - return createDescriptor("com.cloudogu.space.to.be.Spaceship", t); + + public static QueryableTypeDescriptor createDescriptor(String clazz, String[] t) { + return createDescriptor("", clazz, t); } - static QueryableTypeDescriptor createDescriptor(String clazz, String[] t) { - QueryableTypeDescriptor descriptor = mock(QueryableTypeDescriptor.class); - lenient().when(descriptor.getTypes()).thenReturn(t); - lenient().when(descriptor.getClazz()).thenReturn(clazz); - lenient().when(descriptor.getName()).thenReturn(""); - return descriptor; + public static QueryableTypeDescriptor createDescriptor(String name, String clazz, String[] t) { + try { + Constructor constructor = QueryableTypeDescriptor.class + .getDeclaredConstructor(String.class, String.class, String[].class); + constructor.setAccessible(true); + return constructor.newInstance(name, clazz, t); + } catch (Exception e) { + throw new RuntimeException(e); + } } } diff --git a/scm-persistence/src/test/java/sonia/scm/store/sqlite/TableCreatorTest.java b/scm-persistence/src/test/java/sonia/scm/store/sqlite/TableCreatorTest.java index a21a0a6657..4173e997fe 100644 --- a/scm-persistence/src/test/java/sonia/scm/store/sqlite/TableCreatorTest.java +++ b/scm-persistence/src/test/java/sonia/scm/store/sqlite/TableCreatorTest.java @@ -46,7 +46,7 @@ class TableCreatorTest { @Test void shouldCreateTableWithoutParents() throws SQLException { - QueryableTypeDescriptor descriptor = createDescriptor(new String[0]); + QueryableTypeDescriptor descriptor = createDescriptor("com.cloudogu.space.to.be.Spaceship", new String[0]); tableCreator.initializeTable(descriptor); @@ -57,8 +57,7 @@ class TableCreatorTest { @Test void shouldCreateNamedTableWithoutParents() throws SQLException { - QueryableTypeDescriptor descriptor = createDescriptor(new String[0]); - when(descriptor.getName()).thenReturn("ships"); + QueryableTypeDescriptor descriptor = createDescriptor("ships", "com.cloudogu.space.to.be.Spaceship", new String[0]); tableCreator.initializeTable(descriptor); @@ -69,7 +68,7 @@ class TableCreatorTest { @Test void shouldCreateTableWithSingleParent() throws SQLException { - QueryableTypeDescriptor descriptor = createDescriptor(new String[]{"sonia.scm.repo.Repository.class"}); + QueryableTypeDescriptor descriptor = createDescriptor("com.cloudogu.space.to.be.Spaceship", new String[]{"sonia.scm.repo.Repository.class"}); tableCreator.initializeTable(descriptor); @@ -81,7 +80,7 @@ class TableCreatorTest { @Test void shouldCreateTableWithMultipleParents() throws SQLException { - QueryableTypeDescriptor descriptor = createDescriptor(new String[]{"sonia.scm.repo.Repository.class", "sonia.scm.user.User"}); + QueryableTypeDescriptor descriptor = createDescriptor("com.cloudogu.space.to.be.Spaceship", new String[]{"sonia.scm.repo.Repository.class", "sonia.scm.user.User"}); tableCreator.initializeTable(descriptor); @@ -94,7 +93,7 @@ class TableCreatorTest { @Test void shouldFailIfTableExistsWithoutIdColumn() throws SQLException { - QueryableTypeDescriptor descriptor = createDescriptor(new String[0]); + QueryableTypeDescriptor descriptor = createDescriptor("com.cloudogu.space.to.be.Spaceship", new String[0]); try { connection.createStatement().execute("CREATE TABLE com_cloudogu_space_to_be_Spaceship_STORE (payload JSONB)"); tableCreator.initializeTable(descriptor); @@ -106,7 +105,7 @@ class TableCreatorTest { @Test void shouldFailIfTableExistsWithoutPayloadColumn() throws SQLException { - QueryableTypeDescriptor descriptor = createDescriptor(new String[0]); + QueryableTypeDescriptor descriptor = createDescriptor("com.cloudogu.space.to.be.Spaceship", new String[0]); try { connection.createStatement().execute("CREATE TABLE com_cloudogu_space_to_be_Spaceship_STORE (ID TEXT)"); tableCreator.initializeTable(descriptor); @@ -118,7 +117,7 @@ class TableCreatorTest { @Test void shouldFailIfTableExistsWithoutParentColumn() throws SQLException { - QueryableTypeDescriptor descriptor = createDescriptor(new String[]{"sonia.scm.repo.Repository.class"}); + QueryableTypeDescriptor descriptor = createDescriptor("com.cloudogu.space.to.be.Spaceship", new String[]{"sonia.scm.repo.Repository.class"}); try { connection.createStatement().execute("CREATE TABLE com_cloudogu_space_to_be_Spaceship_STORE (ID TEXT, payload JSONB)"); tableCreator.initializeTable(descriptor); @@ -130,7 +129,7 @@ class TableCreatorTest { @Test void shouldFailIfTableExistsWithTooManyParentColumns() throws SQLException { - QueryableTypeDescriptor descriptor = createDescriptor(new String[]{"sonia.scm.repo.Repository.class"}); + QueryableTypeDescriptor descriptor = createDescriptor("com.cloudogu.space.to.be.Spaceship", new String[]{"sonia.scm.repo.Repository.class"}); try { connection.createStatement().execute("CREATE TABLE com_cloudogu_space_to_be_Spaceship_STORE (ID TEXT, Repository_ID, User_ID, payload JSONB)"); tableCreator.initializeTable(descriptor);