Skip to content

Commit 2226b90

Browse files
Add unavailable terminate test for case migration
1 parent 1785529 commit 2226b90

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

modules/flowable-cmmn-engine/src/test/java/org/flowable/cmmn/test/migration/CaseInstanceMigrationTest.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2397,6 +2397,47 @@ void repetitionListenerAndChangedTask() {
23972397
cmmnRuntimeService.completeUserEventListenerInstance(userEventListenerInstance.getId());
23982398
}
23992399

2400+
@Test
2401+
void terminateUnavailableListener() {
2402+
// Arrange
2403+
CaseDefinition originalDefinition = deployCaseDefinition("test1", "org/flowable/cmmn/test/migration/unavailable-listener.cmmn.xml");
2404+
CaseInstance caseInstance = cmmnRuntimeService.createCaseInstanceBuilder().caseDefinitionKey("testCase").start();
2405+
2406+
List<PlanItemInstance> planItemInstances = cmmnRuntimeService.createPlanItemInstanceQuery().caseInstanceId(caseInstance.getId()).list();
2407+
assertThat(planItemInstances).hasSize(2);
2408+
assertThat(planItemInstances)
2409+
.extracting(PlanItemInstance::getCaseDefinitionId)
2410+
.containsOnly(originalDefinition.getId());
2411+
assertThat(planItemInstances)
2412+
.extracting(PlanItemInstance::getPlanItemDefinitionId)
2413+
.containsExactlyInAnyOrder("humanTask1", "userEventListener1");
2414+
2415+
PlanItemInstance planItemInstance = cmmnRuntimeService.createPlanItemInstanceQuery().caseInstanceId(caseInstance.getId()).planItemDefinitionId("userEventListener1").singleResult();
2416+
assertThat(planItemInstance.getState()).isEqualTo(PlanItemInstanceState.UNAVAILABLE);
2417+
2418+
CaseDefinition destinationDefinition = deployCaseDefinition("test1", "org/flowable/cmmn/test/migration/unavailable-listener.cmmn.xml");
2419+
2420+
// Act
2421+
cmmnMigrationService.createCaseInstanceMigrationBuilder()
2422+
.migrateToCaseDefinition(destinationDefinition.getId())
2423+
.addTerminatePlanItemDefinitionMapping(PlanItemDefinitionMappingBuilder.createTerminatePlanItemDefinitionMappingFor("userEventListener1"))
2424+
.migrate(caseInstance.getId());
2425+
2426+
// Assert
2427+
CaseInstance caseInstanceAfterMigration = cmmnRuntimeService.createCaseInstanceQuery()
2428+
.caseInstanceId(caseInstance.getId())
2429+
.singleResult();
2430+
assertThat(caseInstanceAfterMigration.getCaseDefinitionId()).isEqualTo(destinationDefinition.getId());
2431+
planItemInstances = cmmnRuntimeService.createPlanItemInstanceQuery().caseInstanceId(caseInstance.getId()).list();
2432+
assertThat(planItemInstances).hasSize(1);
2433+
assertThat(planItemInstances)
2434+
.extracting(PlanItemInstance::getCaseDefinitionId)
2435+
.containsOnly(destinationDefinition.getId());
2436+
assertThat(planItemInstances)
2437+
.extracting(PlanItemInstance::getPlanItemDefinitionId)
2438+
.containsExactlyInAnyOrder("humanTask1");
2439+
}
2440+
24002441
@Test
24012442
void activateNewStageWithSentry() {
24022443
// Arrange
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<definitions xmlns="http://www.omg.org/spec/CMMN/20151109/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flowable="http://flowable.org/cmmn" xmlns:cmmndi="http://www.omg.org/spec/CMMN/20151109/CMMNDI" xmlns:dc="http://www.omg.org/spec/CMMN/20151109/DC" xmlns:di="http://www.omg.org/spec/CMMN/20151109/DI" xmlns:design="http://flowable.org/design" targetNamespace="http://flowable.org/cmmn">
3+
<case id="testCase" flowable:initiatorVariableName="initiator">
4+
<casePlanModel id="onecaseplanmodel1" name="Case plan model">
5+
<planItem id="planItem1" name="User event" definitionRef="userEventListener1" />
6+
<planItem id="planItem2" name="My new taskname 1" definitionRef="humanTask1" />
7+
8+
<userEventListener id="userEventListener1" name="User event" flowable:availableCondition="${false}" />
9+
<humanTask id="humanTask1" name="My new taskname 1" />
10+
</casePlanModel>
11+
</case>
12+
</definitions>

0 commit comments

Comments
 (0)