private void testDeletes(CourseOfferingInfo co, FormatOfferingInfo fo, ActivityOfferingInfo ao)
      throws InvalidParameterException, MissingParameterException, OperationFailedException,
          PermissionDeniedException, DoesNotExistException, DependentObjectsExistException {

    // delete activity offering
    StatusInfo status = this.courseOfferingService.deleteActivityOffering(ao.getId(), callContext);
    assertNotNull(status);
    assertEquals(Boolean.TRUE, status.getIsSuccess());

    try {
      courseOfferingService.getActivityOffering(ao.getId(), callContext);
      fail("should have thrown DoesNotExistException");
    } catch (DoesNotExistException ex) {
      assertNotNull(ex.getMessage());
      assertEquals(ao.getId(), ex.getMessage());
    }

    // delete fo
    status = this.courseOfferingService.deleteFormatOffering(fo.getId(), callContext);
    assertNotNull(status);
    assertEquals(Boolean.TRUE, status.getIsSuccess());

    try {
      courseOfferingService.getFormatOffering(fo.getId(), callContext);
      fail("should have thrown DoesNotExistException");
    } catch (DoesNotExistException ex) {
      assertNotNull(ex.getMessage());
      assertEquals(fo.getId(), ex.getMessage());
    }

    // delete co
    status = this.courseOfferingService.deleteCourseOffering(co.getId(), callContext);
    assertNotNull(status);
    assertEquals(Boolean.TRUE, status.getIsSuccess());

    try {
      courseOfferingService.getCourseOffering(co.getId(), callContext);
      fail("should have thrown DoesNotExistException");
    } catch (DoesNotExistException ex) {
      assertNotNull(ex.getMessage());
      assertEquals(co.getId(), ex.getMessage());
    }
  }
  public ActivityOfferingInfo testCRUDActivityOffering(FormatOfferingInfo fo)
      throws DoesNotExistException, InvalidParameterException, MissingParameterException,
          OperationFailedException, PermissionDeniedException, DataValidationErrorException,
          ReadOnlyException, VersionMismatchException {

    ActivityOfferingInfo orig = new ActivityOfferingInfo();
    orig.setFormatOfferingId(fo.getId());
    orig.setActivityId(fo.getId() + "." + LuServiceConstants.COURSE_ACTIVITY_LECTURE_TYPE_KEY);
    orig.setTypeKey(LuiServiceConstants.LECTURE_ACTIVITY_OFFERING_TYPE_KEY);
    orig.setStateKey(LuiServiceConstants.LUI_AO_STATE_DRAFT_KEY);
    orig.setMinimumEnrollment(100);
    orig.setMaximumEnrollment(150);
    orig.setIsEvaluated(true);
    orig.setIsMaxEnrollmentEstimate(false);
    orig.setIsHonorsOffering(true);
    ActivityOfferingInfo info =
        courseOfferingService.createActivityOffering(
            orig.getFormatOfferingId(), orig.getActivityId(), orig.getTypeKey(), orig, callContext);
    assertNotNull(info);
    assertNotNull(info.getId());
    assertEquals(orig.getStateKey(), info.getStateKey());
    assertEquals(orig.getTypeKey(), info.getTypeKey());
    assertEquals(orig.getFormatOfferingId(), info.getFormatOfferingId());
    assertEquals(orig.getActivityId(), info.getActivityId());
    assertEquals(orig.getMinimumEnrollment(), info.getMinimumEnrollment());
    assertEquals(orig.getMaximumEnrollment(), info.getMaximumEnrollment());
    assertEquals(orig.getIsEvaluated(), info.getIsEvaluated());
    assertEquals(orig.getIsMaxEnrollmentEstimate(), info.getIsMaxEnrollmentEstimate());
    assertEquals(orig.getIsHonorsOffering(), info.getIsHonorsOffering());

    orig = info;
    info = courseOfferingService.getActivityOffering(orig.getId(), callContext);
    assertNotNull(info);
    assertEquals(orig.getId(), info.getId());
    assertEquals(orig.getStateKey(), info.getStateKey());
    assertEquals(orig.getTypeKey(), info.getTypeKey());
    assertEquals(orig.getFormatOfferingId(), info.getFormatOfferingId());
    assertEquals(orig.getActivityId(), info.getActivityId());
    assertEquals(orig.getMinimumEnrollment(), info.getMinimumEnrollment());
    assertEquals(orig.getMaximumEnrollment(), info.getMaximumEnrollment());

    orig = info;
    orig.setMinimumEnrollment(100);
    info = courseOfferingService.updateActivityOffering(orig.getId(), orig, callContext);
    assertNotNull(info);
    assertEquals(orig.getId(), info.getId());
    assertEquals(orig.getStateKey(), info.getStateKey());
    assertEquals(orig.getTypeKey(), info.getTypeKey());
    assertEquals(orig.getFormatOfferingId(), info.getFormatOfferingId());
    assertEquals(orig.getActivityId(), info.getActivityId());
    assertEquals(orig.getMinimumEnrollment(), info.getMinimumEnrollment());
    assertEquals(orig.getMaximumEnrollment(), info.getMaximumEnrollment());
    return info;
  }