/**
|
* 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.
|
*/
|
@IsTest public with sharing class MyProfilePageControllerTest {
|
@IsTest(SeeAllData=true) static void testSetContactFields() {
|
User u = [select title, firstname, lastname, email, phone, mobilephone, fax, street, city, state, postalcode, country
|
FROM User WHERE id =: UserInfo.getUserId()];
|
|
Contact c = new Contact();
|
|
MyProfilePageController.setContactFields(c, u);
|
System.assertEquals(c.firstname, u.firstname, 'firstname should have been set as the firstname of the user for the contact');
|
System.assertEquals(c.lastname, u.lastname, 'lastname should have been set as the lastname of the user for the contact');
|
}
|
|
@IsTest(SeeAllData=true) static void testSave() {
|
// Modify the test to query for a portal user that exists in your org
|
List<User> existingPortalUsers = [SELECT id, profileId, userRoleId FROM User WHERE UserRoleId <> null AND UserType='CustomerSuccess'];
|
|
if (existingPortalUsers.isEmpty()) {
|
User currentUser = [select id, title, firstname, lastname, email, phone, mobilephone, fax, street, city, state, postalcode, country
|
FROM User WHERE id =: UserInfo.getUserId()];
|
MyProfilePageController controller = new MyProfilePageController();
|
System.assertEquals(currentUser.Id, controller.getUser().Id, 'Did not successfully load the current user');
|
System.assert(controller.getIsEdit() == false, 'isEdit should default to false');
|
controller.edit();
|
System.assert(controller.getIsEdit() == true);
|
controller.cancel();
|
System.assert(controller.getIsEdit() == false);
|
|
Contact c = new Contact();
|
c.LastName = 'TestContact';
|
c.Phone = '11112222';
|
insert c;
|
|
c.title = currentUser.title;
|
c.firstname = currentUser.firstname;
|
c.lastname = currentUser.lastname;
|
c.email = currentUser.email;
|
c.phone = currentUser.phone;
|
c.mobilephone = currentUser.mobilephone;
|
c.fax = currentUser.fax;
|
c.mailingstreet = currentUser.street;
|
c.mailingcity = currentUser.city;
|
c.mailingstate = currentUser.state;
|
c.mailingpostalcode = currentUser.postalcode;
|
c.mailingcountry = currentUser.country;
|
controller.save();
|
System.assert(Page.ChangePassword.getUrl().equals(controller.changePassword().getUrl()));
|
} else {
|
User existingPortalUser = existingPortalUsers[0];
|
String randFax = Math.rint(Math.random() * 1000) + '5551234';
|
|
System.runAs(existingPortalUser) {
|
MyProfilePageController controller = new MyProfilePageController();
|
System.assertEquals(existingPortalUser.Id, controller.getUser().Id, 'Did not successfully load the current user');
|
System.assert(controller.getIsEdit() == false, 'isEdit should default to false');
|
controller.edit();
|
System.assert(controller.getIsEdit() == true);
|
|
controller.cancel();
|
System.assert(controller.getIsEdit() == false);
|
|
controller.getUser().Fax = randFax;
|
controller.save();
|
System.assert(controller.getIsEdit() == false);
|
}
|
|
// verify that the user and contact were updated
|
existingPortalUser = [Select id, fax, Contact.Fax from User where id =: existingPortalUser.Id];
|
System.assert(existingPortalUser.fax == randFax);
|
System.assert(existingPortalUser.Contact.fax == randFax);
|
}
|
}
|
}
|