Program: 172213
Project: 172213
Buggy source:
/** 
 * Ensures that the tag scope is correctly updated when folders and content are created, updated, moved, copied and deleted.
 */
public void testTagScopeUpdateViaNodePolicies() throws Exception {
  NodeRef tagFoo1=taggingService.createTag(folder.getStoreRef(),"String_Node_Str");
  NodeRef tagFoo2=taggingService.createTag(folder.getStoreRef(),"String_Node_Str");
  NodeRef tagFoo3=taggingService.createTag(folder.getStoreRef(),"String_Node_Str");
  NodeRef tagBar=taggingService.createTag(folder.getStoreRef(),"String_Node_Str");
  List<NodeRef> tagsList=new ArrayList<NodeRef>();
  List<ChildAssociationRef> children;
  Map<QName,Serializable> container1Props=new HashMap<QName,Serializable>(1);
  container1Props.put(ContentModel.PROP_NAME,"String_Node_Str");
  NodeRef container1=this.nodeService.createNode(folder,ContentModel.ASSOC_CONTAINS,ContentModel.ASSOC_CHILDREN,ContentModel.TYPE_FOLDER,container1Props).getChildRef();
  assertEquals(0,nodeService.getChildAssocs(container1).size());
  Map<QName,Serializable> container2Props=new HashMap<QName,Serializable>(1);
  container1Props.put(ContentModel.PROP_NAME,"String_Node_Str");
  NodeRef container2=this.nodeService.createNode(folder,ContentModel.ASSOC_CONTAINS,ContentModel.ASSOC_CHILDREN,ContentModel.TYPE_FOLDER,container2Props).getChildRef();
  assertEquals(0,nodeService.getChildAssocs(container2).size());
  taggingService.addTagScope(container1);
  taggingService.addTagScope(container2);
  waitForActionExecution();
  assertTrue(taggingService.isTagScope(container1));
  assertTrue(taggingService.isTagScope(container2));
  assertEquals(0,taggingService.findTagScope(container1).getTags().size());
  assertEquals(0,taggingService.findTagScope(container2).getTags().size());
  Map<QName,Serializable> taggedFolderProps=new HashMap<QName,Serializable>(1);
  taggedFolderProps.put(ContentModel.PROP_NAME,"String_Node_Str");
  NodeRef taggedFolder=this.nodeService.createNode(container1,ContentModel.ASSOC_CONTAINS,ContentModel.ASSOC_CHILDREN,ContentModel.TYPE_FOLDER,taggedFolderProps).getChildRef();
  waitForActionExecution();
  assertEquals(0,taggingService.findTagScope(container1).getTags().size());
  assertEquals(0,taggingService.findTagScope(container2).getTags().size());
  assertEquals(1,nodeService.getChildAssocs(container1).size());
  taggedFolderProps.clear();
  tagsList.clear();
  tagsList.add(tagFoo1);
  tagsList.add(tagFoo3);
  taggedFolderProps.put(ContentModel.ASPECT_TAGGABLE,(Serializable)tagsList);
  this.nodeService.addProperties(taggedFolder,taggedFolderProps);
  waitForActionExecution();
  assertEquals(2,taggingService.findTagScope(container1).getTags().size());
  assertEquals(0,taggingService.findTagScope(container2).getTags().size());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  tagsList.clear();
  tagsList.add(tagFoo1);
  tagsList.add(tagFoo2);
  Map<QName,Serializable> taggedDocProps=new HashMap<QName,Serializable>(1);
  taggedDocProps.put(ContentModel.PROP_NAME,"String_Node_Str");
  taggedDocProps.put(ContentModel.ASPECT_TAGGABLE,(Serializable)tagsList);
  NodeRef taggedDoc=this.nodeService.createNode(taggedFolder,ContentModel.ASSOC_CONTAINS,ContentModel.ASPECT_TAGGABLE,ContentModel.TYPE_CONTENT,taggedDocProps).getChildRef();
  waitForActionExecution();
  assertEquals(3,taggingService.findTagScope(container1).getTags().size());
  assertEquals(0,taggingService.findTagScope(container2).getTags().size());
  assertEquals(2,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,nodeService.getChildAssocs(container1).size());
  assertEquals(1,nodeService.getChildAssocs(taggedFolder).size());
  taggedDocProps.clear();
  taggedDocProps.put(ContentModel.PROP_NAME,"String_Node_Str");
  assertEquals(0,nodeService.getChildAssocs(container2).size());
  NodeRef taggedDoc2=this.nodeService.createNode(container2,ContentModel.ASSOC_CONTAINS,ContentModel.ASPECT_TAGGABLE,ContentModel.TYPE_CONTENT,taggedDocProps).getChildRef();
  waitForActionExecution();
  assertEquals(3,taggingService.findTagScope(container1).getTags().size());
  assertEquals(0,taggingService.findTagScope(container2).getTags().size());
  assertEquals(1,nodeService.getChildAssocs(container2).size());
  copyService.copy(taggedDoc,taggedDoc2);
  waitForActionExecution();
  assertEquals(3,taggingService.findTagScope(container1).getTags().size());
  assertEquals(2,taggingService.findTagScope(container2).getTags().size());
  assertEquals(2,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,nodeService.getChildAssocs(container2).size());
  assertEquals(container2,nodeService.getPrimaryParent(taggedDoc2).getParentRef());
  assertEquals(container2,taggingService.findTagScope(taggedDoc2).getNodeRef());
  NodeRef taggedFolder2=copyService.copy(taggedFolder,container2,ContentModel.ASSOC_CONTAINS,ContentModel.ASSOC_CHILDREN,true);
  waitForActionExecution();
  assertEquals(3,taggingService.findTagScope(container1).getTags().size());
  assertEquals(3,taggingService.findTagScope(container2).getTags().size());
  assertEquals(2,nodeService.getChildAssocs(container2).size());
  assertEquals(1,nodeService.getChildAssocs(taggedFolder2).size());
  assertEquals(2,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(3,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(2,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  tagsList.clear();
  tagsList.add(tagBar);
  taggedDocProps.clear();
  taggedDocProps.put(ContentModel.ASPECT_TAGGABLE,(Serializable)tagsList);
  taggedDocProps.put(ContentModel.PROP_NAME,"String_Node_Str");
  this.nodeService.addProperties(taggedDoc,taggedDocProps);
  waitForActionExecution();
  assertEquals(3,taggingService.findTagScope(container1).getTags().size());
  assertEquals(3,taggingService.findTagScope(container2).getTags().size());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(3,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(2,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  taggedDoc=nodeService.moveNode(taggedDoc,container2,ContentModel.ASSOC_CONTAINS,ContentModel.ASPECT_TAGGABLE).getChildRef();
  waitForActionExecution();
  assertEquals(2,taggingService.findTagScope(container1).getTags().size());
  assertEquals(4,taggingService.findTagScope(container2).getTags().size());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(3,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(2,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,nodeService.getChildAssocs(container1).size());
  assertEquals(3,nodeService.getChildAssocs(container2).size());
  assertEquals(container2,nodeService.getPrimaryParent(taggedDoc).getParentRef());
  assertEquals(container2,taggingService.findTagScope(taggedDoc).getNodeRef());
  assertEquals(container2,nodeService.getPrimaryParent(taggedDoc2).getParentRef());
  assertEquals(container2,taggingService.findTagScope(taggedDoc2).getNodeRef());
  nodeService.deleteNode(taggedDoc);
  waitForActionExecution();
  assertEquals(2,taggingService.findTagScope(container1).getTags().size());
  assertEquals(3,taggingService.findTagScope(container2).getTags().size());
  assertEquals(1,nodeService.getChildAssocs(container1).size());
  assertEquals(2,nodeService.getChildAssocs(container2).size());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(3,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(2,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(null,taggingService.findTagScope(container2).getTag("String_Node_Str"));
  nodeService.deleteNode(taggedDoc2);
  waitForActionExecution();
  assertEquals(2,taggingService.findTagScope(container1).getTags().size());
  assertEquals(3,taggingService.findTagScope(container2).getTags().size());
  assertEquals(1,nodeService.getChildAssocs(container1).size());
  assertEquals(1,nodeService.getChildAssocs(container2).size());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(2,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(null,taggingService.findTagScope(container2).getTag("String_Node_Str"));
  nodeService.deleteNode(taggedFolder);
  waitForActionExecution();
  assertEquals(0,taggingService.findTagScope(container1).getTags().size());
  assertEquals(3,taggingService.findTagScope(container2).getTags().size());
  assertEquals(0,nodeService.getChildAssocs(container1).size());
  assertEquals(1,nodeService.getChildAssocs(container2).size());
  assertEquals(2,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  nodeService.deleteNode(taggedFolder2);
  waitForActionExecution();
  assertEquals(0,taggingService.findTagScope(container1).getTags().size());
  assertEquals(0,taggingService.findTagScope(container2).getTags().size());
  assertEquals(0,nodeService.getChildAssocs(container1).size());
  assertEquals(0,nodeService.getChildAssocs(container2).size());
}

Fixed version (ground truth):
/** 
 * Ensures that the tag scope is correctly updated when folders and content are created, updated, moved, copied and deleted.
 */
public void testTagScopeUpdateViaNodePolicies() throws Exception {
  NodeRef tagFoo1=taggingService.createTag(folder.getStoreRef(),"String_Node_Str");
  NodeRef tagFoo2=taggingService.createTag(folder.getStoreRef(),"String_Node_Str");
  NodeRef tagFoo3=taggingService.createTag(folder.getStoreRef(),"String_Node_Str");
  NodeRef tagBar=taggingService.createTag(folder.getStoreRef(),"String_Node_Str");
  List<NodeRef> tagsList=new ArrayList<NodeRef>();
  List<ChildAssociationRef> children;
  Map<QName,Serializable> container1Props=new HashMap<QName,Serializable>(1);
  container1Props.put(ContentModel.PROP_NAME,"String_Node_Str");
  NodeRef container1=this.nodeService.createNode(folder,ContentModel.ASSOC_CONTAINS,ContentModel.ASSOC_CHILDREN,ContentModel.TYPE_FOLDER,container1Props).getChildRef();
  assertEquals(0,nodeService.getChildAssocs(container1).size());
  Map<QName,Serializable> container2Props=new HashMap<QName,Serializable>(1);
  container1Props.put(ContentModel.PROP_NAME,"String_Node_Str");
  NodeRef container2=this.nodeService.createNode(folder,ContentModel.ASSOC_CONTAINS,ContentModel.ASSOC_CHILDREN,ContentModel.TYPE_FOLDER,container2Props).getChildRef();
  assertEquals(0,nodeService.getChildAssocs(container2).size());
  taggingService.addTagScope(container1);
  taggingService.addTagScope(container2);
  waitForActionExecution();
  assertTrue(taggingService.isTagScope(container1));
  assertTrue(taggingService.isTagScope(container2));
  assertEquals(0,taggingService.findTagScope(container1).getTags().size());
  assertEquals(0,taggingService.findTagScope(container2).getTags().size());
  Map<QName,Serializable> taggedFolderProps=new HashMap<QName,Serializable>(1);
  taggedFolderProps.put(ContentModel.PROP_NAME,"String_Node_Str");
  NodeRef taggedFolder=this.nodeService.createNode(container1,ContentModel.ASSOC_CONTAINS,ContentModel.ASSOC_CHILDREN,ContentModel.TYPE_FOLDER,taggedFolderProps).getChildRef();
  waitForActionExecution();
  assertEquals(0,taggingService.findTagScope(container1).getTags().size());
  assertEquals(0,taggingService.findTagScope(container2).getTags().size());
  assertEquals(1,nodeService.getChildAssocs(container1).size());
  taggedFolderProps.clear();
  tagsList.clear();
  tagsList.add(tagFoo1);
  tagsList.add(tagFoo3);
  taggedFolderProps.put(ContentModel.ASPECT_TAGGABLE,(Serializable)tagsList);
  this.nodeService.addProperties(taggedFolder,taggedFolderProps);
  waitForActionExecution();
  assertEquals(2,taggingService.findTagScope(container1).getTags().size());
  assertEquals(0,taggingService.findTagScope(container2).getTags().size());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  tagsList.clear();
  tagsList.add(tagFoo1);
  tagsList.add(tagFoo2);
  Map<QName,Serializable> taggedDocProps=new HashMap<QName,Serializable>(1);
  taggedDocProps.put(ContentModel.PROP_NAME,"String_Node_Str");
  taggedDocProps.put(ContentModel.ASPECT_TAGGABLE,(Serializable)tagsList);
  NodeRef taggedDoc=this.nodeService.createNode(taggedFolder,ContentModel.ASSOC_CONTAINS,ContentModel.ASPECT_TAGGABLE,ContentModel.TYPE_CONTENT,taggedDocProps).getChildRef();
  waitForActionExecution();
  assertEquals(3,taggingService.findTagScope(container1).getTags().size());
  assertEquals(0,taggingService.findTagScope(container2).getTags().size());
  assertEquals(2,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,nodeService.getChildAssocs(container1).size());
  assertEquals(1,nodeService.getChildAssocs(taggedFolder).size());
  UserTransaction tx=this.transactionService.getUserTransaction();
  tx.begin();
  NodeRef checkedOutDoc=checkOutCheckInService.checkout(taggedDoc);
  tx.commit();
  waitForActionExecution();
  assertEquals(3,taggingService.findTagScope(container1).getTags().size());
  assertEquals(0,taggingService.findTagScope(container2).getTags().size());
  assertEquals(3,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(2,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,nodeService.getChildAssocs(container1).size());
  assertEquals(2,nodeService.getChildAssocs(taggedFolder).size());
  tx=this.transactionService.getUserTransaction();
  tx.begin();
  checkOutCheckInService.checkin(checkedOutDoc,null);
  tx.commit();
  waitForActionExecution();
  assertEquals(3,taggingService.findTagScope(container1).getTags().size());
  assertEquals(0,taggingService.findTagScope(container2).getTags().size());
  assertEquals(2,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,nodeService.getChildAssocs(container1).size());
  assertEquals(1,nodeService.getChildAssocs(taggedFolder).size());
  taggedDocProps.clear();
  taggedDocProps.put(ContentModel.PROP_NAME,"String_Node_Str");
  assertEquals(0,nodeService.getChildAssocs(container2).size());
  NodeRef taggedDoc2=this.nodeService.createNode(container2,ContentModel.ASSOC_CONTAINS,ContentModel.ASPECT_TAGGABLE,ContentModel.TYPE_CONTENT,taggedDocProps).getChildRef();
  waitForActionExecution();
  assertEquals(3,taggingService.findTagScope(container1).getTags().size());
  assertEquals(0,taggingService.findTagScope(container2).getTags().size());
  assertEquals(1,nodeService.getChildAssocs(container2).size());
  copyService.copy(taggedDoc,taggedDoc2);
  waitForActionExecution();
  assertEquals(3,taggingService.findTagScope(container1).getTags().size());
  assertEquals(2,taggingService.findTagScope(container2).getTags().size());
  assertEquals(2,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,nodeService.getChildAssocs(container2).size());
  assertEquals(container2,nodeService.getPrimaryParent(taggedDoc2).getParentRef());
  assertEquals(container2,taggingService.findTagScope(taggedDoc2).getNodeRef());
  NodeRef taggedFolder2=copyService.copy(taggedFolder,container2,ContentModel.ASSOC_CONTAINS,ContentModel.ASSOC_CHILDREN,true);
  waitForActionExecution();
  assertEquals(3,taggingService.findTagScope(container1).getTags().size());
  assertEquals(3,taggingService.findTagScope(container2).getTags().size());
  assertEquals(2,nodeService.getChildAssocs(container2).size());
  assertEquals(1,nodeService.getChildAssocs(taggedFolder2).size());
  assertEquals(2,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(3,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(2,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  tagsList.clear();
  tagsList.add(tagBar);
  taggedDocProps.clear();
  taggedDocProps.put(ContentModel.ASPECT_TAGGABLE,(Serializable)tagsList);
  taggedDocProps.put(ContentModel.PROP_NAME,"String_Node_Str");
  this.nodeService.addProperties(taggedDoc,taggedDocProps);
  waitForActionExecution();
  assertEquals(3,taggingService.findTagScope(container1).getTags().size());
  assertEquals(3,taggingService.findTagScope(container2).getTags().size());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(3,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(2,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  taggedDoc=nodeService.moveNode(taggedDoc,container2,ContentModel.ASSOC_CONTAINS,ContentModel.ASPECT_TAGGABLE).getChildRef();
  waitForActionExecution();
  assertEquals(2,taggingService.findTagScope(container1).getTags().size());
  assertEquals(4,taggingService.findTagScope(container2).getTags().size());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(3,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(2,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,nodeService.getChildAssocs(container1).size());
  assertEquals(3,nodeService.getChildAssocs(container2).size());
  assertEquals(container2,nodeService.getPrimaryParent(taggedDoc).getParentRef());
  assertEquals(container2,taggingService.findTagScope(taggedDoc).getNodeRef());
  assertEquals(container2,nodeService.getPrimaryParent(taggedDoc2).getParentRef());
  assertEquals(container2,taggingService.findTagScope(taggedDoc2).getNodeRef());
  nodeService.deleteNode(taggedDoc);
  waitForActionExecution();
  assertEquals(2,taggingService.findTagScope(container1).getTags().size());
  assertEquals(3,taggingService.findTagScope(container2).getTags().size());
  assertEquals(1,nodeService.getChildAssocs(container1).size());
  assertEquals(2,nodeService.getChildAssocs(container2).size());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(3,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(2,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(null,taggingService.findTagScope(container2).getTag("String_Node_Str"));
  nodeService.deleteNode(taggedDoc2);
  waitForActionExecution();
  assertEquals(2,taggingService.findTagScope(container1).getTags().size());
  assertEquals(3,taggingService.findTagScope(container2).getTags().size());
  assertEquals(1,nodeService.getChildAssocs(container1).size());
  assertEquals(1,nodeService.getChildAssocs(container2).size());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container1).getTag("String_Node_Str").getCount());
  assertEquals(2,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(null,taggingService.findTagScope(container2).getTag("String_Node_Str"));
  nodeService.deleteNode(taggedFolder);
  waitForActionExecution();
  assertEquals(0,taggingService.findTagScope(container1).getTags().size());
  assertEquals(3,taggingService.findTagScope(container2).getTags().size());
  assertEquals(0,nodeService.getChildAssocs(container1).size());
  assertEquals(1,nodeService.getChildAssocs(container2).size());
  assertEquals(2,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  assertEquals(1,taggingService.findTagScope(container2).getTag("String_Node_Str").getCount());
  nodeService.deleteNode(taggedFolder2);
  waitForActionExecution();
  assertEquals(0,taggingService.findTagScope(container1).getTags().size());
  assertEquals(0,taggingService.findTagScope(container2).getTags().size());
  assertEquals(0,nodeService.getChildAssocs(container1).size());
  assertEquals(0,nodeService.getChildAssocs(container2).size());
}