private PropertyDescriptorEntity savePropertyDescriptorResourceType(ForeignableOwner editingOwner, Integer resourceTypeId, PropertyDescriptorEntity descriptor, String propertyTagsString) throws AMWException { ResourceTypeEntity attachedResourceType = entityManager.find(ResourceTypeEntity.class, resourceTypeId); ResourceTypeContextEntity resourceTypeContextEntity = attachedResourceType.getOrCreateContext(contextService.getGlobalResourceContextEntity()); return propertyDescriptorService.savePropertyDescriptorForOwner(editingOwner, resourceTypeContextEntity, descriptor, propertyTagEditingService.convertToTags(propertyTagsString), attachedResourceType); }
private PropertyDescriptorEntity savePropertyDescriptorResource(ForeignableOwner editingOwner, Integer resourceId, PropertyDescriptorEntity descriptor, String propertyTagsString) throws AMWException { ResourceEntity attachedResource = entityManager.find(ResourceEntity.class, Objects.requireNonNull(resourceId)); ResourceContextEntity resourceContext = attachedResource.getOrCreateContext(contextService.getGlobalResourceContextEntity()); ResourceTypeContextEntity resourceTypeContextEntity = attachedResource.getResourceType().getOrCreateContext(contextService.getGlobalResourceContextEntity()); List<String> duplicatePropertyDescriptorNames = propertyValidationService.getDuplicatePropertyDescriptors(resourceContext, resourceTypeContextEntity, descriptor); if (!duplicatePropertyDescriptorNames.isEmpty()) { throw new AMWException("Failure - duplicate propertydescriptors: " + duplicatePropertyDescriptorNames); } return propertyDescriptorService.savePropertyDescriptorForOwner(editingOwner, resourceContext, descriptor, propertyTagEditingService.convertToTags(propertyTagsString), attachedResource); }
List<PropertyTagEntity> tags = propertyTagEditingService.convertToTags(propertyTypeTagsString); propertyTagEditingService.updateTags(tags, result);
@Test public void savePropertyDescriptorForResourceTypeShouldSaveWithOwner() throws ForeignableOwnerViolationException, AMWException { // given ForeignableOwner changingOwner = ForeignableOwner.AMW; Integer resourceTypeId = 1; PropertyDescriptorEntity descriptor = new PropertyDescriptorEntityBuilder().withId(2).build(); String propertyTagsString = "propertyTagsString"; ResourceTypeEntity resourceTypeEntityMock = mock(ResourceTypeEntity.class); ResourceTypeContextEntity resourceTypeContextEntityMock = mock(ResourceTypeContextEntity.class); when(entityManagerMock.find(ResourceTypeEntity.class, resourceTypeId)).thenReturn(resourceTypeEntityMock); when(resourceTypeEntityMock.getOrCreateContext(any(ContextEntity.class))).thenReturn(resourceTypeContextEntityMock); when(permissionBoundaryMock.hasPermission(Permission.IGNORE_FOREIGNABLE_OWNER)).thenReturn(false); List<PropertyTagEntity> propertyTags = new ArrayList<>(); propertyTags.add(new PropertyTagEntity()); when(propertyTagEditingServiceMock.convertToTags(propertyTagsString)).thenReturn(propertyTags); // when editor.savePropertyDescriptorForResourceType(changingOwner, resourceTypeId, descriptor,descriptor.foreignableFieldHashCode(), propertyTagsString); // then verify(propertyDescriptorServiceMock).savePropertyDescriptorForOwner(changingOwner, resourceTypeContextEntityMock, descriptor, propertyTags, resourceTypeEntityMock); }
@Test public void savePropertyDescriptorForResourceShouldDelegatePropertyTagEditingService() throws ForeignableOwnerViolationException, AMWException { // given ForeignableOwner changingOwner = ForeignableOwner.AMW; Integer resourceId = 1; PropertyDescriptorEntity descriptor = new PropertyDescriptorEntityBuilder().withId(2).build(); String propertyTagsString = "propertyTagsString"; ResourceEntity resourceEntityMock = mock(ResourceEntity.class); ResourceTypeEntity resourceTypeEntityMock = mock(ResourceTypeEntity.class); ResourceContextEntity resourceContextEntityMock = mock(ResourceContextEntity.class); ResourceTypeContextEntity resourceTypeContextEntityMock = mock(ResourceTypeContextEntity.class); when(entityManagerMock.find(ResourceEntity.class, resourceId)).thenReturn(resourceEntityMock); when(resourceEntityMock.getOrCreateContext(any(ContextEntity.class))).thenReturn(resourceContextEntityMock); when(resourceEntityMock.getResourceType()).thenReturn(resourceTypeEntityMock); when(resourceTypeEntityMock.getOrCreateContext(any(ContextEntity.class))).thenReturn(resourceTypeContextEntityMock); List<String> emptyList = new ArrayList<>(); when(propertyValidationServiceMock.getDuplicatePropertyDescriptors(resourceContextEntityMock, resourceTypeContextEntityMock, descriptor)).thenReturn(emptyList); // when editor.savePropertyDescriptorForResource(changingOwner, resourceId, descriptor, descriptor.foreignableFieldHashCode(), propertyTagsString); // then verify(propertyTagEditingServiceMock).convertToTags(propertyTagsString); }
@Test public void savePropertyDescriptorForResourceShouldVerifyIfEditableByOwner() throws ForeignableOwnerViolationException, AMWException { // given ForeignableOwner changingOwner = ForeignableOwner.AMW; Integer resourceId = 1; PropertyDescriptorEntity descriptor = new PropertyDescriptorEntityBuilder().withId(2).build(); String propertyTagsString = "propertyTagsString"; ResourceEntity resourceEntityMock = mock(ResourceEntity.class); ResourceTypeEntity resourceTypeEntityMock = mock(ResourceTypeEntity.class); ResourceContextEntity resourceContextEntityMock = mock(ResourceContextEntity.class); ResourceTypeContextEntity resourceTypeContextEntityMock = mock(ResourceTypeContextEntity.class); when(entityManagerMock.find(ResourceEntity.class, resourceId)).thenReturn(resourceEntityMock); when(resourceEntityMock.getOrCreateContext(any(ContextEntity.class))).thenReturn(resourceContextEntityMock); when(resourceEntityMock.getResourceType()).thenReturn(resourceTypeEntityMock); when(resourceTypeEntityMock.getOrCreateContext(any(ContextEntity.class))).thenReturn(resourceTypeContextEntityMock); List<String> emptyList = new ArrayList<>(); when(propertyValidationServiceMock.getDuplicatePropertyDescriptors(resourceContextEntityMock, resourceTypeContextEntityMock, descriptor)).thenReturn(emptyList); when(permissionBoundaryMock.hasPermission(Permission.IGNORE_FOREIGNABLE_OWNER)).thenReturn(false); List<PropertyTagEntity> propertyTags = new ArrayList<>(); propertyTags.add(new PropertyTagEntity()); when(propertyTagEditingServiceMock.convertToTags(propertyTagsString)).thenReturn(propertyTags); // when editor.savePropertyDescriptorForResource(changingOwner, resourceId, descriptor, descriptor.foreignableFieldHashCode(), propertyTagsString); // then verify(foreignableServiceMock).verifyEditableByOwner(changingOwner, descriptor.foreignableFieldHashCode(),descriptor); }
@Test public void saveTestingPropertyDescriptorForResourceShouldSaveAsSystemOwner() throws ForeignableOwnerViolationException, AMWException { // given ForeignableOwner changingOwner = ForeignableOwner.AMW; Integer resourceId = 1; PropertyDescriptorEntity descriptor = new PropertyDescriptorEntityBuilder().withId(2).build(); String propertyTagsString = "propertyTagsString"; ResourceEntity resourceEntityMock = mock(ResourceEntity.class); ResourceTypeEntity resourceTypeEntityMock = mock(ResourceTypeEntity.class); ResourceContextEntity resourceContextEntityMock = mock(ResourceContextEntity.class); ResourceTypeContextEntity resourceTypeContextEntityMock = mock(ResourceTypeContextEntity.class); when(entityManagerMock.find(ResourceEntity.class, resourceId)).thenReturn(resourceEntityMock); when(resourceEntityMock.getOrCreateContext(any(ContextEntity.class))).thenReturn(resourceContextEntityMock); when(resourceEntityMock.getResourceType()).thenReturn(resourceTypeEntityMock); when(resourceTypeEntityMock.getOrCreateContext(any(ContextEntity.class))).thenReturn(resourceTypeContextEntityMock); List<String> emptyList = new ArrayList<>(); when(propertyValidationServiceMock.getDuplicatePropertyDescriptors(resourceContextEntityMock, resourceTypeContextEntityMock, descriptor)).thenReturn(emptyList); when(permissionBoundaryMock.hasPermission(Permission.IGNORE_FOREIGNABLE_OWNER)).thenReturn(false); List<PropertyTagEntity> propertyTags = new ArrayList<>(); propertyTags.add(new PropertyTagEntity()); when(propertyTagEditingServiceMock.convertToTags(propertyTagsString)).thenReturn(propertyTags); // when editor.saveTestingPropertyDescriptorForResource(resourceId, descriptor,descriptor.foreignableFieldHashCode(), propertyTagsString); // then verify(propertyDescriptorServiceMock).savePropertyDescriptorForOwner(ForeignableOwner.getSystemOwner(), resourceContextEntityMock, descriptor, propertyTags, resourceEntityMock); }
@Test public void saveTestingPropertyDescriptorForResourceTypeShouldSaveAsSystemOwner() throws ForeignableOwnerViolationException, AMWException { // given ForeignableOwner changingOwner = ForeignableOwner.AMW; Integer resourceTypeId = 1; PropertyDescriptorEntity descriptor = new PropertyDescriptorEntityBuilder().withId(2).build(); String propertyTagsString = "propertyTagsString"; ResourceTypeEntity resourceTypeEntityMock = mock(ResourceTypeEntity.class); ResourceTypeContextEntity resourceTypeContextEntityMock = mock(ResourceTypeContextEntity.class); when(entityManagerMock.find(ResourceTypeEntity.class, resourceTypeId)).thenReturn(resourceTypeEntityMock); when(resourceTypeEntityMock.getOrCreateContext(any(ContextEntity.class))).thenReturn(resourceTypeContextEntityMock); when(permissionBoundaryMock.hasPermission(Permission.IGNORE_FOREIGNABLE_OWNER)).thenReturn(false); List<PropertyTagEntity> propertyTags = new ArrayList<>(); propertyTags.add(new PropertyTagEntity()); when(propertyTagEditingServiceMock.convertToTags(propertyTagsString)).thenReturn(propertyTags); // when editor.saveTestingPropertyDescriptorForResourceType(resourceTypeId, descriptor,descriptor.foreignableFieldHashCode(), propertyTagsString); // then verify(propertyDescriptorServiceMock).savePropertyDescriptorForOwner(ForeignableOwner.getSystemOwner(), resourceTypeContextEntityMock, descriptor, propertyTags, resourceTypeEntityMock); }
@Test public void savePropertyDescriptorForResourceTypeShouldVerifyIfEditableByOwner() throws ForeignableOwnerViolationException, AMWException { // given ForeignableOwner changingOwner = ForeignableOwner.AMW; Integer resourceTypeId = 1; PropertyDescriptorEntity descriptor = new PropertyDescriptorEntityBuilder().withId(2).build(); String propertyTagsString = "propertyTagsString"; ResourceTypeEntity resourceTypeEntityMock = mock(ResourceTypeEntity.class); ResourceTypeContextEntity resourceTypeContextEntityMock = mock(ResourceTypeContextEntity.class); when(entityManagerMock.find(ResourceTypeEntity.class, resourceTypeId)).thenReturn(resourceTypeEntityMock); when(resourceTypeEntityMock.getOrCreateContext(any(ContextEntity.class))).thenReturn(resourceTypeContextEntityMock); when(permissionBoundaryMock.hasPermission(Permission.IGNORE_FOREIGNABLE_OWNER)).thenReturn(false); List<PropertyTagEntity> propertyTags = new ArrayList<>(); propertyTags.add(new PropertyTagEntity()); when(propertyTagEditingServiceMock.convertToTags(propertyTagsString)).thenReturn(propertyTags); // when editor.savePropertyDescriptorForResourceType(changingOwner, resourceTypeId, descriptor,descriptor.foreignableFieldHashCode(), propertyTagsString); // then verify(foreignableServiceMock).verifyEditableByOwner(changingOwner, descriptor.foreignableFieldHashCode(), descriptor ); }
@Test public void savePropertyDescriptorForResourceShouldSaveWithOwner() throws ForeignableOwnerViolationException, AMWException { // given ForeignableOwner changingOwner = ForeignableOwner.AMW; Integer resourceId = 1; PropertyDescriptorEntity descriptor = new PropertyDescriptorEntityBuilder().withId(2).build(); String propertyTagsString = "propertyTagsString"; ResourceEntity resourceEntityMock = mock(ResourceEntity.class); ResourceTypeEntity resourceTypeEntityMock = mock(ResourceTypeEntity.class); ResourceContextEntity resourceContextEntityMock = mock(ResourceContextEntity.class); ResourceTypeContextEntity resourceTypeContextEntityMock = mock(ResourceTypeContextEntity.class); when(entityManagerMock.find(ResourceEntity.class, resourceId)).thenReturn(resourceEntityMock); when(resourceEntityMock.getOrCreateContext(any(ContextEntity.class))).thenReturn(resourceContextEntityMock); when(resourceEntityMock.getResourceType()).thenReturn(resourceTypeEntityMock); when(resourceTypeEntityMock.getOrCreateContext(any(ContextEntity.class))).thenReturn(resourceTypeContextEntityMock); List<String> emptyList = new ArrayList<>(); when(propertyValidationServiceMock.getDuplicatePropertyDescriptors(resourceContextEntityMock, resourceTypeContextEntityMock, descriptor)).thenReturn(emptyList); when(permissionBoundaryMock.hasPermission(Permission.IGNORE_FOREIGNABLE_OWNER)).thenReturn(false); List<PropertyTagEntity> propertyTags = new ArrayList<>(); propertyTags.add(new PropertyTagEntity()); when(propertyTagEditingServiceMock.convertToTags(propertyTagsString)).thenReturn(propertyTags); // when editor.savePropertyDescriptorForResource(changingOwner, resourceId, descriptor, descriptor.foreignableFieldHashCode(), propertyTagsString); // then verify(propertyDescriptorServiceMock).savePropertyDescriptorForOwner(changingOwner, resourceContextEntityMock, descriptor, propertyTags, resourceEntityMock); }
@Test public void saveTestingPropertyDescriptorForResourceTypeShouldVerifyIfEditableBySystemOwner() throws ForeignableOwnerViolationException, AMWException { // given ForeignableOwner changingOwner = ForeignableOwner.AMW; Integer resourceTypeId = 1; PropertyDescriptorEntity descriptor = new PropertyDescriptorEntityBuilder().withId(2).build(); String propertyTagsString = "propertyTagsString"; ResourceTypeEntity resourceTypeEntityMock = mock(ResourceTypeEntity.class); ResourceTypeContextEntity resourceTypeContextEntityMock = mock(ResourceTypeContextEntity.class); when(entityManagerMock.find(ResourceTypeEntity.class, resourceTypeId)).thenReturn(resourceTypeEntityMock); when(resourceTypeEntityMock.getOrCreateContext(any(ContextEntity.class))).thenReturn(resourceTypeContextEntityMock); when(permissionBoundaryMock.hasPermission(Permission.IGNORE_FOREIGNABLE_OWNER)).thenReturn(false); List<PropertyTagEntity> propertyTags = new ArrayList<>(); propertyTags.add(new PropertyTagEntity()); when(propertyTagEditingServiceMock.convertToTags(propertyTagsString)).thenReturn(propertyTags); // when editor.saveTestingPropertyDescriptorForResourceType(resourceTypeId, descriptor,descriptor.foreignableFieldHashCode(), propertyTagsString); // then verify(foreignableServiceMock).verifyEditableByOwner(ForeignableOwner.getSystemOwner(), descriptor.foreignableFieldHashCode(), descriptor ); }
@Test public void saveTestingPropertyDescriptorForResourceShouldVerifyIfEditableBySystemOwner() throws ForeignableOwnerViolationException, AMWException { // given ForeignableOwner changingOwner = ForeignableOwner.AMW; Integer resourceId = 1; PropertyDescriptorEntity descriptor = new PropertyDescriptorEntityBuilder().withId(2).build(); String propertyTagsString = "propertyTagsString"; ResourceEntity resourceEntityMock = mock(ResourceEntity.class); ResourceTypeEntity resourceTypeEntityMock = mock(ResourceTypeEntity.class); ResourceContextEntity resourceContextEntityMock = mock(ResourceContextEntity.class); ResourceTypeContextEntity resourceTypeContextEntityMock = mock(ResourceTypeContextEntity.class); when(entityManagerMock.find(ResourceEntity.class, resourceId)).thenReturn(resourceEntityMock); when(resourceEntityMock.getOrCreateContext(any(ContextEntity.class))).thenReturn(resourceContextEntityMock); when(resourceEntityMock.getResourceType()).thenReturn(resourceTypeEntityMock); when(resourceTypeEntityMock.getOrCreateContext(any(ContextEntity.class))).thenReturn(resourceTypeContextEntityMock); List<String> emptyList = new ArrayList<>(); when(propertyValidationServiceMock.getDuplicatePropertyDescriptors(resourceContextEntityMock, resourceTypeContextEntityMock, descriptor)).thenReturn(emptyList); when(permissionBoundaryMock.hasPermission(Permission.IGNORE_FOREIGNABLE_OWNER)).thenReturn(false); List<PropertyTagEntity> propertyTags = new ArrayList<>(); propertyTags.add(new PropertyTagEntity()); when(propertyTagEditingServiceMock.convertToTags(propertyTagsString)).thenReturn(propertyTags); // when editor.saveTestingPropertyDescriptorForResource(resourceId, descriptor, descriptor.foreignableFieldHashCode(), propertyTagsString); // then verify(foreignableServiceMock).verifyEditableByOwner(ForeignableOwner.getSystemOwner(), descriptor.foreignableFieldHashCode(), descriptor); }
List<PropertyTagEntity> tags = propertyTagEditingService.convertToTags(propertyTypeTagsString); propertyTagEditingService.updateTags(tags,propertyTypeEntity);