Created
September 13, 2012 08:51
-
-
Save simcap/3712993 to your computer and use it in GitHub Desktop.
Unit tests - Good & bad
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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