You need to sign in to do that
Don't have an account?
Admin User 5417
Saleseforce code covrage is low (53%) and i dont know why
I'v created a class in sandbox, and it works well, but when i'm tring to deploy it to production, i get a low code covarage. I tried everything i know but cat find a solution, Heres the code, Any help?
public Class CandidateFileUploads_Ver1{ public String parentId ; public String idxVal {get;set;} public Map<String, Attachment> attachments {get;set;} public Map<String, Attachment> attachmentsDup {get;set;} public Boolean validateUser {get;set;} public String multipulDocs {get;set;} public String userMessage {get;set;} private static final Map<String, String> descriptionNameMap = new Map<String, String>{ 'Upload a scan of the Passport'=>'Passport', 'Upload a Resume (CV)'=>'Resume (CV)'}; private static final Map<String, String> descriptionCheckFieldMap = new Map<String, String>{ 'Upload a scan of the Passport'=>'Passport_Attached__c', 'Upload a Resume (CV)'=>'CV_Attached__c'}; public CandidateFileUploads_Ver1(ApexPages.StandardController controller){ idxVal = ''; validateUser = true; multipulDocs = System.Label.multiple_docs; userMessage = ''; checkUserValid(); attachments = new Map<String, Attachment>(); attachmentsDup = new Map<String, Attachment>(); parentId = System.currentPageReference().getParameters().get('Id'); //parentId = '0034E00000FVJzA'; List<Attachment> existingAttachments = fetchAllAttachments(parentId);//get all attachements for thew user for(String key :descriptionNameMap.keySet()){ String kokp = descriptionCheckFieldMap.get(key); attachments.put(key.toLowerCase(), new Attachment(parentId=parentId, Description=key, body=null,Name = kokp )) ; } for(Attachment attach :existingAttachments){ attach.body = null; attachments.put(attach.Description.toLowerCase(), attach); } } public void checkUserValid(){ String hours = System.Label.hours; String whitelist = System.Label.whitelist; ID pId = System.currentPageReference().getParameters().get('Id'); Boolean validateUser = true; String userMessage; Contact parenter = new Contact(Id=pId); // Validate Proccess status: get proccess string status String getStatus = parenter.Process_Status__c; String[] whitelistArr = whitelist.split(',');// split proccess string Boolean checkWhiteList = false; for(String val : whitelistArr){ if(val == getStatus) { checkWhiteList = true; } } if(validateUser != checkWhiteList){ validateUser = false; userMessage = System.Label.error_not_premitted; return; } //Validate Dates //Datetime getLinktimestamp = (Datetime) contactSObject.get('linktimestamp__c'); Datetime getLinktimestamp = parenter.linktimestamp__c; Datetime getValidTime = getLinktimestamp.addHours(Integer.valueof(hours.trim())); //add 48 hours Datetime timeNow = System.now(); if(getValidTime < timeNow){//if if more then 48 hours validateUser = false; userMessage = System.Label.error_expired; return; } } public Datetime getLinktimestamp(){ ID pId = System.currentPageReference().getParameters().get('Id'); Datetime accts = [SELECT linktimestamp__c FROM Contact WHERE Id=:pId].linktimestamp__c; return accts; } public List<Contact> contactObj(){ ID pId = System.currentPageReference().getParameters().get('Id'); sObject mySObject =[SELECT linktimestamp__c,Process_Status__c FROM Contact WHERE Id=:pId]; //Datetime llli = s.linktimestamp__c; String strObjectName = String.valueOf( mySObject.get('linktimestamp__c') ); List<Contact> obj = [SELECT linktimestamp__c,Process_Status__c FROM Contact WHERE Id=:pId]; return obj; } public void uploadAttachment(){ List<Attachment> uploads = new List<Attachment>() ; List<Attachment> deletes = new List<Attachment>() ; try{ for(integer i = 0 ; i < attachments.values().size() ; i++){ Attachment attach = attachments.values()[i] ; if(attach.parentId == NULL){ attach.parentId = System.currentPageReference().getParameters().get('Id'); } //this is a file that was uploaded now if(attach.body != NULL){ //remove current attachement before uploading a new one if(attach.Id != NULL){ deletes.add(attachments.values().remove(i)); } attach.Name = renameFile(attach.Name, attach.Description); uploads.add(attach) ; } } if(!deletes.isEmpty()){ delete deletes ; } if(!uploads.isEmpty()){ for(Attachment atchmnt :uploads){ atchmnt.Id = null; } insert uploads; Contact parent = new Contact(Id=parentId); for(Attachment attach :getUpdatedAttachments(uploads).values()){ attach.body = null; attachments.put(attach.Description.toLowerCase(), attach); parent.put(descriptionCheckFieldMap.get(attach.Description), true); } update parent; ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.info,'Attachment upload Successfully'); ApexPages.addMessage(myMsg); } } catch(exception e){ ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'An Error occured when uploading attachment'); ApexPages.addMessage(myMsg); } } public void removeRow(){ Attachment a = attachments.get(idxVal.toLowerCase()); Contact parent = new Contact(Id=parentId); parent.put(descriptionCheckFieldMap.get(a.Description), false); delete a; update parent; system.debug('attachments before: ' + attachments); attachments.put(a.Description.toLowerCase(), new Attachment(parentId = parentId, description = a.description, body=null)); system.debug('attachments after: ' + attachments); } private static String renameFile(String fileName, String description){ String newName = descriptionNameMap.get(description); if(String.isNotBlank(fileName) && fileName.contains('.')){ newName += fileName.substring(fileName.lastIndexOf('.'), fileName.length()); } return newName; } private static Map<String,Attachment> getUpdatedAttachments(List<Attachment> attachList){ Map<String,Attachment> attMap = new Map<String,Attachment>(); for(Attachment att : [SELECT Id,Name,Description FROM Attachment WHERE Id = :attachList]){ attMap.put(att.Description.toLowerCase(), att) ; } return attMap; } public List<Attachment> fetchAllAttachments(String parentId){ return [SELECT Id,Name,Description,parentId FROM Attachment WHERE ParentId =: parentId AND Description IN :descriptionNameMap.keySet()]; } }
Do you have a Test Class with unit tests for the code you referenced in your post? If not, you need to create one. Salesforce requires that at least 75% of your Apex code be covered by unit tests. Here is a link that might help you: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_qs_test.htm
I hope this helps.
Jason