You need to sign in to do that
Don't have an account?

Can someone help me with writing a test class for the following code?
Can someone help me with writing a test class for the following code? This is my first test class and struggling where/how to start. Appreciate any help.
/**
* An apex class that keeps updates of a portal user in sync with its corresponding contact.
Guest users are never able to access this page.
*/
public with sharing class MyProfilePageController {
private User user;
private boolean isEdit = false;
public User getUser() {
return user;
}
public MyProfilePageController() {
user = [SELECT id, email, username, usertype, communitynickname, timezonesidkey, languagelocalekey, firstname, lastname, phone, title,
street, city, countryCode, postalcode, stateCode, localesidkey, mobilephone, extension, fax, contact.email
FROM User
WHERE id = :UserInfo.getUserId()];
// guest users should never be able to access this page
if (user.usertype == 'GUEST') {
throw new NoAccessException();
}
}
public Boolean getIsEdit() {
return isEdit;
}
public void edit() {
isEdit=true;
}
public void save() {
if (user.contact != null) {
setContactFields(user.contact, user);
}
try {
update user;
if (user.contact != null) {
update user.contact;
}
isEdit=false;
} catch(DmlException e) {
ApexPages.addMessages(e);
}
}
public PageReference changePassword() {
return Page.ChangePassword;
}
public void cancel() {
isEdit=false;
user = [SELECT id, email, username, communitynickname, timezonesidkey, languagelocalekey, firstname, lastname, phone, title,
street, city, countryCode, postalcode, stateCode, localesidkey, mobilephone, extension, fax, contact.email
FROM User
WHERE id = :UserInfo.getUserId()];
}
public static void setContactFields(Contact c, User u) {
c.title = u.title;
c.firstname = u.firstname;
c.lastname = u.lastname;
c.email = u.email;
c.phone = u.phone;
c.mobilephone = u.mobilephone;
c.fax = u.fax;
c.mailingstreet = u.street;
c.mailingcity = u.city;
c.mailingstate = u.state;
c.mailingpostalcode = u.postalcode;
c.mailingcountry = u.country;
}
}
/**
* An apex class that keeps updates of a portal user in sync with its corresponding contact.
Guest users are never able to access this page.
*/
public with sharing class MyProfilePageController {
private User user;
private boolean isEdit = false;
public User getUser() {
return user;
}
public MyProfilePageController() {
user = [SELECT id, email, username, usertype, communitynickname, timezonesidkey, languagelocalekey, firstname, lastname, phone, title,
street, city, countryCode, postalcode, stateCode, localesidkey, mobilephone, extension, fax, contact.email
FROM User
WHERE id = :UserInfo.getUserId()];
// guest users should never be able to access this page
if (user.usertype == 'GUEST') {
throw new NoAccessException();
}
}
public Boolean getIsEdit() {
return isEdit;
}
public void edit() {
isEdit=true;
}
public void save() {
if (user.contact != null) {
setContactFields(user.contact, user);
}
try {
update user;
if (user.contact != null) {
update user.contact;
}
isEdit=false;
} catch(DmlException e) {
ApexPages.addMessages(e);
}
}
public PageReference changePassword() {
return Page.ChangePassword;
}
public void cancel() {
isEdit=false;
user = [SELECT id, email, username, communitynickname, timezonesidkey, languagelocalekey, firstname, lastname, phone, title,
street, city, countryCode, postalcode, stateCode, localesidkey, mobilephone, extension, fax, contact.email
FROM User
WHERE id = :UserInfo.getUserId()];
}
public static void setContactFields(Contact c, User u) {
c.title = u.title;
c.firstname = u.firstname;
c.lastname = u.lastname;
c.email = u.email;
c.phone = u.phone;
c.mobilephone = u.mobilephone;
c.fax = u.fax;
c.mailingstreet = u.street;
c.mailingcity = u.city;
c.mailingstate = u.state;
c.mailingpostalcode = u.postalcode;
c.mailingcountry = u.country;
}
}
There's an excellent trailhead module on Apex Testing, which will help ramp you up on unit testing in Apex. You can find that module here: https://developer.salesforce.com/trailhead/module/apex_testing
There are also several examples of writing your first unit tests and best practices around unit tests on http://developer.salesforce.com.
After you follow through those examples, try writing your unit test,. If you're still struggling, then come back here and post your unit test (using the code format button < >), and we'll be happy to help.