TSK-1937: cleaned up usage of WithServiceProvider annotation

This commit is contained in:
Mustapha Zorgati 2022-08-10 12:01:03 +02:00
parent 82400aecb1
commit b1166939cd
7 changed files with 51 additions and 100 deletions

View File

@ -1,10 +1,12 @@
package acceptance.jobs.helper; package acceptance.jobs.helper;
import static acceptance.jobs.helper.TaskUpdatePriorityWorkerAccTest.WithSpi.DummyPriorityServiceProvider.SPI_PRIORITY;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import acceptance.priorityservice.TestPriorityServiceProvider; import acceptance.jobs.helper.TaskUpdatePriorityWorkerAccTest.WithSpi.DummyPriorityServiceProvider;
import java.time.Instant; import java.time.Instant;
import java.util.List; import java.util.List;
import java.util.OptionalInt;
import java.util.function.IntPredicate; import java.util.function.IntPredicate;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
@ -125,7 +127,7 @@ class TaskUpdatePriorityWorkerAccTest {
@Nested @Nested
@WithServiceProvider( @WithServiceProvider(
serviceProviderInterface = PriorityServiceProvider.class, serviceProviderInterface = PriorityServiceProvider.class,
serviceProviders = TestPriorityServiceProvider.class) serviceProviders = DummyPriorityServiceProvider.class)
@TestInstance(Lifecycle.PER_CLASS) @TestInstance(Lifecycle.PER_CLASS)
class WithSpi { class WithSpi {
@ -140,7 +142,6 @@ class TaskUpdatePriorityWorkerAccTest {
@Test @Test
@WithAccessId(user = "admin") @WithAccessId(user = "admin")
void should_executeBatch() throws Exception { void should_executeBatch() throws Exception {
// given
Task oldTask = Task oldTask =
TaskBuilder.newTask() TaskBuilder.newTask()
.classificationSummary(classificationSummary) .classificationSummary(classificationSummary)
@ -150,14 +151,20 @@ class TaskUpdatePriorityWorkerAccTest {
.primaryObjRef(DefaultTestEntities.defaultTestObjectReference().build()) .primaryObjRef(DefaultTestEntities.defaultTestObjectReference().build())
.buildAndStore(taskService); .buildAndStore(taskService);
// when List<String> updatedTaskIds = worker.executeBatch(List.of(oldTask.getId()));
final List<String> updatedTaskIds = worker.executeBatch(List.of(oldTask.getId()));
// then
final Task updatedTask = taskService.getTask(oldTask.getId());
Task updatedTask = taskService.getTask(oldTask.getId());
assertThat(updatedTaskIds).containsExactly(oldTask.getId()); assertThat(updatedTaskIds).containsExactly(oldTask.getId());
assertThat(updatedTask.getPriority()).isNotEqualTo(oldTask.getPriority()); assertThat(updatedTask.getPriority()).isEqualTo(SPI_PRIORITY);
}
class DummyPriorityServiceProvider implements PriorityServiceProvider {
static final int SPI_PRIORITY = 10;
@Override
public OptionalInt calculatePriority(TaskSummary taskSummary) {
return OptionalInt.of(SPI_PRIORITY);
}
} }
} }
} }

View File

@ -1,39 +0,0 @@
package acceptance.priorityservice;
import java.time.Duration;
import java.time.Instant;
import java.util.OptionalInt;
import pro.taskana.common.api.WorkingDaysToDaysConverter;
import pro.taskana.common.api.WorkingTimeCalculator;
import pro.taskana.spi.priority.api.PriorityServiceProvider;
import pro.taskana.task.api.TaskCustomField;
import pro.taskana.task.api.models.TaskSummary;
public class TestPriorityServiceProvider implements PriorityServiceProvider {
private static final int MULTIPLIER = 10;
private final WorkingDaysToDaysConverter converter = new WorkingDaysToDaysConverter(true, true);
private final WorkingTimeCalculator calculator = new WorkingTimeCalculator(converter);
@Override
public OptionalInt calculatePriority(TaskSummary taskSummary) {
long priority;
try {
priority =
calculator
.workingTimeBetweenTwoTimestamps(taskSummary.getCreated(), Instant.now())
.toMinutes()
+ 1;
} catch (Exception e) {
priority = Duration.between(taskSummary.getCreated(), Instant.now()).toMinutes();
}
if (Boolean.parseBoolean(taskSummary.getCustomField(TaskCustomField.CUSTOM_6))) {
priority *= MULTIPLIER;
}
return OptionalInt.of(Math.toIntExact(priority));
}
}

View File

@ -5,6 +5,7 @@ import static pro.taskana.testapi.DefaultTestEntities.defaultTestClassification;
import static pro.taskana.testapi.DefaultTestEntities.defaultTestObjectReference; import static pro.taskana.testapi.DefaultTestEntities.defaultTestObjectReference;
import static pro.taskana.testapi.DefaultTestEntities.defaultTestWorkbasket; import static pro.taskana.testapi.DefaultTestEntities.defaultTestWorkbasket;
import acceptance.task.update.UpdateManualPriorityWithSpiAccTest.TestStaticValuePriorityServiceProvider;
import java.util.List; import java.util.List;
import java.util.OptionalInt; import java.util.OptionalInt;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
@ -35,8 +36,7 @@ import pro.taskana.workbasket.api.models.WorkbasketSummary;
@TaskanaIntegrationTest @TaskanaIntegrationTest
@WithServiceProvider( @WithServiceProvider(
serviceProviderInterface = PriorityServiceProvider.class, serviceProviderInterface = PriorityServiceProvider.class,
serviceProviders = serviceProviders = TestStaticValuePriorityServiceProvider.class)
UpdateManualPriorityWithSpiAccTest.TestStaticValuePriorityServiceProvider.class)
class UpdateManualPriorityWithSpiAccTest { class UpdateManualPriorityWithSpiAccTest {
private static final int SPI_PRIORITY = 5; private static final int SPI_PRIORITY = 5;
@ -46,8 +46,7 @@ class UpdateManualPriorityWithSpiAccTest {
@TaskanaInject ClassificationService classificationService; @TaskanaInject ClassificationService classificationService;
@TaskanaInject WorkbasketService workbasketService; @TaskanaInject WorkbasketService workbasketService;
public static class TestStaticValuePriorityServiceProvider implements PriorityServiceProvider { static class TestStaticValuePriorityServiceProvider implements PriorityServiceProvider {
@Override @Override
public OptionalInt calculatePriority(TaskSummary taskSummary) { public OptionalInt calculatePriority(TaskSummary taskSummary) {
return OptionalInt.of(UpdateManualPriorityWithSpiAccTest.SPI_PRIORITY); return OptionalInt.of(UpdateManualPriorityWithSpiAccTest.SPI_PRIORITY);

View File

@ -1,7 +1,9 @@
package acceptance.taskpreprocessing; package acceptance.taskpreprocessing;
import static acceptance.taskpreprocessing.CreateTaskPreprocessingAccTest.TestCreateTaskPreprocessorProvider.SPI_VALUE;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import acceptance.taskpreprocessing.CreateTaskPreprocessingAccTest.TestCreateTaskPreprocessorProvider;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -25,7 +27,7 @@ import pro.taskana.workbasket.api.models.WorkbasketSummary;
@TaskanaIntegrationTest @TaskanaIntegrationTest
@WithServiceProvider( @WithServiceProvider(
serviceProviderInterface = CreateTaskPreprocessor.class, serviceProviderInterface = CreateTaskPreprocessor.class,
serviceProviders = CreateTaskPreprocessingAccTest.TestCreateTaskPreprocessorProvider.class) serviceProviders = TestCreateTaskPreprocessorProvider.class)
class CreateTaskPreprocessingAccTest { class CreateTaskPreprocessingAccTest {
@TaskanaInject TaskService taskService; @TaskanaInject TaskService taskService;
@ -62,15 +64,16 @@ class CreateTaskPreprocessingAccTest {
Task createdTask = taskService.createTask(newTaskToCreate); Task createdTask = taskService.createTask(newTaskToCreate);
assertThat(createdTask.getCustomField(TaskCustomField.CUSTOM_1)) assertThat(createdTask.getCustomField(TaskCustomField.CUSTOM_1)).isEqualTo(SPI_VALUE);
.isEqualTo("preprocessedCustomField");
} }
public static class TestCreateTaskPreprocessorProvider implements CreateTaskPreprocessor { static class TestCreateTaskPreprocessorProvider implements CreateTaskPreprocessor {
static final String SPI_VALUE = "preprocessedCustomField";
@Override @Override
public void processTaskBeforeCreation(Task taskToProcess) { public void processTaskBeforeCreation(Task taskToProcess) {
taskToProcess.setCustomField(TaskCustomField.CUSTOM_1, "preprocessedCustomField"); taskToProcess.setCustomField(TaskCustomField.CUSTOM_1, SPI_VALUE);
} }
} }
} }

View File

@ -3,6 +3,7 @@ package pro.taskana.testapi;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import java.util.List; import java.util.List;
import java.util.OptionalInt;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance;
@ -12,6 +13,8 @@ import pro.taskana.TaskanaEngineConfiguration;
import pro.taskana.common.api.TaskanaEngine; 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; import pro.taskana.spi.priority.internal.PriorityServiceManager;
import pro.taskana.task.api.models.TaskSummary;
import pro.taskana.testapi.TaskanaInitializationExtensionTest.NestedTestClassWithServiceProvider.DummyPriorityServiceProvider;
@TaskanaIntegrationTest @TaskanaIntegrationTest
class TaskanaInitializationExtensionTest { class TaskanaInitializationExtensionTest {
@ -82,11 +85,10 @@ class TaskanaInitializationExtensionTest {
@WithServiceProvider( @WithServiceProvider(
serviceProviderInterface = PriorityServiceProvider.class, serviceProviderInterface = PriorityServiceProvider.class,
serviceProviders = TestPriorityServiceProvider.class) serviceProviders = DummyPriorityServiceProvider.class)
@Nested @Nested
@TestInstance(Lifecycle.PER_CLASS) @TestInstance(Lifecycle.PER_CLASS)
class NestedTestClassWithServiceProvider { class NestedTestClassWithServiceProvider {
@TaskanaInject TaskanaEngineConfiguration taskanaEngineConfiguration; @TaskanaInject TaskanaEngineConfiguration taskanaEngineConfiguration;
@TaskanaInject TaskanaEngine taskanaEngine; @TaskanaInject TaskanaEngine taskanaEngine;
@ -109,6 +111,14 @@ class TaskanaInitializationExtensionTest {
assertThat(taskanaEngineConfiguration.getDomains()) assertThat(taskanaEngineConfiguration.getDomains())
.containsExactlyInAnyOrder("DOMAIN_A", "DOMAIN_B"); .containsExactlyInAnyOrder("DOMAIN_A", "DOMAIN_B");
} }
class DummyPriorityServiceProvider implements PriorityServiceProvider {
@Override
public OptionalInt calculatePriority(TaskSummary taskSummary) {
// implementation not important for the tests
return OptionalInt.empty();
}
}
} }
@WithServiceProvider( @WithServiceProvider(

View File

@ -2,6 +2,7 @@ package pro.taskana.testapi;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import java.util.OptionalInt;
import javax.sql.DataSource; import javax.sql.DataSource;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -10,6 +11,8 @@ import org.junit.jupiter.api.TestInstance.Lifecycle;
import pro.taskana.TaskanaEngineConfiguration; import pro.taskana.TaskanaEngineConfiguration;
import pro.taskana.spi.priority.api.PriorityServiceProvider; import pro.taskana.spi.priority.api.PriorityServiceProvider;
import pro.taskana.task.api.models.TaskSummary;
import pro.taskana.testapi.TestContainerExtensionTest.NestedTestClassWithServiceProvider.DummyPriorityServiceProvider;
@TaskanaIntegrationTest @TaskanaIntegrationTest
class TestContainerExtensionTest { class TestContainerExtensionTest {
@ -185,7 +188,7 @@ class TestContainerExtensionTest {
@WithServiceProvider( @WithServiceProvider(
serviceProviderInterface = PriorityServiceProvider.class, serviceProviderInterface = PriorityServiceProvider.class,
serviceProviders = TestPriorityServiceProvider.class) serviceProviders = DummyPriorityServiceProvider.class)
@Nested @Nested
@TestInstance(Lifecycle.PER_CLASS) @TestInstance(Lifecycle.PER_CLASS)
class NestedTestClassWithServiceProvider { class NestedTestClassWithServiceProvider {
@ -209,5 +212,13 @@ class TestContainerExtensionTest {
assertThat(nestedSchemaName).isNotNull().isEqualTo(topLevelSchemaName); assertThat(nestedSchemaName).isNotNull().isEqualTo(topLevelSchemaName);
} }
class DummyPriorityServiceProvider implements PriorityServiceProvider {
@Override
public OptionalInt calculatePriority(TaskSummary taskSummary) {
// implementation not important for the tests
return OptionalInt.empty();
}
}
} }
} }

View File

@ -1,40 +0,0 @@
package pro.taskana.testapi;
import java.time.Duration;
import java.time.Instant;
import java.util.OptionalInt;
import pro.taskana.common.api.WorkingDaysToDaysConverter;
import pro.taskana.common.api.WorkingTimeCalculator;
import pro.taskana.spi.priority.api.PriorityServiceProvider;
import pro.taskana.task.api.TaskCustomField;
import pro.taskana.task.api.models.TaskSummary;
public class TestPriorityServiceProvider implements PriorityServiceProvider {
private static final int MULTIPLIER = 10;
private final WorkingDaysToDaysConverter converter = new WorkingDaysToDaysConverter(true, true);
private final WorkingTimeCalculator calculator = new WorkingTimeCalculator(converter);
@Override
public OptionalInt calculatePriority(TaskSummary taskSummary) {
long priority;
try {
priority =
calculator
.workingTimeBetweenTwoTimestamps(taskSummary.getCreated(), Instant.now())
.toMinutes()
+ 1;
} catch (Exception e) {
priority = Duration.between(taskSummary.getCreated(), Instant.now()).toMinutes();
}
if (Boolean.parseBoolean(taskSummary.getCustomField(TaskCustomField.CUSTOM_6))) {
priority *= MULTIPLIER;
}
return OptionalInt.of(Math.toIntExact(priority));
}
}