@Test public void testAdditionalParameters() { Map<String, String> queryParameters = getCompleteQueryParameters(); given() .queryParams(queryParameters) .expect() .statusCode(Status.OK.getStatusCode()) .when() .get(DECISION_REQUIREMENTS_DEFINITION_QUERY_URL); // assert query invocation verify(mockedQuery).decisionRequirementsDefinitionId(queryParameters.get("decisionRequirementsDefinitionId")); verify(mockedQuery).decisionRequirementsDefinitionCategory(queryParameters.get("category")); verify(mockedQuery).decisionRequirementsDefinitionCategoryLike(queryParameters.get("categoryLike")); verify(mockedQuery).decisionRequirementsDefinitionName(queryParameters.get("name")); verify(mockedQuery).decisionRequirementsDefinitionNameLike(queryParameters.get("nameLike")); verify(mockedQuery).decisionRequirementsDefinitionKey(queryParameters.get("key")); verify(mockedQuery).decisionRequirementsDefinitionKeyLike(queryParameters.get("keyLike")); verify(mockedQuery).decisionRequirementsDefinitionVersion(Integer.parseInt(queryParameters.get("version"))); verify(mockedQuery).latestVersion(); verify(mockedQuery).decisionRequirementsDefinitionResourceName(queryParameters.get("resourceName")); verify(mockedQuery).decisionRequirementsDefinitionResourceNameLike(queryParameters.get("resourceNameLike")); verify(mockedQuery).deploymentId(queryParameters.get("deploymentId")); verify(mockedQuery).list(); }
@Test public void queryByLatestWithoutTenantId() { // deploy a second version without tenant id testRule.deploy(DMN); DecisionRequirementsDefinitionQuery query = repositoryService .createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(DECISION_REQUIREMENTS_DEFINITION_KEY) .latestVersion() .withoutTenantId(); assertThat(query.count(), is(1L)); DecisionRequirementsDefinition DecisionRequirementsDefinition = query.singleResult(); assertThat(DecisionRequirementsDefinition.getTenantId(), is(nullValue())); assertThat(DecisionRequirementsDefinition.getVersion(), is(2)); }
@Override protected void applyFilters(DecisionRequirementsDefinitionQuery query) { if (decisionRequirementsDefinitionId != null) { query.decisionRequirementsDefinitionId(decisionRequirementsDefinitionId); query.decisionRequirementsDefinitionIdIn(decisionRequirementsDefinitionIdIn.toArray(new String[decisionRequirementsDefinitionIdIn.size()])); query.decisionRequirementsDefinitionCategory(category); query.decisionRequirementsDefinitionCategoryLike(categoryLike); query.decisionRequirementsDefinitionName(name); query.decisionRequirementsDefinitionNameLike(nameLike); query.deploymentId(deploymentId); query.decisionRequirementsDefinitionKey(key); query.decisionRequirementsDefinitionKeyLike(keyLike); query.decisionRequirementsDefinitionResourceName(resourceName); query.decisionRequirementsDefinitionResourceNameLike(resourceNameLike); query.decisionRequirementsDefinitionVersion(version); query.latestVersion(); query.tenantIdIn(tenantIds.toArray(new String[tenantIds.size()]));
@Override public DecisionRequirementsDefinitionResource getDecisionRequirementsDefinitionByKey(String decisionRequirementsDefinitionKey) { DecisionRequirementsDefinition decisionRequirementsDefinition = getProcessEngine().getRepositoryService() .createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(decisionRequirementsDefinitionKey) .withoutTenantId().latestVersion().singleResult(); if (decisionRequirementsDefinition == null) { String errorMessage = String.format("No matching decision requirements definition with key: %s and no tenant-id", decisionRequirementsDefinitionKey); throw new RestException(Status.NOT_FOUND, errorMessage); } else { return getDecisionRequirementsDefinitionById(decisionRequirementsDefinition.getId()); } }
@Override public DecisionRequirementsDefinitionResource getDecisionRequirementsDefinitionByKeyAndTenantId(String decisionRequirementsDefinitionKey, String tenantId) { DecisionRequirementsDefinition decisionRequirementsDefinition = getProcessEngine().getRepositoryService() .createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(decisionRequirementsDefinitionKey) .tenantIdIn(tenantId).latestVersion().singleResult(); if (decisionRequirementsDefinition == null) { String errorMessage = String.format("No matching decision requirements definition with key: %s and tenant-id: %s", decisionRequirementsDefinitionKey, tenantId); throw new RestException(Status.NOT_FOUND, errorMessage); } else { return getDecisionRequirementsDefinitionById(decisionRequirementsDefinition.getId()); } }
@Test public void queryByLatestWithTenantIds() { // deploy a second version for tenant one testRule.deployForTenant(TENANT_ONE, DMN); DecisionRequirementsDefinitionQuery query = repositoryService .createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(DECISION_REQUIREMENTS_DEFINITION_KEY) .latestVersion() .tenantIdIn(TENANT_ONE, TENANT_TWO) .orderByTenantId() .asc(); // one definition for each tenant assertThat(query.count(), is(2L)); Map<String, DecisionRequirementsDefinition> definitionsForTenant = getDecisionRequirementsDefinitionsForTenant(query.list()); assertThat(definitionsForTenant.get(TENANT_ONE).getVersion(), is(2)); assertThat(definitionsForTenant.get(TENANT_TWO).getVersion(), is(1)); }
protected void setUpRuntimeData(DecisionRequirementsDefinition mockDecisionRequirementsDefinition) throws FileNotFoundException, URISyntaxException { repositoryServiceMock = mock(RepositoryService.class); when(processEngine.getRepositoryService()).thenReturn(repositoryServiceMock); when(repositoryServiceMock.getDecisionRequirementsDefinition(eq(MockProvider.EXAMPLE_DECISION_REQUIREMENTS_DEFINITION_ID))).thenReturn(mockDecisionRequirementsDefinition); when(repositoryServiceMock.getDecisionRequirementsModel(eq(MockProvider.EXAMPLE_DECISION_REQUIREMENTS_DEFINITION_ID))).thenReturn(createMockDecisionRequirementsDefinitionDmnXml()); when(repositoryServiceMock.getDecisionRequirementsDiagram(MockProvider.EXAMPLE_DECISION_REQUIREMENTS_DEFINITION_ID)).thenReturn(createMockDecisionRequirementsDiagram()); decisionRequirementsDefinitionQueryMock = mock(DecisionRequirementsDefinitionQuery.class); when(decisionRequirementsDefinitionQueryMock.decisionRequirementsDefinitionKey(MockProvider.EXAMPLE_DECISION_REQUIREMENTS_DEFINITION_KEY)).thenReturn(decisionRequirementsDefinitionQueryMock); when(decisionRequirementsDefinitionQueryMock.tenantIdIn(anyString())).thenReturn(decisionRequirementsDefinitionQueryMock); when(decisionRequirementsDefinitionQueryMock.withoutTenantId()).thenReturn(decisionRequirementsDefinitionQueryMock); when(decisionRequirementsDefinitionQueryMock.latestVersion()).thenReturn(decisionRequirementsDefinitionQueryMock); when(decisionRequirementsDefinitionQueryMock.singleResult()).thenReturn(mockDecisionRequirementsDefinition); when(decisionRequirementsDefinitionQueryMock.list()).thenReturn(Collections.singletonList(mockDecisionRequirementsDefinition)); when(repositoryServiceMock.createDecisionRequirementsDefinitionQuery()).thenReturn(decisionRequirementsDefinitionQueryMock); }
@Test public void queryByLatestWithTenantIdsIncludeDefinitionsWithoutTenantId() { // deploy a second version without tenant id testRule.deploy(DMN); // deploy a third version for tenant one testRule.deployForTenant(TENANT_ONE, DMN); testRule.deployForTenant(TENANT_ONE, DMN); DecisionRequirementsDefinitionQuery query = repositoryService .createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(DECISION_REQUIREMENTS_DEFINITION_KEY) .latestVersion() .tenantIdIn(TENANT_ONE, TENANT_TWO) .includeDecisionRequirementsDefinitionsWithoutTenantId(); assertThat(query.count(), is(3L)); Map<String, DecisionRequirementsDefinition> definitionsForTenant = getDecisionRequirementsDefinitionsForTenant(query.list()); assertThat(definitionsForTenant.get(TENANT_ONE).getVersion(), is(3)); assertThat(definitionsForTenant.get(TENANT_TWO).getVersion(), is(1)); assertThat(definitionsForTenant.get(null).getVersion(), is(2)); }
@Test public void queryByLatestNoTenantIdSet() { // deploy a second version for tenant one testRule.deployForTenant(TENANT_ONE, DMN); DecisionRequirementsDefinitionQuery query = repositoryService .createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(DECISION_REQUIREMENTS_DEFINITION_KEY) .latestVersion(); // one definition for each tenant assertThat(query.count(), is(3L)); Map<String, DecisionRequirementsDefinition> definitionsForTenant = getDecisionRequirementsDefinitionsForTenant(query.list()); assertThat(definitionsForTenant.get(TENANT_ONE).getVersion(), is(2)); assertThat(definitionsForTenant.get(TENANT_TWO).getVersion(), is(1)); assertThat(definitionsForTenant.get(null).getVersion(), is(1)); }
@Test public void decisionRequirementsDefinitionRetrievalByNonExistingKey() { String nonExistingKey = "aNonExistingRequirementsDefinitionKey"; when(repositoryServiceMock.createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(nonExistingKey)) .thenReturn(decisionRequirementsDefinitionQueryMock); when(decisionRequirementsDefinitionQueryMock.singleResult()).thenReturn(null); given() .pathParam("key", nonExistingKey) .then() .expect() .statusCode(Status.NOT_FOUND.getStatusCode()).contentType(ContentType.JSON) .body("type", is(RestException.class.getSimpleName())) .body("message", containsString("No matching decision requirements definition with key: " + nonExistingKey)) .when() .get(SINGLE_DECISION_REQUIREMENTS_DEFINITION_KEY_URL); }
@Test public void querySortingDesc() { // exclude definitions without tenant id because of database-specific ordering List<DecisionRequirementsDefinition> DecisionRequirementsDefinitions = repositoryService .createDecisionRequirementsDefinitionQuery() .tenantIdIn(TENANT_ONE, TENANT_TWO) .orderByTenantId() .desc() .list(); assertThat(DecisionRequirementsDefinitions.size(), is(2)); assertThat(DecisionRequirementsDefinitions.get(0).getTenantId(), is(TENANT_TWO)); assertThat(DecisionRequirementsDefinitions.get(1).getTenantId(), is(TENANT_ONE)); }
@Test public void querySortingAsc() { // exclude definitions without tenant id because of database-specific ordering List<DecisionRequirementsDefinition> DecisionRequirementsDefinitions = repositoryService .createDecisionRequirementsDefinitionQuery() .tenantIdIn(TENANT_ONE, TENANT_TWO) .orderByTenantId() .asc() .list(); assertThat(DecisionRequirementsDefinitions.size(), is(2)); assertThat(DecisionRequirementsDefinitions.get(0).getTenantId(), is(TENANT_ONE)); assertThat(DecisionRequirementsDefinitions.get(1).getTenantId(), is(TENANT_TWO)); }
@Test public void queryByKey() { DecisionRequirementsDefinitionQuery query = repositoryService .createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(DECISION_REQUIREMENTS_DEFINITION_KEY); // one definition for each tenant assertThat(query.count(), is(3L)); query = repositoryService .createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(DECISION_REQUIREMENTS_DEFINITION_KEY) .withoutTenantId(); // one definition without tenant id assertThat(query.count(), is(1L)); query = repositoryService .createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(DECISION_REQUIREMENTS_DEFINITION_KEY) .tenantIdIn(TENANT_ONE); // one definition for tenant one assertThat(query.count(), is(1L)); }
@Test public void orderByDecisionRequirementsDefinitionVersion() { List<DecisionRequirementsDefinition> decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionVersion().asc().list(); assertThat(decisionRequirementsDefinitions.size(), is(4)); assertThat(decisionRequirementsDefinitions.get(0).getVersion(), is(1)); assertThat(decisionRequirementsDefinitions.get(1).getVersion(), is(1)); assertThat(decisionRequirementsDefinitions.get(2).getVersion(), is(1)); assertThat(decisionRequirementsDefinitions.get(3).getVersion(), is(2)); decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionVersion().desc().list(); assertThat(decisionRequirementsDefinitions.get(0).getVersion(), is(2)); assertThat(decisionRequirementsDefinitions.get(1).getVersion(), is(1)); assertThat(decisionRequirementsDefinitions.get(2).getVersion(), is(1)); }
@Test public void orderByDecisionRequirementsDefinitionCategory() { List<DecisionRequirementsDefinition> decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionCategory().asc().list(); assertThat(decisionRequirementsDefinitions.size(), is(4)); assertThat(decisionRequirementsDefinitions.get(0).getCategory(), is("test-drd-1")); assertThat(decisionRequirementsDefinitions.get(1).getCategory(), is("test-drd-2")); assertThat(decisionRequirementsDefinitions.get(2).getCategory(), is("test-drd-2")); assertThat(decisionRequirementsDefinitions.get(3).getCategory(), is("xyz_")); decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionCategory().desc().list(); assertThat(decisionRequirementsDefinitions.get(0).getCategory(), is("xyz_")); assertThat(decisionRequirementsDefinitions.get(1).getCategory(), is("test-drd-2")); assertThat(decisionRequirementsDefinitions.get(2).getCategory(), is("test-drd-2")); assertThat(decisionRequirementsDefinitions.get(3).getCategory(), is("test-drd-1")); }
@Test public void orderByDeploymentId() { List<DecisionRequirementsDefinition> decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDeploymentId().asc().list(); assertThat(decisionRequirementsDefinitions.size(), is(4)); assertThat(decisionRequirementsDefinitions.get(0).getDeploymentId(), is(firstDeploymentId)); assertThat(decisionRequirementsDefinitions.get(1).getDeploymentId(), is(firstDeploymentId)); assertThat(decisionRequirementsDefinitions.get(2).getDeploymentId(), is(secondDeploymentId)); assertThat(decisionRequirementsDefinitions.get(3).getDeploymentId(), is(thirdDeploymentId)); decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDeploymentId().desc().list(); assertThat(decisionRequirementsDefinitions.get(0).getDeploymentId(), is(thirdDeploymentId)); assertThat(decisionRequirementsDefinitions.get(1).getDeploymentId(), is(secondDeploymentId)); assertThat(decisionRequirementsDefinitions.get(2).getDeploymentId(), is(firstDeploymentId)); assertThat(decisionRequirementsDefinitions.get(3).getDeploymentId(), is(firstDeploymentId)); }
@Test public void orderByDecisionRequirementsDefinitionKey() { List<DecisionRequirementsDefinition> decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionKey().asc().list(); assertThat(decisionRequirementsDefinitions.size(), is(4)); assertThat(decisionRequirementsDefinitions.get(0).getKey(), is("dish")); assertThat(decisionRequirementsDefinitions.get(1).getKey(), is("dish")); assertThat(decisionRequirementsDefinitions.get(2).getKey(), is("score")); assertThat(decisionRequirementsDefinitions.get(3).getKey(), is("xyz")); decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionKey().desc().list(); assertThat(decisionRequirementsDefinitions.get(0).getKey(), is("xyz")); assertThat(decisionRequirementsDefinitions.get(1).getKey(), is("score")); assertThat(decisionRequirementsDefinitions.get(2).getKey(), is("dish")); assertThat(decisionRequirementsDefinitions.get(3).getKey(), is("dish")); }
@Test public void orderByDecisionRequirementsDefinitionName() { List<DecisionRequirementsDefinition> decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionName().asc().list(); assertThat(decisionRequirementsDefinitions.size(), is(4)); assertThat(decisionRequirementsDefinitions.get(0).getName(), is("Dish")); assertThat(decisionRequirementsDefinitions.get(1).getName(), is("Dish")); assertThat(decisionRequirementsDefinitions.get(2).getName(), is("Score")); assertThat(decisionRequirementsDefinitions.get(3).getName(), is("Xyz")); decisionRequirementsDefinitions = repositoryService.createDecisionRequirementsDefinitionQuery() .orderByDecisionRequirementsDefinitionName().desc().list(); assertThat(decisionRequirementsDefinitions.get(0).getName(), is("Xyz")); assertThat(decisionRequirementsDefinitions.get(1).getName(), is("Score")); assertThat(decisionRequirementsDefinitions.get(2).getName(), is("Dish")); assertThat(decisionRequirementsDefinitions.get(3).getName(), is("Dish")); }
private DecisionRequirementsDefinitionQuery createMockQuery(List<DecisionRequirementsDefinition> mockedDefinitions) { DecisionRequirementsDefinitionQuery query = mock(DecisionRequirementsDefinitionQuery.class); when(query.list()).thenReturn(mockedDefinitions); when(query.count()).thenReturn((long) mockedDefinitions.size()); when(processEngine.getRepositoryService().createDecisionRequirementsDefinitionQuery()).thenReturn(query); return query; }
@Test public void queryByDecisionRequirementsDefinitionId() { DecisionRequirementsDefinitionQuery query = repositoryService.createDecisionRequirementsDefinitionQuery(); assertThat(query.decisionRequirementsDefinitionId("notExisting").count(), is(0L)); assertThat(query.decisionRequirementsDefinitionId(decisionRequirementsDefinitionId).count(), is(1L)); assertThat(query.singleResult().getKey(), is("score")); }