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.TaskanaEngineProxy;
|
||||
import pro.taskana.testapi.WithServiceProvider;
|
||||
import pro.taskana.testapi.WithServiceProvider.WithServiceProviders;
|
||||
import pro.taskana.testapi.util.ServiceProviderExtractor;
|
||||
import pro.taskana.workbasket.api.WorkbasketService;
|
||||
import pro.taskana.workbasket.internal.WorkbasketServiceImpl;
|
||||
|
@ -53,6 +54,7 @@ public class TaskanaInitializationExtension implements TestInstancePostProcessor
|
|||
if (isTopLevelClass(testClass)
|
||||
|| isAnnotated(testClass, CleanTaskanaContext.class)
|
||||
|| isAnnotated(testClass, WithServiceProvider.class)
|
||||
|| isAnnotated(testClass, WithServiceProviders.class)
|
||||
|| testInstance instanceof TaskanaEngineConfigurationModifier) {
|
||||
Store store = getClassLevelStore(context);
|
||||
TaskanaEngineConfiguration taskanaEngineConfiguration =
|
||||
|
|
|
@ -9,7 +9,9 @@ import org.junit.jupiter.api.TestInstance;
|
|||
import org.junit.jupiter.api.TestInstance.Lifecycle;
|
||||
|
||||
import pro.taskana.TaskanaEngineConfiguration;
|
||||
import pro.taskana.common.api.TaskanaEngine;
|
||||
import pro.taskana.spi.priority.api.PriorityServiceProvider;
|
||||
import pro.taskana.spi.priority.internal.PriorityServiceManager;
|
||||
|
||||
@TaskanaIntegrationTest
|
||||
class TaskanaInitializationExtensionTest {
|
||||
|
@ -86,6 +88,15 @@ class TaskanaInitializationExtensionTest {
|
|||
class NestedTestClassWithServiceProvider {
|
||||
|
||||
@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() {
|
||||
|
@ -99,4 +110,47 @@ class TaskanaInitializationExtensionTest {
|
|||
.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