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); }
public long countDefinitionsByKey(String definitionKey) { return repositoryService.createDecisionRequirementsDefinitionQuery().decisionRequirementsDefinitionKey(definitionKey).count(); }
@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()); } }
@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 queryByDecisionRequirementsDefinitionKey() { DecisionRequirementsDefinitionQuery query = repositoryService.createDecisionRequirementsDefinitionQuery(); assertThat(query.decisionRequirementsDefinitionKey("notExisting").count(), is(0L)); assertThat(query.decisionRequirementsDefinitionKey("score").count(), is(1L)); assertThat(query.singleResult().getKey(), is("score")); }
@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 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); }
@Override public String getLatestDefinitionIdByKey(RepositoryService repositoryService, String key) { return repositoryService.createDecisionRequirementsDefinitionQuery().decisionRequirementsDefinitionKey(key).latestVersion().singleResult().getId(); }
@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 nonExistingDecisionRequirementsDefinitionRetrievalByKeyAndTenantId() { String nonExistingKey = "aNonExistingDecisionDefinitionRequirementsDefinitionKey"; String nonExistingTenantId = "aNonExistingTenantId"; when(repositoryServiceMock.createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(nonExistingKey)) .thenReturn(decisionRequirementsDefinitionQueryMock); when(decisionRequirementsDefinitionQueryMock.singleResult()).thenReturn(null); given() .pathParam("key", nonExistingKey) .pathParam("tenant-id", nonExistingTenantId) .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 + " and tenant-id: " + nonExistingTenantId)) .when().get(SINGLE_DECISION_REQUIREMENTS_DEFINITION_KEY_AND_TENANT_ID_URL); }
@Test public void queryByLatest() { DecisionRequirementsDefinitionQuery query = repositoryService.createDecisionRequirementsDefinitionQuery(); assertThat(query.latestVersion().count(), is(3L)); assertThat(query.decisionRequirementsDefinitionKey("score").latestVersion().count(), is(1L)); }
@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)); }
@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)); }
@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)); }
@Before public void init() { repositoryService = engineRule.getRepositoryService(); firstDeploymentId = testRule.deploy(DRD_DISH_RESOURCE, DRD_SCORE_RESOURCE).getId(); secondDeploymentId = testRule.deploy(DRD_DISH_RESOURCE).getId(); thirdDeploymentId = testRule.deploy(DRD_XYZ_RESOURCE).getId(); decisionRequirementsDefinitionId = repositoryService .createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey("score") .singleResult() .getId(); }
@Test @Deployment(resources = { DMN_FILE }) public void getDecisionRequirementsDefinition() { String decisionRequirementsDefinitionId = repositoryService .createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(DEFINITION_KEY) .singleResult().getId(); // when authRule.init(scenario).withUser("userId").bindResource("decisionRequirementsDefinitionKey", DEFINITION_KEY).start(); DecisionRequirementsDefinition decisionRequirementsDefinition = repositoryService.getDecisionRequirementsDefinition(decisionRequirementsDefinitionId); if (authRule.assertScenario(scenario)) { assertNotNull(decisionRequirementsDefinition); } }
@Test @Deployment(resources = { DMN_FILE }) public void getDecisionRequirementsModel() { // given String decisionRequirementsDefinitionId = repositoryService .createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(DEFINITION_KEY) .singleResult().getId(); // when authRule.init(scenario).withUser("userId").bindResource("decisionRequirementsDefinitionKey", DEFINITION_KEY).start(); InputStream decisionRequirementsModel = repositoryService.getDecisionRequirementsModel(decisionRequirementsDefinitionId); if (authRule.assertScenario(scenario)) { assertNotNull(decisionRequirementsModel); } }
@Test @Deployment(resources = { DMN_FILE, DRD_FILE }) public void getDecisionRequirementsDiagram() { // given String decisionRequirementsDefinitionId = repositoryService .createDecisionRequirementsDefinitionQuery() .decisionRequirementsDefinitionKey(DEFINITION_KEY) .singleResult().getId(); // when authRule.init(scenario).withUser("userId").bindResource("decisionRequirementsDefinitionKey", DEFINITION_KEY).start(); InputStream decisionRequirementsDiagram = repositoryService.getDecisionRequirementsDiagram(decisionRequirementsDefinitionId); if (authRule.assertScenario(scenario)) { assertNotNull(decisionRequirementsDiagram); } } }