mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-10-26 08:06:09 +01:00
Do not use mockito for tests with queryable types
Using mockito is fine as long as one does not try to create a huge amount of data. In this case it might happen, that mockito needs a lot of memory (probably to track single calls to methods) and in doing so might spoil load tests and such.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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<QueryableTypeDescriptor> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user