function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
R@v!R@v! 

Help me to write test class for below code thanks in advance...

public class Onboarding_OffboardingCtr {
    public string sFirstName{get;set;}
    public string sLastName {get;set;}
    public string sEmail {get;set;}
    public date dFirstDate{get;set;}
    Public date dLAstdate{get;set;}
    public boolean sSalesforceUser{get;set;}
    public boolean bTeamWorkUser{get;set;}
    public boolean bOnboarding {get;set;}
    public boolean bOffboarding {get;set;}
    public profile sProfileId{get;set;}
    public  Id profile {get;set;}
    
    public Onboarding_OffboardingCtr(){
        sFirstName = null;
        sLastName = null;
        sEmail = null;
        dFirstDate  = null;
        dLAstdate  = null;
        sSalesforceUser = false;
        bTeamWorkUser = false;
    }
    
    Public pageReference Submit(){
        try{
            if(sSalesforceUser == true){
                sProfileId = [SELECT Id from profile Where Name = 'Force.com -App Sub. Custom' LIMIT 1];
                if(sProfileId != null)
                    profile = sProfileId.id;
                List<User> lstUser = [SELECT Id FROM User WHERE Email =: sEmail];
                if(lstUser.size()==0){
                    system.debug(sSalesforceUser);
                    system.debug(sProfileId);
                    system.debug(sFirstName);
                    system.debug(sLastName);
                    User newUser = new User();
                    newUser.Username= sEmail;
                    if(validateEmail(sEmail) == true)
                    newUser.Email = sEmail;
                    else
                    ApexPages.addMessage(new ApexPages.message(ApexPages.Severity.Error, 'Check your email'));
                    newUser.Lastname = sLastName;
                    newUser.Firstname = sFirstName;
                    newUser.ProfileId = profile;
                    newUser.CommunityNickname = sFirstName;
                    newUser.Alias = sLastName;
                    newUser.TimeZoneSidKey = 'GMT';
                    newUser.LocaleSidKey = 'en_US';
                    newUser.EmailEncodingKey = 'ISO-8859-1';
                    newUser.LanguageLocaleKey = 'en_US';
                    newUser.UserPermissionsMobileUser = false;
                   insert newUser;
                   ApexPages.addMessage(new ApexPages.message(ApexPages.Severity.CONFIRM, 'Salesforce user successfully create'));
                }
            }
            
            if(bTeamWorkUser==true){
                List<User> lstUser = [SELECT Id, Email FROM User WHERE Email =:sEmail AND IsActive= true];
                if(lstUser.size()>0){
                    string sUserEmail = lstUser.get(0).Email;
                    string bodyRes = TPM_Common.retrieveItem('people.json?emailaddress='+sUserEmail);
                    if(bodyRes != null){
                        Map<String, Object> root = (Map<String, Object>)JSON.deserializeUntyped(bodyRes);
                        if(root.containsKey('people') && root.get('people')!=''){
                            List<Object> items = (List<Object>)root.get('people');
                            if(items.size() >0){
                                System.Debug('rootSize : '+items.size());
                                System.Debug('root : '+root.containsKey('people'));
                                System.Debug('root : '+root.get('people'));
                                system.debug('---------------------------------'+bodyRes);
                                ApexPages.addMessage(new ApexPages.message(ApexPages.Severity.ERROR, 'User already exist in TeamWorkPM'));
                            }
                            else{
                                string body = '{"person": {"first-name": "'+sFirstName+'","last-name": "'+sLastName+'","email-address": "'+sEmail+'","user-type": "account","user-name": "'+sEmail+'","company-id": "1446","dateFormat": "dd/mm/yyyy","sendWelcomeEmail": "no","receiveDailyReports": "no","autoGiveProjectAccess": "yes","userLanguage": "EN","administrator": "yes","canAddProjects": "yes","timezoneId" : "15","notifyOnTaskComplete":"no","userReceiveNotifyWarnings":"no","notify-on-added-as-follower":"yes","notify-on-status-update":"yes"}}';
                                string sTeamWorkPM_Id = TPM_Common.createItem(body, 'people.json');
                                lstUser.get(0).TeamworkPM_User_ID__c = sTeamWorkPM_Id;
                                update lstUser;
                                ApexPages.addMessage(new ApexPages.message(ApexPages.Severity.CONFIRM, 'TeamWork user successfully create'));
                            }
                        }
                      }
                  }
              else{
                   ApexPages.addMessage(new ApexPages.message(ApexPages.Severity.ERROR, 'No Salesforce User with this Email Id'));
              }
            }
            
            if(bOnboarding == true){
                string sDate = TPM_Common.formatDate(dFirstDate);
                List<Tasklist_Template__c> lstTaskTemp = [SELECT Id, Description__c, TeamworkPM_Template_ID__c FROM  Tasklist_Template__c WHERE Phase_Template__r.Associated_Phase__c = 'Onboarding'];
                if(lstTaskTemp.size()>0 && lstTaskTemp != null){
                    for(Tasklist_Template__c oTemplate : lstTaskTemp){
                        string body = '{"todo-list": {"name": "OnBoarding Tasklist","private": false,"pinned": true,"milestone-id": "","description": "'+oTemplate.Description__c+'","todo-list-template-id":  "'+oTemplate.TeamworkPM_Template_ID__c+'","todo-list-template-start-date":"'+sDate+'"}}';
                        string sTeamWorkPM_Id = TPM_Common.createItem(body, 'projects/94222/tasklists.json');
                        ApexPages.addMessage(new ApexPages.message(ApexPages.Severity.CONFIRM, 'OnBoarding Tasklist has been successfully create'));
                    }
                }            
            }
            
            if(bOffboarding == true){
                string sDate = TPM_Common.formatDate(dLAstdate);
                List<Tasklist_Template__c> lstTaskTemp = [SELECT Id, Description__c, TeamworkPM_Template_ID__c FROM  Tasklist_Template__c WHERE Phase_Template__r.Associated_Phase__c = 'Offboarding'];
                if(lstTaskTemp.size()>0 && lstTaskTemp != null){
                    for(Tasklist_Template__c oTemplate : lstTaskTemp){
                        string body = '{"todo-list": {"name": "OffBoarding Tasklist","private": false,"pinned": true,"milestone-id": "","description": "'+oTemplate.Description__c+'","todo-list-template-id":  "'+oTemplate.TeamworkPM_Template_ID__c+'","todo-list-template-start-date":"'+sDate+'"}}';
                        string sTeamWorkPM_Id = TPM_Common.createItem(body, 'projects/94222/tasklists.json');
                        ApexPages.addMessage(new ApexPages.message(ApexPages.Severity.CONFIRM, 'OffBoarding Tasklist has been successfully create'));
                    }
                }            
            }
          
        }
        catch (DMLException e)
        {
           if (e.getMessage().contains('LICENSE_LIMIT_EXCEEDED'))
           {
               ApexPages.addMessage(new ApexPages.message(ApexPages.Severity.Error, 'Your org does not have sufficient licenses'));
           }
           else
           {
              // rethrow the exception or take some other action here
              throw e;
           }
        }
            
        return null;
    }
    
    //Email validation 
    public static Boolean validateEmail(String email) {
    Boolean res = true;
    String emailRegex = '^[a-zA-Z0-9._|\\\\%#~`=?&/$^*!}{+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$'; // source: <a rel="nofollow" href="http://www.regular-expressions.info/email.html" target="_blank">http://www.regular-expressions.info/email.html</a>
    Pattern MyPattern = Pattern.compile(emailRegex);
    Matcher MyMatcher = MyPattern.matcher(email);

    if (!MyMatcher.matches()){ 
        res = false;
         ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, 'Check your email')); 
    }
    return res; 
    }  
}