Skip to content

Instantly share code, notes, and snippets.

@simcap
Created September 13, 2012 08:51
Show Gist options
  • Save simcap/3712993 to your computer and use it in GitHub Desktop.
Save simcap/3712993 to your computer and use it in GitHub Desktop.
Unit tests - Good & bad
public class SetCarrierServiceFacadeTest {
@InjectMocks
private SetCarrierServiceFacade facade;
@Mock
private CarrierService carrierService;
@Mock
private UserContactPointService userContactPointService;
@Mock
private UserService userService;
@Mock
private PreferenceService preferenceService;
@Mock
private MessageService messageService;
@Mock
private UserContactPointEntity validatedContactPoint;
@Test
public void should_set_carrier_and_redirection_status_on_validated_contact_point() throws Exception {
Long carrierId = 453L, userId = 45L;
String msisdn = "+336454989181";
CarrierPhoneNumberEntity activationNumber = new CarrierPhoneNumberEntityBuilder(654l).ofActivationType();
CarrierPhoneNumberEntity deActivationNumber = new CarrierPhoneNumberEntityBuilder(111l).ofDeactivationType();
CarrierPhoneNumberEntity consultationNumber = new CarrierPhoneNumberEntityBuilder(888l).ofConsultationType();
UserEntity user = new UserEntityBuilder().userId(userId).build();
user.setCarrierPhoneNumbers(Lists.newArrayList(activationNumber, deActivationNumber, consultationNumber));
CarrierEntity carrier = new CarrierEntityBuilder(carrierId).phoneNumbers(activationNumber,
deActivationNumber, consultationNumber).build();
ApplicationEntity applicationEntity = new ApplicationEntityBuilder().name(IPHONE_ON).build();
when(carrierService.findById(carrierId)).thenReturn(carrier);
when(userService.findLegacyUserIdByValidatedContactPoint(msisdn)).thenReturn(userId);
when(userService.findByIdWithCarrierPhoneNumbers(userId)).thenReturn(user);
when(userContactPointService.getFirstValidatedContactPoint(msisdn)).thenReturn(validatedContactPoint);
facade.selectCarrier(carrierId, msisdn, applicationEntity);
verify(validatedContactPoint).setCarrier(carrier);
verify(validatedContactPoint).setVoicemailRedirectionStatus(VoicemailRedirectionStatus.ASKED);
}
@Test
public void should_send_voicemail_creation_message_for_IPHONE_LIBON_users() throws Exception {
Long carrierId = 453L, userId = 45L;
String msisdn = "+336454989181", accessCode = "8888";
CarrierPhoneNumberEntity activationNumber = new CarrierPhoneNumberEntityBuilder(654l).ofActivationType();
CarrierPhoneNumberEntity deActivationNumber = new CarrierPhoneNumberEntityBuilder(111l).ofDeactivationType();
CarrierPhoneNumberEntity consultationNumber = new CarrierPhoneNumberEntityBuilder(888l).ofConsultationType();
UserEntity user = new UserEntityBuilder().userId(userId).build();
user.setCarrierPhoneNumbers(Lists.newArrayList(activationNumber, deActivationNumber, consultationNumber));
CarrierEntity carrier = new CarrierEntityBuilder(carrierId).phoneNumbers(activationNumber,
deActivationNumber, consultationNumber).build();
ApplicationEntity applicationEntity = new ApplicationEntityBuilder().name(IPHONE_LIBON).build();
when(validatedContactPoint.getVoicemailRedirectionStatus()).thenReturn(VoicemailRedirectionStatus.NONE);
when(carrierService.findById(carrierId)).thenReturn(carrier);
when(userService.findLegacyUserIdByValidatedContactPoint(msisdn)).thenReturn(userId);
when(userService.findByIdWithCarrierPhoneNumbers(userId)).thenReturn(user);
when(userContactPointService.getFirstValidatedContactPoint(msisdn)).thenReturn(validatedContactPoint);
when(preferenceService.getVmsAccessCode(user)).thenReturn(accessCode);
facade.selectCarrier(carrierId, msisdn, applicationEntity);
verify(messageService).createOnSystemMessage(user, "#web#VOICEMAIL_BOX_CREATED_TEXT", accessCode);
}
@Test
public void should_send_voicefeed_voicemail_creation_message_for_non_IPHONE_LIBON_users() throws Exception {
Long carrierId = 453L, userId = 45L;
String msisdn = "+336454989181", accessCode = "8888";
CarrierPhoneNumberEntity activationNumber = new CarrierPhoneNumberEntityBuilder(654l).ofActivationType();
CarrierPhoneNumberEntity deActivationNumber = new CarrierPhoneNumberEntityBuilder(111l).ofDeactivationType();
CarrierPhoneNumberEntity consultationNumber = new CarrierPhoneNumberEntityBuilder(888l).ofConsultationType();
UserEntity user = new UserEntityBuilder().userId(userId).build();
user.setCarrierPhoneNumbers(Lists.newArrayList(activationNumber, deActivationNumber, consultationNumber));
CarrierEntity carrier = new CarrierEntityBuilder(carrierId).phoneNumbers(activationNumber,
deActivationNumber, consultationNumber).build();
ApplicationEntity applicationEntity = new ApplicationEntityBuilder().name(IPHONE_ON).build();
when(validatedContactPoint.getVoicemailRedirectionStatus()).thenReturn(VoicemailRedirectionStatus.NONE);
when(carrierService.findById(carrierId)).thenReturn(carrier);
when(userService.findLegacyUserIdByValidatedContactPoint(msisdn)).thenReturn(userId);
when(userService.findByIdWithCarrierPhoneNumbers(userId)).thenReturn(user);
when(userContactPointService.getFirstValidatedContactPoint(msisdn)).thenReturn(validatedContactPoint);
when(preferenceService.getVmsAccessCode(user)).thenReturn(accessCode);
facade.selectCarrier(carrierId, msisdn, applicationEntity);
verify(messageService).createOnSystemMessage(user, "#web#VOICEMAIL_BOX_CREATED_TEXT_VOICEFEED", accessCode);
}
@Test
public void should_remove_carriers_from_user_lists_and_add_new_carrier_numbers() throws Exception {
Long carrierId = 453L, userId = 45L;
String msisdn = "+336454989181";
CarrierPhoneNumberEntity newActivation = new CarrierPhoneNumberEntityBuilder(654l).ofActivationType();
CarrierPhoneNumberEntity newDeActivation = new CarrierPhoneNumberEntityBuilder(111l).ofDeactivationType();
CarrierPhoneNumberEntity newConsultation = new CarrierPhoneNumberEntityBuilder(888l).ofConsultationType();
CarrierEntity carrier = new CarrierEntityBuilder(carrierId).phoneNumbers(newActivation, newDeActivation,
newConsultation).build();
UserEntity user = new UserEntityBuilder().userId(userId).build();
CarrierPhoneNumberEntity oldActivation = new CarrierPhoneNumberEntityBuilder(555l).carrier(carrier)
.ofActivationType();
CarrierPhoneNumberEntity oldDeActivation = new CarrierPhoneNumberEntityBuilder(222l).carrier(carrier)
.ofDeactivationType();
CarrierPhoneNumberEntity oldConsultation = new CarrierPhoneNumberEntityBuilder(333l).carrier(carrier)
.ofConsultationType();
user.setCarrierPhoneNumbers(Lists.newArrayList(oldActivation, oldDeActivation, oldConsultation));
ApplicationEntity applicationEntity = new ApplicationEntityBuilder().name(IPHONE_LIBON).build();
when(carrierService.findById(carrierId)).thenReturn(carrier);
when(userService.findLegacyUserIdByValidatedContactPoint(msisdn)).thenReturn(userId);
when(userService.findByIdWithCarrierPhoneNumbers(userId)).thenReturn(user);
when(userContactPointService.getFirstValidatedContactPoint(msisdn)).thenReturn(validatedContactPoint);
facade.selectCarrier(carrierId, msisdn, applicationEntity);
assertListContainsPhoneNumberWithId(654l, user.getCarrierPhoneNumbers());
assertListContainsPhoneNumberWithId(111l, user.getCarrierPhoneNumbers());
assertListContainsPhoneNumberWithId(888l, user.getCarrierPhoneNumbers());
}
@Test(expected = IllegalStateException.class)
public void should_throw_exception_when_formatting_carrier_number_when_selecting_a_carrier() throws Exception {
Long carrierId = 453L, userId = 45L;
String msisdn = "+336454989181";
CarrierPhoneNumberEntity activationNumber = new CarrierPhoneNumberEntityBuilder(654l).ofActivationType();
CarrierPhoneNumberEntity deActivationNumber = new CarrierPhoneNumberEntityBuilder(111l).ofDeactivationType();
UserEntity user = new UserEntityBuilder().userId(userId).build();
user.setCarrierPhoneNumbers(Lists.newArrayList(activationNumber, deActivationNumber));
CarrierEntity carrier = new CarrierEntityBuilder(carrierId)
.phoneNumbers(activationNumber, deActivationNumber).build();
when(carrierService.findById(carrierId)).thenReturn(carrier);
when(userService.findLegacyUserIdByValidatedContactPoint(msisdn)).thenReturn(userId);
when(userService.findByIdWithCarrierPhoneNumbers(userId)).thenReturn(user);
facade.selectCarrier(carrierId, msisdn, null);
}
private boolean assertListContainsPhoneNumberWithId(Long expectedId, List<CarrierPhoneNumberEntity> numbers) {
ArrayList<Long> ids = new ArrayList<Long>();
for (CarrierPhoneNumberEntity number : numbers) {
ids.add(number.getId());
if (expectedId.equals(number.getId())) {
return true;
}
}
throw new AssertionError("Expecting phone number list to contain number with id " + expectedId
+ " but contains " + ids);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment