From 53b96edb2b5bb6eb00d96ebfee9d236bc50b9ccd Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Thu, 10 Nov 2016 17:01:19 +0000 Subject: [PATCH] Merged 5.2.N (5.2.1) to HEAD (5.2) 132589 jkaabimofrad: Merged WEBAPP-API (5.2.1) to 5.2.N (5.2.1) 132578 jkaabimofrad: APPSREPO-59: Modified the model validator to ignore the TYPE_NAMESPACE when there is a DIFF_DELETED type. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@132682 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rest/api/tests/TestCustomProperty.java | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/source/test-java/org/alfresco/rest/api/tests/TestCustomProperty.java b/source/test-java/org/alfresco/rest/api/tests/TestCustomProperty.java index a37ba0e654..c9f73eb824 100644 --- a/source/test-java/org/alfresco/rest/api/tests/TestCustomProperty.java +++ b/source/test-java/org/alfresco/rest/api/tests/TestCustomProperty.java @@ -403,8 +403,49 @@ public class TestCustomProperty extends BaseCustomModelApiTest put("cmm/" + modelName + "/types", typeName, RestApiUtil.toJsonAsString(deletePropTypePayload), deletePropTwoTypeQS, 404); //Not found } - // Note: at the time of writing, we can't delete a property of an active model, as ModelValidatorImpl.validateIndexedProperty depends on Solr + /* + * APPSREPO-59: delete the last property of a Type / Aspect for an active model + */ + // Activate the model + CustomModel statusPayload = new CustomModel(); + statusPayload.setStatus(ModelStatus.ACTIVE); + put("cmm", modelName, RestApiUtil.toJsonAsString(statusPayload), SELECT_STATUS_QS, 200); + // Delete aspect's property two - model is active + { + setRequestContext(customModelAdmin); + final String deletePropTwoAspectQS = getPropDeleteUpdateQS(aspectPropNameTwo, true); + CustomAspect deletePropAspectPayload = new CustomAspect(); + deletePropAspectPayload.setName(aspectName); + + // Delete as a Model Administrator + put("cmm/" + modelName + "/aspects", aspectName, RestApiUtil.toJsonAsString(deletePropAspectPayload), deletePropTwoAspectQS, 200); + + // Check the property has been deleted + response = getSingle("cmm/" + modelName + "/aspects", aspectName, 200); + returnedAspect = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), CustomAspect.class); + assertEquals("Property two should have been deleted.", 0, returnedAspect.getProperties().size()); + + put("cmm/" + modelName + "/aspects", aspectName, RestApiUtil.toJsonAsString(deletePropAspectPayload), deletePropTwoAspectQS, 404); //Not found + } + + // Delete type's property one - model is active + { + final String deletePropOneTypeQS = getPropDeleteUpdateQS(typePropNameOne, true); + + CustomType deletePropTypePayload = new CustomType(); + deletePropTypePayload.setName(typeName); + + // Delete as a Model Administrator + put("cmm/" + modelName + "/types", typeName, RestApiUtil.toJsonAsString(deletePropTypePayload), deletePropOneTypeQS, 200); + + // Check the property has been deleted + response = getSingle("cmm/" + modelName + "/types", typeName, 200); + returnedType = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), CustomType.class); + assertEquals("Property one should have been deleted.", 0, returnedType.getProperties().size()); + + put("cmm/" + modelName + "/types", typeName, RestApiUtil.toJsonAsString(deletePropTypePayload), deletePropOneTypeQS, 404); //Not found + } } @Test