TSK-1257: added one more test
This commit is contained in:
parent
938a5112aa
commit
89641ecdf9
|
@ -20,7 +20,7 @@ import pro.taskana.simplehistory.impl.HistoryEventImpl;
|
||||||
import pro.taskana.simplehistory.impl.SimpleHistoryServiceImpl;
|
import pro.taskana.simplehistory.impl.SimpleHistoryServiceImpl;
|
||||||
|
|
||||||
/** Set up database for tests. */
|
/** Set up database for tests. */
|
||||||
public class AbstractAccTest {
|
public abstract class AbstractAccTest {
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractAccTest.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractAccTest.class);
|
||||||
private static final int POOL_TIME_TO_WAIT = 50;
|
private static final int POOL_TIME_TO_WAIT = 50;
|
||||||
|
|
|
@ -45,24 +45,18 @@ import pro.taskana.common.internal.configuration.SecurityVerifier;
|
||||||
*/
|
*/
|
||||||
public class TaskanaEngineConfiguration {
|
public class TaskanaEngineConfiguration {
|
||||||
|
|
||||||
protected static final String TASKANA_SCHEMA_VERSION =
|
|
||||||
"3.0.0"; // must match the VERSION value in table
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(TaskanaEngineConfiguration.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(TaskanaEngineConfiguration.class);
|
||||||
private static final String USER_NAME = "sa";
|
|
||||||
private static final String USER_PASSWORD = "sa";
|
// must match the VERSION value in table
|
||||||
private static final String JDBC_H2_MEM_TASKANA =
|
private static final String TASKANA_SCHEMA_VERSION = "3.0.0";
|
||||||
"jdbc:h2:mem:taskana;IGNORECASE=TRUE;LOCK_MODE=0;"
|
|
||||||
+ "INIT=CREATE SCHEMA IF NOT EXISTS TASKANA\\;"
|
|
||||||
+ "SET COLLATION DEFAULT_de_DE ";
|
|
||||||
private static final String H2_DRIVER = "org.h2.Driver";
|
|
||||||
private static final String TASKANA_PROPERTIES = "/taskana.properties";
|
private static final String TASKANA_PROPERTIES = "/taskana.properties";
|
||||||
private static final String TASKANA_PROPERTY_SEPARATOR = "|";
|
private static final String TASKANA_PROPERTY_SEPARATOR = "|";
|
||||||
private static final String TASKANA_JOB_BATCHSIZE = "taskana.jobs.batchSize";
|
private static final String TASKANA_JOB_BATCH_SIZE = "taskana.jobs.batchSize";
|
||||||
private static final String TASKANA_JOB_RETRIES = "taskana.jobs.maxRetries";
|
private static final String TASKANA_JOB_RETRIES = "taskana.jobs.maxRetries";
|
||||||
private static final String TASKANA_JOB_CLEANUP_RUN_EVERY = "taskana.jobs.cleanup.runEvery";
|
private static final String TASKANA_JOB_CLEANUP_RUN_EVERY = "taskana.jobs.cleanup.runEvery";
|
||||||
private static final String TASKANA_JOB_CLEANUP_FIRST_RUN = "taskana.jobs.cleanup.firstRunAt";
|
private static final String TASKANA_JOB_CLEANUP_FIRST_RUN = "taskana.jobs.cleanup.firstRunAt";
|
||||||
private static final String TASKANA_JOB_CLEANUP_MINIMUM_AGE = "taskana.jobs.cleanup.minimumAge";
|
private static final String TASKANA_JOB_CLEANUP_MINIMUM_AGE = "taskana.jobs.cleanup.minimumAge";
|
||||||
private static final String TASKANA_JOB_TASK_CLEANUP_ALL_COMPLETED_SAME_PARENTE_BUSINESS =
|
private static final String TASKANA_JOB_TASK_CLEANUP_ALL_COMPLETED_SAME_PARENT_BUSINESS =
|
||||||
"taskana.jobs.cleanup.allCompletedSameParentBusiness";
|
"taskana.jobs.cleanup.allCompletedSameParentBusiness";
|
||||||
private static final String TASKANA_DOMAINS_PROPERTY = "taskana.domains";
|
private static final String TASKANA_DOMAINS_PROPERTY = "taskana.domains";
|
||||||
private static final String TASKANA_CLASSIFICATION_TYPES_PROPERTY =
|
private static final String TASKANA_CLASSIFICATION_TYPES_PROPERTY =
|
||||||
|
@ -72,11 +66,11 @@ public class TaskanaEngineConfiguration {
|
||||||
private static final String TASKANA_GERMAN_HOLIDAYS_ENABLED = "taskana.german.holidays.enabled";
|
private static final String TASKANA_GERMAN_HOLIDAYS_ENABLED = "taskana.german.holidays.enabled";
|
||||||
private static final String TASKANA_GERMAN_HOLIDAYS_CORPUS_CHRISTI_ENABLED =
|
private static final String TASKANA_GERMAN_HOLIDAYS_CORPUS_CHRISTI_ENABLED =
|
||||||
"taskana.german.holidays.corpus-christi.enabled";
|
"taskana.german.holidays.corpus-christi.enabled";
|
||||||
|
private static final String TASKANA_CUSTOM_HOLIDAY = "taskana.custom.holidays";
|
||||||
|
private static final String TASKANA_CUSTOM_HOLIDAY_DAY_MONTH_SEPARATOR = ".";
|
||||||
// TASKANA_SCHEMA_VERSION
|
// TASKANA_SCHEMA_VERSION
|
||||||
private static final String DEFAULT_SCHEMA_NAME = "TASKANA";
|
private static final String DEFAULT_SCHEMA_NAME = "TASKANA";
|
||||||
|
|
||||||
private static final String TASKANA_CUSTOM_HOLIDAY = "taskana.custom.holidays";
|
|
||||||
private static final String TASKANA_CUSTOM_HOLIDAY_DAY_MONTH_SEPERATOR = ".";
|
|
||||||
private final List<CustomHoliday> customHolidays = new ArrayList<>();
|
private final List<CustomHoliday> customHolidays = new ArrayList<>();
|
||||||
// Taskana properties file
|
// Taskana properties file
|
||||||
protected String propertiesFileName = TASKANA_PROPERTIES;
|
protected String propertiesFileName = TASKANA_PROPERTIES;
|
||||||
|
@ -183,12 +177,20 @@ public class TaskanaEngineConfiguration {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DataSource createDefaultDataSource() {
|
public static DataSource createDefaultDataSource() {
|
||||||
LOGGER.info(
|
String driverClass = "org.h2.Driver";
|
||||||
"No datasource is provided. A inmemory db is used: "
|
String jdbcUrl =
|
||||||
+ "'org.h2.Driver', 'jdbc:h2:mem:taskana;IGNORECASE=TRUE;LOCK_MODE=0;"
|
"jdbc:h2:mem:taskana;IGNORECASE=TRUE;LOCK_MODE=0;"
|
||||||
+ "INIT=CREATE SCHEMA IF NOT EXISTS TASKANA\\;"
|
+ "INIT=CREATE SCHEMA IF NOT EXISTS TASKANA\\;"
|
||||||
+ "SET COLLATION DEFAULT_de_DE', 'sa', 'sa'");
|
+ "SET COLLATION DEFAULT_de_DE";
|
||||||
return createDatasource(H2_DRIVER, JDBC_H2_MEM_TASKANA, USER_NAME, USER_PASSWORD);
|
String username = "sa";
|
||||||
|
String password = "sa";
|
||||||
|
LOGGER.info(
|
||||||
|
"No datasource is provided. An in-memory db is used: " + "'{}', '{}', '{}', '{}'",
|
||||||
|
driverClass,
|
||||||
|
jdbcUrl,
|
||||||
|
username,
|
||||||
|
password);
|
||||||
|
return createDatasource(driverClass, jdbcUrl, username, password);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -381,7 +383,7 @@ public class TaskanaEngineConfiguration {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initJobParameters(Properties props) {
|
private void initJobParameters(Properties props) {
|
||||||
String jobBatchSizeProperty = props.getProperty(TASKANA_JOB_BATCHSIZE);
|
String jobBatchSizeProperty = props.getProperty(TASKANA_JOB_BATCH_SIZE);
|
||||||
if (jobBatchSizeProperty != null && !jobBatchSizeProperty.isEmpty()) {
|
if (jobBatchSizeProperty != null && !jobBatchSizeProperty.isEmpty()) {
|
||||||
try {
|
try {
|
||||||
jobBatchSize = Integer.parseInt(jobBatchSizeProperty);
|
jobBatchSize = Integer.parseInt(jobBatchSizeProperty);
|
||||||
|
@ -442,7 +444,7 @@ public class TaskanaEngineConfiguration {
|
||||||
}
|
}
|
||||||
|
|
||||||
String taskCleanupJobAllCompletedSameParentBusinessProperty =
|
String taskCleanupJobAllCompletedSameParentBusinessProperty =
|
||||||
props.getProperty(TASKANA_JOB_TASK_CLEANUP_ALL_COMPLETED_SAME_PARENTE_BUSINESS);
|
props.getProperty(TASKANA_JOB_TASK_CLEANUP_ALL_COMPLETED_SAME_PARENT_BUSINESS);
|
||||||
if (taskCleanupJobAllCompletedSameParentBusinessProperty != null
|
if (taskCleanupJobAllCompletedSameParentBusinessProperty != null
|
||||||
&& !taskCleanupJobAllCompletedSameParentBusinessProperty.isEmpty()) {
|
&& !taskCleanupJobAllCompletedSameParentBusinessProperty.isEmpty()) {
|
||||||
try {
|
try {
|
||||||
|
@ -555,9 +557,7 @@ public class TaskanaEngineConfiguration {
|
||||||
ensureRoleMapIsFullyInitialized();
|
ensureRoleMapIsFullyInitialized();
|
||||||
|
|
||||||
if (LOGGER.isDebugEnabled()) {
|
if (LOGGER.isDebugEnabled()) {
|
||||||
roleMap.forEach(
|
roleMap.forEach((k, v) -> LOGGER.debug("Found Taskana RoleConfig {} : {} ", k, v));
|
||||||
(k, v) ->
|
|
||||||
LOGGER.debug("Found Taskana RoleConfig {} : {} ", k, v));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -579,7 +579,7 @@ public class TaskanaEngineConfiguration {
|
||||||
private CustomHoliday createCustomHolidayFromPropsEntry(String customHolidayEntry)
|
private CustomHoliday createCustomHolidayFromPropsEntry(String customHolidayEntry)
|
||||||
throws WrongCustomHolidayFormatException {
|
throws WrongCustomHolidayFormatException {
|
||||||
String[] parts =
|
String[] parts =
|
||||||
customHolidayEntry.split(Pattern.quote(TASKANA_CUSTOM_HOLIDAY_DAY_MONTH_SEPERATOR));
|
customHolidayEntry.split(Pattern.quote(TASKANA_CUSTOM_HOLIDAY_DAY_MONTH_SEPARATOR));
|
||||||
if (parts.length == 2) {
|
if (parts.length == 2) {
|
||||||
return CustomHoliday.of(Integer.valueOf(parts[0]), Integer.valueOf(parts[1]));
|
return CustomHoliday.of(Integer.valueOf(parts[0]), Integer.valueOf(parts[1]));
|
||||||
}
|
}
|
||||||
|
|
|
@ -579,4 +579,42 @@ class CompleteTaskAccTest extends AbstractAccTest {
|
||||||
.isAfterOrEqualTo(beforeBulkComplete);
|
.isAfterOrEqualTo(beforeBulkComplete);
|
||||||
assertThat(task.getOwner()).isEqualTo("user-1-2");
|
assertThat(task.getOwner()).isEqualTo("user-1-2");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "user-3-2", groups = "group-2")
|
||||||
|
@Test
|
||||||
|
void should_OnlyClaimTasksWhichAreNotClaimed_When_BulkForceCompletingTasks() throws Exception {
|
||||||
|
String id1 = "TKI:000000000000000000000000000000000043"; // task is already claimed
|
||||||
|
String id2 = "TKI:000000000000000000000000000000000044"; // task is ready
|
||||||
|
List<String> taskIdList = Arrays.asList(id1, id2);
|
||||||
|
|
||||||
|
Task task = TASK_SERVICE.getTask(id2);
|
||||||
|
assertThat(task.getState()).isSameAs(TaskState.READY);
|
||||||
|
assertThat(task.getClaimed()).isNull();
|
||||||
|
|
||||||
|
final Instant beforeBulkComplete = Instant.now();
|
||||||
|
|
||||||
|
BulkOperationResults<String, TaskanaException> results =
|
||||||
|
TASK_SERVICE.forceCompleteTasks(taskIdList);
|
||||||
|
|
||||||
|
assertThat(results.containsErrors()).isFalse();
|
||||||
|
|
||||||
|
task = TASK_SERVICE.getTask(id1);
|
||||||
|
assertThat(task.getState()).isEqualTo(TaskState.COMPLETED);
|
||||||
|
// do not update claimed timestamp for already claimed task
|
||||||
|
assertThat(task.getClaimed()).isBefore(beforeBulkComplete);
|
||||||
|
assertThat(task.getCompleted())
|
||||||
|
.isEqualTo(task.getModified())
|
||||||
|
.isAfterOrEqualTo(beforeBulkComplete);
|
||||||
|
assertThat(task.getOwner()).isEqualTo("user-3-2");
|
||||||
|
|
||||||
|
task = TASK_SERVICE.getTask(id2);
|
||||||
|
assertThat(task.getState()).isEqualTo(TaskState.COMPLETED);
|
||||||
|
assertThat(task.getCompleted())
|
||||||
|
.isEqualTo(task.getClaimed())
|
||||||
|
.isEqualTo(task.getModified())
|
||||||
|
.isAfterOrEqualTo(beforeBulkComplete);
|
||||||
|
assertThat(task.getOwner()).isEqualTo("user-3-2");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue