You need to sign in to do that
Don't have an account?
sumit d
test class is failing
Hi All,
my test class is given below:-
@isTest
private class CaseTriggerHelperTest {
static testmethod void firstResponseTest(){
String uniqueUserName = 'standarduser' + DateTime.now().getTime() + '@testorg.com';
// This code runs as the system user
Profile p = [SELECT Id FROM Profile WHERE Name='Standard User'];
User u = new User(Alias = 'standt', Email='standarduser@testorg.com',
EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US',
LocaleSidKey='en_US', ProfileId = p.Id,
TimeZoneSidKey='America/Los_Angeles',
UserName=uniqueUserName);
insert u;
Account accRecord = new Account(Name='testAccount', Phone='9012312325'); //Provide all required field and its value here.
Case caseRecord = new Case(Subject='TestRecord', Priority='High'); //Provide all required field and its value here.
System.runAs(u) {
insert accRecord;
Case newCaseRecord;
//For create event of trigger
caseRecord.AccountId = accRecord.Id;
insert caseRecord;
newCaseRecord = [SELECT Id, Priority FROM Case Where Id =: caseRecord.Id];
System.assertEquals(newCaseRecord.Priority,'High');
CaseTeamTemplate myCaseTeam = new CaseTeamTemplate();
myCaseTeam.Name = 'TestName';
myCaseTeam.Description = 'Test Description';
insert myCaseTeam;
//For update event of trigger
caseRecord.Priority = 'Low';
caseRecord.OwnerId = UserInfo.getUserId();
update caseRecord;
newCaseRecord = [SELECT Id, Priority FROM Case Where Id =: caseRecord.Id];
System.assertEquals(newCaseRecord.Priority,'Low');
}
}
}
Showing me this error
System.SObjectException: Field is not writeable: CaseTeamTemplate.Name
Any suggestion ?
How to solve this issue?
my test class is given below:-
@isTest
private class CaseTriggerHelperTest {
static testmethod void firstResponseTest(){
String uniqueUserName = 'standarduser' + DateTime.now().getTime() + '@testorg.com';
// This code runs as the system user
Profile p = [SELECT Id FROM Profile WHERE Name='Standard User'];
User u = new User(Alias = 'standt', Email='standarduser@testorg.com',
EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US',
LocaleSidKey='en_US', ProfileId = p.Id,
TimeZoneSidKey='America/Los_Angeles',
UserName=uniqueUserName);
insert u;
Account accRecord = new Account(Name='testAccount', Phone='9012312325'); //Provide all required field and its value here.
Case caseRecord = new Case(Subject='TestRecord', Priority='High'); //Provide all required field and its value here.
System.runAs(u) {
insert accRecord;
Case newCaseRecord;
//For create event of trigger
caseRecord.AccountId = accRecord.Id;
insert caseRecord;
newCaseRecord = [SELECT Id, Priority FROM Case Where Id =: caseRecord.Id];
System.assertEquals(newCaseRecord.Priority,'High');
CaseTeamTemplate myCaseTeam = new CaseTeamTemplate();
myCaseTeam.Name = 'TestName';
myCaseTeam.Description = 'Test Description';
insert myCaseTeam;
//For update event of trigger
caseRecord.Priority = 'Low';
caseRecord.OwnerId = UserInfo.getUserId();
update caseRecord;
newCaseRecord = [SELECT Id, Priority FROM Case Where Id =: caseRecord.Id];
System.assertEquals(newCaseRecord.Priority,'Low');
}
}
}
Showing me this error
System.SObjectException: Field is not writeable: CaseTeamTemplate.Name
Any suggestion ?
How to solve this issue?
remove this line
myCaseTeam.Name = 'TestName';
I think its autofield generated. And anyway you are not asserting this, so why are you setting the value for Name.
In general this expection comes when adding value to formula fields and auto format fields.
its showing this error:-System.TypeException: DML operation INSERT not allowed on CaseTeamTemplate
public without sharing class CaseTriggerHelper {
public static List<Case> newCases = new List<Case>();
public static List<Case> oldCases = new List<Case>();
public static Map<Id, Case> newMapCases = new Map<Id, Case>();
public static Map<Id, Case> oldMapCases = new Map<Id, Case>();
public static void NotifyComplianceTeam(){
if( runNotifyComplianceTeam ) {
List<CaseTeamTemplate> cttList = [SELECT id, Name
FROM CaseTeamTemplate
where ( Name = 'PTM Case - Service'
OR Name = 'PTM - Compliance' )
];
Id ptmServiceTeamId;
Id complianceServiceTeamId;
for( CaseTeamTemplate templateObj : cttList ) {
if( templateObj.Name == 'PTM Case - Service' ) {
ptmServiceTeamId = templateObj.Id;
}
else if( templateObj.Name == 'PTM - Compliance' ) {
complianceServiceTeamId = templateObj.Id;
}
}
Map<Id, CaseTeamTemplateMember> mapTemplateMembers
= new Map<Id, CaseTeamTemplateMember>( [SELECT id,
MemberId, TeamTemplateId
FROM CaseTeamTemplateMember
WHERE TeamTemplateId in: cttList
]
);
Map<Id, Set<Id>> mapTemplateIdToMembersIds = new Map<Id, Set<Id>>();
for( CaseTeamTemplateMember memberObj : mapTemplateMembers.values() ) {
Set<Id> memberIds = new Set<Id>();
if( mapTemplateIdToMembersIds.containsKey( memberObj.TeamTemplateId )) {
memberIds = mapTemplateIdToMembersIds.get( memberObj.TeamTemplateId );
}
memberIds.add( memberObj.MemberId );
mapTemplateIdToMembersIds.put( memberObj.TeamTemplateId, memberIds );
}
//Fetch CratedById from Case
List<Case> caseAllowedToSendEmail = new List<Case>();
for(Case caseObj : newCases ){
if( ptmServiceTeamId != null ) {
Set<Id> ptmServiceTeamMembers = mapTemplateIdToMembersIds.get( ptmServiceTeamId );
if( ptmServiceTeamMembers.contains( caseObj.createdById )) {
caseAllowedToSendEmail.add( caseObj );
}
}
}
if( caseAllowedToSendEmail.size() > 0 ) {
if(complianceServiceTeamId != null ){
List<Contact> defaultTargetObj = [ Select Id From Contact
Where LastName =: Label.Default_Email_Target_Contact ];
if( defaultTargetObj.size() > 0 ) {
Set<Id> complianceServiceTeamMembers = mapTemplateIdToMembersIds.get( complianceServiceTeamId );
EmailTemplate et = [Select id, subject, Body, DeveloperName from EmailTemplate where
DeveloperName = 'Notify_Compliance_Team_on_PTM_Service_Case_Create'
];
List<String> toAddresses = new List<String>();
for( User userObj : [ Select Id, Email From User
Where Id in: complianceServiceTeamMembers ]) {
toAddresses.add( userObj.Email );
}
// Create a master list to hold the emails
List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();
for( Case caseObj : caseAllowedToSendEmail ) {
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
// list of people who should get the email
List<Id> targetUsers = new List<Id>();
//targetUsers.addAll( complianceServiceTeamMembers );
mail.setTargetObjectId( defaultTargetObj.get( 0 ).Id );
toAddresses = new List<String> { 'sfdcadmin@sfdcconsultants.com' };
mail.setToAddresses( toAddresses );
mail.setWhatId( caseObj.Id );
// Set email is sent from
mail.setTemplateId( et.Id );
mail.setSaveAsActivity( false );
// Add your email to the master list
mails.add(mail);
// Send all emails in the master list
if(mails.size()>0){
Messaging.sendEmail(mails);
runNotifyComplianceTeam = false;
}
}
}
}
}
}
}
} i want to cover bold and italic part of this helper class?
Any idea?