|
28 | 28 | import java.util.List;
|
29 | 29 | import java.util.Map;
|
30 | 30 | import java.util.Set;
|
| 31 | +import java.util.UUID; |
31 | 32 | import java.util.stream.Collectors;
|
32 | 33 | import java.util.stream.Stream;
|
33 | 34 |
|
@@ -1726,6 +1727,73 @@ public void testQueryLocalDateTimeVariable() throws Exception {
|
1726 | 1727 | Assertions.assertThat(caseInstance).isNull();
|
1727 | 1728 | }
|
1728 | 1729 |
|
| 1730 | + @Test |
| 1731 | + public void testQueryUUIDVariable() throws Exception { |
| 1732 | + Map<String, Object> vars = new HashMap<>(); |
| 1733 | + UUID someUUID = UUID.randomUUID(); |
| 1734 | + vars.put("uuidVar", someUUID); |
| 1735 | + |
| 1736 | + CaseInstance caseInstance1 = cmmnRuntimeService.createCaseInstanceBuilder() |
| 1737 | + .caseDefinitionKey("oneTaskCase") |
| 1738 | + .variables(vars) |
| 1739 | + .start(); |
| 1740 | + |
| 1741 | + UUID someUUID2 = UUID.randomUUID(); |
| 1742 | + vars = new HashMap<>(); |
| 1743 | + vars.put("uuidVar", someUUID); |
| 1744 | + vars.put("uuidVar2", someUUID2); |
| 1745 | + CaseInstance caseInstance2 = cmmnRuntimeService.createCaseInstanceBuilder() |
| 1746 | + .caseDefinitionKey("oneTaskCase") |
| 1747 | + .variables(vars) |
| 1748 | + .start(); |
| 1749 | + |
| 1750 | + UUID someUUID3 = UUID.randomUUID(); |
| 1751 | + vars = new HashMap<>(); |
| 1752 | + vars.put("uuidVar", someUUID3); |
| 1753 | + CaseInstance caseInstance3 = cmmnRuntimeService.createCaseInstanceBuilder() |
| 1754 | + .caseDefinitionKey("oneTaskCase") |
| 1755 | + .variables(vars) |
| 1756 | + .start(); |
| 1757 | + |
| 1758 | + // Query on single uuid variable, should result in 2 matches |
| 1759 | + CaseInstanceQuery query = cmmnRuntimeService.createCaseInstanceQuery().variableValueEquals("uuidVar", someUUID); |
| 1760 | + List<CaseInstance> caseInstances = query.list(); |
| 1761 | + Assertions.assertThat(caseInstances).hasSize(2); |
| 1762 | + |
| 1763 | + // Query on two uuid variables, should result in single value |
| 1764 | + query = cmmnRuntimeService.createCaseInstanceQuery().variableValueEquals("uuidVar", someUUID) |
| 1765 | + .variableValueEquals("uuidVar2", someUUID2); |
| 1766 | + CaseInstance caseInstance = query.singleResult(); |
| 1767 | + Assertions.assertThat(caseInstance).isNotNull(); |
| 1768 | + Assertions.assertThat(caseInstance.getId()).isEqualTo(caseInstance2.getId()); |
| 1769 | + |
| 1770 | + UUID unexistingUUID = UUID.randomUUID(); |
| 1771 | + // Query with unexisting variable value |
| 1772 | + caseInstance = cmmnRuntimeService.createCaseInstanceQuery().variableValueEquals("uuidVar", unexistingUUID).singleResult(); |
| 1773 | + Assertions.assertThat(caseInstance).isNull(); |
| 1774 | + |
| 1775 | + // Test NOT_EQUALS |
| 1776 | + caseInstance = cmmnRuntimeService.createCaseInstanceQuery().variableValueNotEquals("uuidVar", someUUID).singleResult(); |
| 1777 | + Assertions.assertThat(caseInstance).isNotNull(); |
| 1778 | + Assertions.assertThat(caseInstance.getId()).isEqualTo(caseInstance3.getId()); |
| 1779 | + |
| 1780 | + // Test value-only matching |
| 1781 | + caseInstance = cmmnRuntimeService.createCaseInstanceQuery().variableValueEquals(someUUID3).singleResult(); |
| 1782 | + Assertions.assertThat(caseInstance).isNotNull(); |
| 1783 | + Assertions.assertThat(caseInstance.getId()).isEqualTo(caseInstance3.getId()); |
| 1784 | + |
| 1785 | + caseInstances = cmmnRuntimeService.createCaseInstanceQuery().variableValueEquals(someUUID).list(); |
| 1786 | + Assertions.assertThat(caseInstances) |
| 1787 | + .extracting(CaseInstance::getId) |
| 1788 | + .containsExactlyInAnyOrder( |
| 1789 | + caseInstance1.getId(), |
| 1790 | + caseInstance2.getId() |
| 1791 | + ); |
| 1792 | + |
| 1793 | + caseInstance = cmmnRuntimeService.createCaseInstanceQuery().variableValueEquals(unexistingUUID).singleResult(); |
| 1794 | + Assertions.assertThat(caseInstance).isNull(); |
| 1795 | + } |
| 1796 | + |
1729 | 1797 | @Test
|
1730 | 1798 | public void testLocalization() {
|
1731 | 1799 | CaseInstance createdCase = cmmnRuntimeService.createCaseInstanceBuilder()
|
|
0 commit comments