Salesforce: getting a profile id by the name

It's the often case when we need to get a profile id for specified profiles and reuse it from different context. And usually it looks like this

Profile profileId = [SELECT Id FROM Profile WHERE Name = 'System Administrator'];

And you can find such code in a few different places of your codebase, it will be compounded if your team has more than 1 developer. Therefore such code should be moved to utility classes. Below you can find solution for getting a profile id by the name.

private static Map<String, Id> profileIdByName = new Map<String, Id>();
public static Id getProfileIdByName(String profileName) {
    if (String.isBlank(profileName)) {
        throw new CommonException(System.Label.MethodHasGotIncorrectArgument);
    }
    if (profileIdByName.containsKey(profileName)) {
        return profileIdByName.get(profileName);
    } else {
        try {
            Id profileId = [SELECT Id FROM Profile WHERE name =: profileName].Id;
            profileIdByName.put(profileName, profileId);
            return profileId;
        } catch (QueryException qEx) {
            System.debug('ERROR:' + qEx.getMessage() + ', in line' + qEx.getLineNumber());
            throw new CommonException(System.Label.ProfileNotFound);
        }
    }
    return null; // never fire
}

Unit tests:

@isTest static void getProfileIdByNameWhenArgumentIsEmpty() {
    try {
        Utils.getProfileIdByName();
    } catch(CommonException ex) {
        System.assertEquals(System.Label.MethodHasGotIncorrectArgument, ex.getMessage());
    }
}

@isTest static void getProfileIdByNameWhenProfileDoesNotExist() {
    try {
        Utils.getProfileIdByName('123321123');
    } catch(CommonException ex) {
        System.assertEquals(System.Label.ProfileNotFound, ex.getMessage());
    }
}

@isTest static void getProfileIdByNameWhenQueredExistingKey() {
    Id profileId = Utils.getProfileIdByName(GlobalConstants.PROFILE_SYSTEM_ADMINISTRATOR);
    System.assertEquals(1, Limits.getQueries());
    System.assertEquals([SELECT Id FROM Profile WHERE Name =:GlobalConstants.PROFILE_SYSTEM_ADMINISTRATOR].Id, profileId);
    Utils.getProfileIdByName(GlobalConstants.PROFILE_SYSTEM_ADMINISTRATOR);
    Utils.getProfileIdByName(GlobalConstants.PROFILE_SYSTEM_ADMINISTRATOR);
    System.assertEquals(2, Limits.getQueries());
}

@isTest static void getProfileIdByNameWhenQueredForFewKeys() {
    Id profileId = Utils.getProfileIdByName(GlobalConstants.PROFILE_SYSTEM_ADMINISTRATOR);
    System.assertEquals(1, Limits.getQueries());
    System.assertEquals([SELECT Id FROM Profile WHERE Name =:GlobalConstants.PROFILE_SYSTEM_ADMINISTRATOR].Id, profileId);
    System.assertEquals(2, Limits.getQueries());
    profileId = Utils.getProfileIdByName(GlobalConstants.PROFILE_BRANCH_STANDARD_PLATFORM_USER);
    System.assertEquals(3, Limits.getQueries());
    System.assertEquals([SELECT Id FROM Profile WHERE Name =:GlobalConstants.PROFILE_BRANCH_STANDARD_PLATFORM_USER].Id, profileId);
    System.assertEquals(4, Limits.getQueries());
    Utils.getProfileIdByName(GlobalConstants.PROFILE_BRANCH_STANDARD_PLATFORM_USER);
    Utils.getProfileIdByName(GlobalConstants.PROFILE_SYSTEM_ADMINISTRATOR);
    System.assertEquals(4, Limits.getQueries());
}
[apex][force.com]