You need to sign in to do that
Don't have an account?
sriram k 15
I have written apex code When User is Deactivated then Assigned Permission Set should be deleted before update by using trigger? Test code coverage is done and unable to pass Assertion. Can some one help me how to pass Assertion statement?
Trigger Class >>>>>>>>
rigger TriggerOnUser on User (before update) {
HandlerClass_User.userisDeactivated(trigger.new, trigger.oldMap);
}
Handler Class >>>>>>>>>
public class HandlerClass_User {
public static void userisDeactivated(list<User> newUser, Map<Id,User>OldMap){
set<Id> setOfDeactivedIds = new Set<Id>();
Map<Id,list<PermissionSetAssignment>> userPSAMap = new Map<Id,list<PermissionSetAssignment>>();
list<PermissionSetAssignment> PSAuserDelete = new list<PermissionSetAssignment>();
for(User u : newUser){
if(u.IsActive == false && u.IsActive != OldMap.get(u.Id).IsActive){
setOfDeactivedIds.add(u.id);
system.debug('Deactived User Id is'+u.id);
}
}
list<PermissionSetAssignment> listOfPremissionSetAssign = [SELECT Id, AssigneeId,PermissionSetId,PermissionSet.Name from PermissionSetAssignment
Where AssigneeId IN : setOfDeactivedIds AND Permissionset.IsOwnedByProfile =false];
List<PermissionSetLicenseAssign> permSetsLiceUsers = [SELECT Id, AssigneeId from PermissionSetLicenseAssign where AssigneeId IN: setOfDeactivedIds];
List<GroupMember> grpMemUsers = [SELECT Id, GroupId, UserOrGroupId FROM GroupMember WHERE UserorGroupId IN : setOfDeactivedIds];
for(User u:newUser){
if(u.IsActive == false && u.IsActive != OldMap.get(u.Id).IsActive){
for(PermissionSetAssignment psa : listOfPremissionSetAssign){
if(psa.AssigneeId == u.id){
if(userPSAMap.containsKey(u.id)){
userPSAMap.get(u.id).add(psa);
}
else{
userPSAMap.put(u.id, new list<PermissionSetAssignment> {psa});
}
}
}
}
}
system.debug('Get user Id and PSA'+userPSAMap);
for(User u: newUser){
if(u.IsActive == false && u.IsActive != OldMap.get(u.Id).IsActive){
if(userPSAMap.containsKey(u.id)){
PSAuserDelete.addAll(userPSAMap.get(u.id));
}
}
}
system.debug('List Of PSA to Delete for Users'+PSAuserDelete);
if(!PSAuserDelete.isEmpty()){
delete PSAuserDelete;
}
}
}
Test Class >>>>>>>>>>>>
@isTest
public class TestHandlerClass_User {
@isTest
public static void TestDeactiveUser(){
Profile p = [SELECT Id,Name FROM Profile where Name='sys Admin'];
UserRole u1 =[SELECT Id,Name FROM UserRole where Name='Manager'];
User u = new User(UserName='kallam.salesforce132@gmail.com', Alias = 'rkall', Email='kallam.salesforce12@gmail.com',
EmailEncodingKey='UTF-8', LastName='Kallam', LanguageLocaleKey='en_US',
LocaleSidKey='en_US',ProfileId = p.Id,UserRoleId =u1.id,TimeZoneSidKey='America/Los_Angeles',isActive =true);
// insert u;
list<User> lu = new List<User>();
lu.add(u);
insert lu;
system.debug('list users'+lu);
system.debug('list users'+lu[0].id);
Id AssiId = lu[0].id;
Map<Id,User> Mu = new Map<Id,User>();
Mu.put(lu[0].id, lu[0]);
system.debug('Map Key'+ Mu.keySet());
list<PermissionSetAssignment> lpsa = [SELECT Id, AssigneeId, PermissionSetId,PermissionSet.Name FROM PermissionSetAssignment where PermissionSet.Name like '%Assign%'];
List<PermissionSetAssignment> psl = new List<PermissionSetAssignment>();
PermissionSetAssignment psa =new PermissionSetAssignment(PermissionSetId = lpsa[0].PermissionSetId, AssigneeId = lu[0].Id);
psl.add(psa);
insert psl;
lu[0].IsActive= false;
update lu;
// HandlerClass_User hc = new HandlerClass_User();
HandlerClass_User.userisDeactivated(lu,Mu);
List<PermissionSetAssignment> lpsa1 = [SELECT Id, AssigneeId,PermissionSetId,PermissionSet.Name from PermissionSetAssignment where AssigneeId =: Mu.keySet() ];
system.debug('****'+lpsa1.size());
System.assertEquals(lpsa1.isEmpty(), true);
}
}
rigger TriggerOnUser on User (before update) {
HandlerClass_User.userisDeactivated(trigger.new, trigger.oldMap);
}
Handler Class >>>>>>>>>
public class HandlerClass_User {
public static void userisDeactivated(list<User> newUser, Map<Id,User>OldMap){
set<Id> setOfDeactivedIds = new Set<Id>();
Map<Id,list<PermissionSetAssignment>> userPSAMap = new Map<Id,list<PermissionSetAssignment>>();
list<PermissionSetAssignment> PSAuserDelete = new list<PermissionSetAssignment>();
for(User u : newUser){
if(u.IsActive == false && u.IsActive != OldMap.get(u.Id).IsActive){
setOfDeactivedIds.add(u.id);
system.debug('Deactived User Id is'+u.id);
}
}
list<PermissionSetAssignment> listOfPremissionSetAssign = [SELECT Id, AssigneeId,PermissionSetId,PermissionSet.Name from PermissionSetAssignment
Where AssigneeId IN : setOfDeactivedIds AND Permissionset.IsOwnedByProfile =false];
List<PermissionSetLicenseAssign> permSetsLiceUsers = [SELECT Id, AssigneeId from PermissionSetLicenseAssign where AssigneeId IN: setOfDeactivedIds];
List<GroupMember> grpMemUsers = [SELECT Id, GroupId, UserOrGroupId FROM GroupMember WHERE UserorGroupId IN : setOfDeactivedIds];
for(User u:newUser){
if(u.IsActive == false && u.IsActive != OldMap.get(u.Id).IsActive){
for(PermissionSetAssignment psa : listOfPremissionSetAssign){
if(psa.AssigneeId == u.id){
if(userPSAMap.containsKey(u.id)){
userPSAMap.get(u.id).add(psa);
}
else{
userPSAMap.put(u.id, new list<PermissionSetAssignment> {psa});
}
}
}
}
}
system.debug('Get user Id and PSA'+userPSAMap);
for(User u: newUser){
if(u.IsActive == false && u.IsActive != OldMap.get(u.Id).IsActive){
if(userPSAMap.containsKey(u.id)){
PSAuserDelete.addAll(userPSAMap.get(u.id));
}
}
}
system.debug('List Of PSA to Delete for Users'+PSAuserDelete);
if(!PSAuserDelete.isEmpty()){
delete PSAuserDelete;
}
}
}
Test Class >>>>>>>>>>>>
@isTest
public class TestHandlerClass_User {
@isTest
public static void TestDeactiveUser(){
Profile p = [SELECT Id,Name FROM Profile where Name='sys Admin'];
UserRole u1 =[SELECT Id,Name FROM UserRole where Name='Manager'];
User u = new User(UserName='kallam.salesforce132@gmail.com', Alias = 'rkall', Email='kallam.salesforce12@gmail.com',
EmailEncodingKey='UTF-8', LastName='Kallam', LanguageLocaleKey='en_US',
LocaleSidKey='en_US',ProfileId = p.Id,UserRoleId =u1.id,TimeZoneSidKey='America/Los_Angeles',isActive =true);
// insert u;
list<User> lu = new List<User>();
lu.add(u);
insert lu;
system.debug('list users'+lu);
system.debug('list users'+lu[0].id);
Id AssiId = lu[0].id;
Map<Id,User> Mu = new Map<Id,User>();
Mu.put(lu[0].id, lu[0]);
system.debug('Map Key'+ Mu.keySet());
list<PermissionSetAssignment> lpsa = [SELECT Id, AssigneeId, PermissionSetId,PermissionSet.Name FROM PermissionSetAssignment where PermissionSet.Name like '%Assign%'];
List<PermissionSetAssignment> psl = new List<PermissionSetAssignment>();
PermissionSetAssignment psa =new PermissionSetAssignment(PermissionSetId = lpsa[0].PermissionSetId, AssigneeId = lu[0].Id);
psl.add(psa);
insert psl;
lu[0].IsActive= false;
update lu;
// HandlerClass_User hc = new HandlerClass_User();
HandlerClass_User.userisDeactivated(lu,Mu);
List<PermissionSetAssignment> lpsa1 = [SELECT Id, AssigneeId,PermissionSetId,PermissionSet.Name from PermissionSetAssignment where AssigneeId =: Mu.keySet() ];
system.debug('****'+lpsa1.size());
System.assertEquals(lpsa1.isEmpty(), true);
}
}
Your ask appears duplicate of https://developer.salesforce.com/forums/ForumsMain?id=9062I000000gF6X
Please let me know if I can help with any other information.Thanks
Hi Swetha,
I can able to see the Test covergae but In Assertion unable to get Expected Result. Assertion is Failing. Can you please help on that.
System.assertEquals(lpsa1.isEmpty(), true);
Thanks ,
Sriram.