
Test Class :trigger ReparentComment on CaseComment (before insert) {
Map<String, Case> newCaseMap = new Map<String, Case>();
Set<Id> caseIds = new Set<Id>();
Map<Id, List<CaseComment>> ccMap = new Map<Id, List<CaseComment>>();
List<CaseComment> newCCList = new List<CaseComment>();
for(CaseComment cc : trigger.new)
{
caseIds.add(cc.ParentId);
List<CaseComment> ccList = ccMap.get(cc.ParentId);
if(ccList == null)
ccList = new List<CaseComment>();
ccList.add(cc);
ccMap.put(cc.ParentId, ccList);
}
for(Case c : [Select Id, Subject From Case Where Id in :caseIds Order by CreatedDate])
if(newCaseMap.containsKey(c.Subject))
for(CaseComment cc : ccMap.get(c.Id))
{
CaseComment newCC = cc.clone();
newCCList.add(newCC);
newCC.ParentId = newCaseMap.get(c.Subject).Id;
}
else
newCaseMap.put(c.Subject, c);
for(Case c : [Select Id, Subject From Case Where Subject in :newCaseMap.keySet() And Id not in :caseIds And Status != 'Closed'])
for(CaseComment cc : ccMap.get(newCaseMap.get(c.Subject).Id))
{
CaseComment newCC = cc.clone();
newCCList.add(newCC);
newCC.ParentId = c.Id;
}
insert newCCList;
}
@istest
public class TestReparentComment{
static TestMethod void testcomment(){
list<casecomment> ccomment = new list<casecomment>();
for(integer i=0;i<200;i++){
case c= new case(subject='RE:');
insert c
casecomment cc = new casecomment(cc.commentBody = c.Description)
Parentid=c.id;
insert cc;
List<case> insertedcases =[Select Name ,Subject,status from case Where Id in :c.Id Order by CreatedDate];
for(case c :insertedcases){
system.assertEquals(
'NotClosed',c.status);
}
}
}