@Test
  public void testUpdateMsisdnForSubscriberWithBothPacks() throws Exception {
    Long oldMsisdn = subscriptionHelper.makeNumber();
    Long newMsisdn = subscriptionHelper.makeNumber();

    Subscription childSubscription =
        subscriptionHelper.mksub(
            SubscriptionOrigin.MCTS_IMPORT, DateTime.now(), SubscriptionPackType.CHILD, oldMsisdn);
    String childId = "0123456789";
    childSubscription.getSubscriber().setChild(new MctsChild(childId));
    subscriberDataService.update(childSubscription.getSubscriber());

    Subscription pregnancySubscription =
        subscriptionHelper.mksub(
            SubscriptionOrigin.MCTS_IMPORT,
            DateTime.now().minusDays(150),
            SubscriptionPackType.PREGNANCY,
            oldMsisdn);
    String motherId = "9876543210";
    pregnancySubscription.getSubscriber().setMother(new MctsMother(motherId));
    subscriberDataService.update(pregnancySubscription.getSubscriber());

    assertEquals(
        2,
        subscriberDataService
            .findByCallingNumber(oldMsisdn)
            .getActiveAndPendingSubscriptions()
            .size());

    Reader reader = createUpdateReaderWithHeaders("1," + motherId + ",,,,,,,,,,,,," + newMsisdn);
    mctsBeneficiaryUpdateService.updateBeneficiaryData(reader);

    Subscriber pregnancySubscriber = subscriberDataService.findByCallingNumber(newMsisdn);
    Subscriber childSubscriber = subscriberDataService.findByCallingNumber(oldMsisdn);

    assertNotNull(pregnancySubscriber);
    assertNotNull(childSubscriber);
    assertNotEquals(childSubscriber, pregnancySubscriber);
    assertEquals(newMsisdn, pregnancySubscriber.getCallingNumber());
    assertEquals(oldMsisdn, childSubscriber.getCallingNumber());
    assertNull(pregnancySubscriber.getChild());
    assertNull(childSubscriber.getMother());
    assertEquals(1, pregnancySubscriber.getActiveAndPendingSubscriptions().size());
    assertEquals(1, childSubscriber.getActiveAndPendingSubscriptions().size());
  }