/**
   * @verifies set the relevant fields for a DC order
   * @see TestOrder#cloneForRevision()
   */
  @Test
  public void cloneForRevision_shouldSetTheRelevantFieldsForADCOrder() throws Exception {
    Order order = new TestOrder();
    order.setAction(Order.Action.DISCONTINUE);
    Date date = new Date();
    order.setDateActivated(date);
    order.setAutoExpireDate(date);
    order.setAccessionNumber("some number");
    OrderUtilTest.setDateStopped(order, date);
    order.setPreviousOrder(new Order());

    Order clone = order.cloneForRevision();
    assertEquals(Order.Action.DISCONTINUE, clone.getAction());
    assertEquals(order.getDateActivated(), clone.getDateActivated());
    assertEquals(order.getPreviousOrder(), clone.getPreviousOrder());
    assertNull(clone.getAutoExpireDate());
    assertNull(clone.getDateStopped());
    assertNull(clone.getAccessionNumber());
  }
  /** @see {@link OrderValidator#validate(Object,Errors)} */
  @Test
  @Verifies(
      value = "should fail validation if dateActivated after dateStopped",
      method = "validate(Object,Errors)")
  public void validate_shouldFailValidationIfDateActivatedAfterDateStopped() throws Exception {
    Order order = new Order();
    order.setConcept(Context.getConceptService().getConcept(88));
    order.setPatient(Context.getPatientService().getPatient(2));
    order.setOrderer(Context.getProviderService().getProvider(1));
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) - 1);
    order.setDateActivated(new Date());
    OrderUtilTest.setDateStopped(order, cal.getTime());

    Errors errors = new BindException(order, "order");
    new OrderValidator().validate(order, errors);

    Assert.assertTrue(errors.hasFieldErrors("dateActivated"));
    Assert.assertTrue(errors.hasFieldErrors("dateStopped"));
  }