@Test
  public void testController_createdProperPriorDiagnoses() throws Exception {
    EncounterDiagnosesFragmentController controller = new EncounterDiagnosesFragmentController();

    ConceptName specificName = new ConceptName("Specific Name", Context.getLocale());
    specificName.setId(1);
    specificName.setLocalePreferred(true);
    Concept conceptForSpecificName = new Concept();
    conceptForSpecificName.setId(2);
    conceptForSpecificName.addName(specificName);

    Concept nonSpecificConcept = new Concept();
    nonSpecificConcept.setId(3);
    ConceptName nonSpecificConceptName =
        new ConceptName("Non-specific concept", Context.getLocale());
    nonSpecificConceptName.setId(4);
    nonSpecificConceptName.setLocalePreferred(true);
    nonSpecificConcept.addName(nonSpecificConceptName);

    List<Diagnosis> diagnoses = new ArrayList<Diagnosis>();
    diagnoses.add(new Diagnosis(new CodedOrFreeTextAnswer(specificName), Diagnosis.Order.PRIMARY));
    diagnoses.add(
        new Diagnosis(new CodedOrFreeTextAnswer(nonSpecificConcept), Diagnosis.Order.SECONDARY));
    diagnoses.add(
        new Diagnosis(new CodedOrFreeTextAnswer("Unknown Disease"), Diagnosis.Order.SECONDARY));

    for (Diagnosis d : diagnoses) {
      d.setExistingObs(new Obs());
    }

    FragmentModel model = new FragmentModel();
    controller.controller(new TestUiUtils(), null, diagnoses, model);

    assertThat(((List<String>) model.getAttribute("jsForExisting")).size(), is(0));

    List<String> jsForPrior = (List<String>) model.getAttribute("jsForPrior");

    assertThat(
        jsForPrior.get(0),
        is(
            "{ diagnosis: diagnoses.CodedOrFreeTextConceptAnswer({\"word\":null,\"conceptName\":{\"id\":1,\"uuid\":\""
                + specificName.getUuid()
                + "\",\"conceptNameType\":\"FULLY_SPECIFIED\",\"name\":\"Specific Name\"},\"concept\":{\"id\":2,\"uuid\":\""
                + conceptForSpecificName.getUuid()
                + "\",\"conceptMappings\":[],\"preferredName\":\"Specific Name\"}}), confirmed: false, primary: true, existingObs: null }"));
    assertThat(
        jsForPrior.get(1),
        is(
            "{ diagnosis: diagnoses.CodedOrFreeTextConceptAnswer({\"word\":null,\"conceptName\":null,\"concept\":{\"id\":3,\"uuid\":\""
                + nonSpecificConcept.getUuid()
                + "\",\"conceptMappings\":[],\"preferredName\":\"Non-specific concept\"}}), confirmed: false, primary: false, existingObs: null }"));
    assertThat(
        jsForPrior.get(2),
        is(
            "{ diagnosis: diagnoses.CodedOrFreeTextConceptAnswer('Unknown Disease'), confirmed: false, primary: false, existingObs: null }"));
  }
 @Override
 public boolean equals(Object o) {
   if (o == null || !(o instanceof Diagnosis)) {
     return false;
   }
   Diagnosis other = (Diagnosis) o;
   return OpenmrsUtil.nullSafeEquals(diagnosis, other.getDiagnosis())
       && OpenmrsUtil.nullSafeEquals(order, other.getOrder())
       && OpenmrsUtil.nullSafeEquals(certainty, other.getCertainty());
 }