TSK-1937: test-api now initializes service providers properly
when multiple WithServiceProvider annotations are defined
This commit is contained in:
parent
f7b668835c
commit
82400aecb1
|
|
@ -38,6 +38,7 @@ import pro.taskana.testapi.CleanTaskanaContext;
|
||||||
import pro.taskana.testapi.TaskanaEngineConfigurationModifier;
|
import pro.taskana.testapi.TaskanaEngineConfigurationModifier;
|
||||||
import pro.taskana.testapi.TaskanaEngineProxy;
|
import pro.taskana.testapi.TaskanaEngineProxy;
|
||||||
import pro.taskana.testapi.WithServiceProvider;
|
import pro.taskana.testapi.WithServiceProvider;
|
||||||
|
import pro.taskana.testapi.WithServiceProvider.WithServiceProviders;
|
||||||
import pro.taskana.testapi.util.ServiceProviderExtractor;
|
import pro.taskana.testapi.util.ServiceProviderExtractor;
|
||||||
import pro.taskana.workbasket.api.WorkbasketService;
|
import pro.taskana.workbasket.api.WorkbasketService;
|
||||||
import pro.taskana.workbasket.internal.WorkbasketServiceImpl;
|
import pro.taskana.workbasket.internal.WorkbasketServiceImpl;
|
||||||
|
|
@ -53,6 +54,7 @@ public class TaskanaInitializationExtension implements TestInstancePostProcessor
|
||||||
if (isTopLevelClass(testClass)
|
if (isTopLevelClass(testClass)
|
||||||
|| isAnnotated(testClass, CleanTaskanaContext.class)
|
|| isAnnotated(testClass, CleanTaskanaContext.class)
|
||||||
|| isAnnotated(testClass, WithServiceProvider.class)
|
|| isAnnotated(testClass, WithServiceProvider.class)
|
||||||
|
|| isAnnotated(testClass, WithServiceProviders.class)
|
||||||
|| testInstance instanceof TaskanaEngineConfigurationModifier) {
|
|| testInstance instanceof TaskanaEngineConfigurationModifier) {
|
||||||
Store store = getClassLevelStore(context);
|
Store store = getClassLevelStore(context);
|
||||||
TaskanaEngineConfiguration taskanaEngineConfiguration =
|
TaskanaEngineConfiguration taskanaEngineConfiguration =
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,9 @@ import org.junit.jupiter.api.TestInstance;
|
||||||
import org.junit.jupiter.api.TestInstance.Lifecycle;
|
import org.junit.jupiter.api.TestInstance.Lifecycle;
|
||||||
|
|
||||||
import pro.taskana.TaskanaEngineConfiguration;
|
import pro.taskana.TaskanaEngineConfiguration;
|
||||||
|
import pro.taskana.common.api.TaskanaEngine;
|
||||||
import pro.taskana.spi.priority.api.PriorityServiceProvider;
|
import pro.taskana.spi.priority.api.PriorityServiceProvider;
|
||||||
|
import pro.taskana.spi.priority.internal.PriorityServiceManager;
|
||||||
|
|
||||||
@TaskanaIntegrationTest
|
@TaskanaIntegrationTest
|
||||||
class TaskanaInitializationExtensionTest {
|
class TaskanaInitializationExtensionTest {
|
||||||
|
|
@ -86,6 +88,15 @@ class TaskanaInitializationExtensionTest {
|
||||||
class NestedTestClassWithServiceProvider {
|
class NestedTestClassWithServiceProvider {
|
||||||
|
|
||||||
@TaskanaInject TaskanaEngineConfiguration taskanaEngineConfiguration;
|
@TaskanaInject TaskanaEngineConfiguration taskanaEngineConfiguration;
|
||||||
|
@TaskanaInject TaskanaEngine taskanaEngine;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void should_LoadServiceProviders() throws Exception {
|
||||||
|
PriorityServiceManager priorityServiceManager =
|
||||||
|
new TaskanaEngineProxy(taskanaEngine).getEngine().getPriorityServiceManager();
|
||||||
|
|
||||||
|
assertThat(priorityServiceManager.isEnabled()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void should_createNewTaskanaInstance_For_NestedTestClassAnnotatedWithCleanTaskanaContext() {
|
void should_createNewTaskanaInstance_For_NestedTestClassAnnotatedWithCleanTaskanaContext() {
|
||||||
|
|
@ -99,4 +110,47 @@ class TaskanaInitializationExtensionTest {
|
||||||
.containsExactlyInAnyOrder("DOMAIN_A", "DOMAIN_B");
|
.containsExactlyInAnyOrder("DOMAIN_A", "DOMAIN_B");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@WithServiceProvider(
|
||||||
|
serviceProviderInterface = PriorityServiceProvider.class,
|
||||||
|
serviceProviders =
|
||||||
|
NestedTestClassWithMultipleServiceProviders.DummyPriorityServiceProvider.class)
|
||||||
|
@WithServiceProvider(
|
||||||
|
serviceProviderInterface = PriorityServiceProvider.class,
|
||||||
|
serviceProviders =
|
||||||
|
NestedTestClassWithMultipleServiceProviders.DummyPriorityServiceProvider.class)
|
||||||
|
@Nested
|
||||||
|
@TestInstance(Lifecycle.PER_CLASS)
|
||||||
|
class NestedTestClassWithMultipleServiceProviders {
|
||||||
|
@TaskanaInject TaskanaEngineConfiguration taskanaEngineConfiguration;
|
||||||
|
@TaskanaInject TaskanaEngine taskanaEngine;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void should_LoadServiceProviders() throws Exception {
|
||||||
|
PriorityServiceManager priorityServiceManager =
|
||||||
|
new TaskanaEngineProxy(taskanaEngine).getEngine().getPriorityServiceManager();
|
||||||
|
|
||||||
|
assertThat(priorityServiceManager.isEnabled()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void should_createNewTaskanaInstance_For_NestedTestClassAnnotatedWithCleanTaskanaContext() {
|
||||||
|
assertThat(taskanaEngineConfiguration)
|
||||||
|
.isNotSameAs(TaskanaInitializationExtensionTest.this.taskanaEngineConfiguration);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void should_UseDefaultTaskanaEngine_When_NestedClassDoesNotImplementModifier() {
|
||||||
|
assertThat(taskanaEngineConfiguration.getDomains())
|
||||||
|
.containsExactlyInAnyOrder("DOMAIN_A", "DOMAIN_B");
|
||||||
|
}
|
||||||
|
|
||||||
|
class DummyPriorityServiceProvider implements PriorityServiceProvider {
|
||||||
|
@Override
|
||||||
|
public OptionalInt calculatePriority(TaskSummary taskSummary) {
|
||||||
|
// implementation not important for the tests
|
||||||
|
return OptionalInt.empty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue