/** * @see Concept#getDescription(Locale,null) */ @Test public void getDescription_shouldNotReturnLanguageOnlyMatchForExactMatches() { Concept mockConcept = new Concept(); mockConcept.addDescription(new ConceptDescription("en desc", new Locale("en"))); Assert.assertNull(mockConcept.getDescription(new Locale("en", "US"), true)); }
/** * @see Concept#getDescription(Locale,null) */ @Test public void getDescription_shouldReturnMatchOnLanguageOnly() { Concept mockConcept = new Concept(); mockConcept.addDescription(new ConceptDescription("en desc", new Locale("en"))); Assert.assertEquals("en desc", mockConcept.getDescription(new Locale("en", "US"), false).getDescription()); }
/** * @see Concept#getDescription(Locale,null) */ @Test public void getDescription_shouldReturnMatchOnLocaleExactly() { Concept mockConcept = new Concept(); mockConcept.addDescription(new ConceptDescription("en_US desc", new Locale("en", "US"))); Assert.assertEquals("en_US desc", mockConcept.getDescription(new Locale("en", "US"), false).getDescription()); }
@Test public void validate_shouldNotFailIfBlankConceptDescriptionIsPassed() { concept.addName(new ConceptName("some name",Context.getLocale())); concept.addDescription(new ConceptDescription(" ",null)); validator.validate(concept, errors); assertThat(errors, not(hasFieldErrors("description"))); } }
@Test public void shouldChangeConceptDescriptionReferenceToParentConcept() { Concept c = new Concept(123); c.addDescription(new ConceptDescription(1)); c.addDescription(new ConceptDescription(2)); ConceptNumeric cn = new ConceptNumeric(c); for (ConceptDescription cDesc : cn.getDescriptions()) { Assert.assertSame(cn, cDesc.getConcept()); } }
/** * @see ConceptService#saveConcept(Concept) */ @Test public void saveConcept_shouldPassWhenSavingAConceptAfterRemovingAName() { executeDataSet("org/openmrs/api/include/ConceptServiceTest-names.xml"); Concept concept = conceptService.getConcept(3000); concept.addDescription(new ConceptDescription("some description",null)); Assert.assertFalse(concept.getSynonyms().isEmpty()); concept.removeName(concept.getSynonyms().iterator().next()); conceptService.saveConcept(concept); }
@Test public void validate_shouldPassIfFullySpecifiedNameIsTheSameAsShortName() { ConceptName conceptFullySpecifiedName = new ConceptName("YES", new Locale("pl")); conceptFullySpecifiedName.setConceptNameType(ConceptNameType.FULLY_SPECIFIED); ConceptName conceptShortName = new ConceptName("yes", new Locale("pl")); conceptShortName.setConceptNameType(ConceptNameType.SHORT); concept.addName(conceptFullySpecifiedName); concept.addName(conceptShortName); concept.addDescription(new ConceptDescription("some description",null)); concept.setConceptClass(new ConceptClass()); concept.setDatatype(new ConceptDatatype()); validator.validate(concept, errors); Assert.assertFalse(errors.hasErrors()); }
@Test public void validate_shouldFailIfTheConceptDatatypeIsNull() { concept.addName(new ConceptName("some name", Context.getLocale())); concept.addDescription(new ConceptDescription("some description", null)); concept.setConceptClass(new ConceptClass(1)); validator.validate(concept, errors); assertThat(errors, hasFieldErrors("datatype", "Concept.datatype.empty")); }
@Test public void validate_shouldFailIfTheConceptClassIsNull() { concept.addName(new ConceptName("some name", Context.getLocale())); concept.addDescription(new ConceptDescription("some description", null)); concept.setDatatype(new ConceptDatatype(1)); validator.validate(concept, errors); assertThat(errors, hasFieldErrors("conceptClass", "Concept.conceptClass.empty")); } @Test
@Test public void validate_shouldFailValidationIfFieldLengthsAreNotCorrect() { concept.addName(new ConceptName("CD4", Context.getLocale())); concept.addDescription(new ConceptDescription("some description",null)); concept.setConceptClass(new ConceptClass()); concept.setDatatype(new ConceptDatatype()); concept.setVersion("too long text too long text too long text too long text"); concept .setRetireReason("too long text too long text too long text too long text too long text too long text too long text too long text too long text too long text too long text too long text too long text too long text too long text too long text too long text too long text too long text too long text"); validator.validate(concept, errors); assertThat(errors, hasFieldErrors("version", "error.exceededMaxLengthOfField")); assertThat(errors, hasFieldErrors("retireReason", "error.exceededMaxLengthOfField")); }
@Test public void saveConcept_shouldCreateNewConceptInDatabase() { executeDataSet(INITIAL_CONCEPTS_XML); Concept conceptToAdd = new Concept(); ConceptName cn = new ConceptName("new name", Context.getLocale()); conceptToAdd.addName(cn); conceptToAdd.addDescription(new ConceptDescription("some description",null)); conceptToAdd.setDatatype(new ConceptDatatype(1)); conceptToAdd.setConceptClass(new ConceptClass(1)); assertFalse(conceptService.getAllConcepts().contains(conceptToAdd)); conceptService.saveConcept(conceptToAdd); assertTrue(conceptService.getAllConcepts().contains(conceptToAdd)); }
@Test public void validate_shouldFailIfAnyNameIsAnEmptyString() { concept.addDescription(new ConceptDescription("some description", null)); concept.setConceptClass(new ConceptClass(1)); concept.setDatatype(new ConceptDatatype(1)); concept.addName(new ConceptName("name", Context.getLocale())); concept.addName(new ConceptName("", Context.getLocale())); validator.validate(concept, errors); assertThat(errors, hasGlobalErrors("Concept.name.empty")); }
@Test public void validate_shouldFailIfAnyNameIsANullValue() { concept.addDescription(new ConceptDescription("some description", null)); concept.setConceptClass(new ConceptClass(1)); concept.setDatatype(new ConceptDatatype(1)); concept.addName(new ConceptName("name", Context.getLocale())); concept.addName(new ConceptName(null, Context.getLocale())); validator.validate(concept, errors); assertThat(errors, hasGlobalErrors("Concept.name.empty")); }
@Test public void validate_shouldPassIfTheConceptHasAtleastOneFullySpecifiedNameAddedToIt() { concept.addName(new ConceptName("one name", Context.getLocale())); concept.addDescription(new ConceptDescription("some description",null)); concept.setConceptClass(new ConceptClass()); concept.setDatatype(new ConceptDatatype()); validator.validate(concept, errors); Assert.assertFalse(errors.hasErrors()); }
@Test public void validate_shouldPassIfNoneofTheConceptDescriptionsIsNull() { concept.addName(new ConceptName("some name",Context.getLocale())); concept.addDescription(new ConceptDescription("some description",null)); concept.setConceptClass(new ConceptClass()); concept.setDatatype(new ConceptDatatype()); validator.validate(concept, errors); Assert.assertFalse(errors.hasErrors()); }
@Test public void validate_shouldFailIfATermIsMappedMultipleTimesToTheSameConcept() { concept.setConceptClass(new ConceptClass()); concept.setDatatype(new ConceptDatatype()); concept.addName(new ConceptName("my name", Context.getLocale())); concept.addDescription(new ConceptDescription("some description",null)); ConceptMap map1 = new ConceptMap(conceptService.getConceptReferenceTerm(1), conceptService.getConceptMapType(1)); concept.addConceptMapping(map1); ConceptMap map2 = new ConceptMap(conceptService.getConceptReferenceTerm(1), conceptService.getConceptMapType(1)); concept.addConceptMapping(map2); validator.validate(concept, errors); assertThat(errors, hasFieldErrors("conceptMappings[1]")); }
@Test public void validate_shouldPassValidationIfFieldLengthsAreCorrect() { concept.addName(new ConceptName("CD4", Context.getLocale())); concept.addDescription(new ConceptDescription("some description",null)); concept.setVersion("version"); concept.setRetireReason("retireReason"); concept.setConceptClass(new ConceptClass()); concept.setDatatype(new ConceptDatatype()); validator.validate(concept, errors); Assert.assertFalse(errors.hasErrors()); }
@Test public void validate_shouldFailIfAnyNamesInTheSameLocaleForThisConceptAreSimilar() { concept.addName(new ConceptName("same name", Context.getLocale())); concept.addName(new ConceptName("same name", Context.getLocale())); concept.addDescription(new ConceptDescription("some description",null)); concept.setConceptClass(new ConceptClass()); concept.setDatatype(new ConceptDatatype()); expectedException.expect(DuplicateConceptNameException.class); expectedException .expectMessage("'same name' is a duplicate name in locale '" + Context.getLocale() + "'"); validator.validate(concept, errors); }
@Test public void validate_shouldPassForANewConceptWithAMapCreatedWithDeprecatedConceptMapMethods() { concept.addName(new ConceptName("test name", Context.getLocale())); concept.addDescription(new ConceptDescription("some description",null)); concept.setConceptClass(new ConceptClass()); concept.setDatatype(new ConceptDatatype()); ConceptMap map = new ConceptMap(); map.getConceptReferenceTerm().setCode("unique code"); map.getConceptReferenceTerm().setConceptSource(conceptService.getConceptSource(1)); concept.addConceptMapping(map); ValidateUtil.validate(concept); }
@Test public void validate_shouldPassIfTheConceptHasASynonymThatIsAlsoAShortName() { concept.addName(new ConceptName("CD4", Context.getLocale())); concept.addDescription(new ConceptDescription("some description",null)); concept.setConceptClass(new ConceptClass()); concept.setDatatype(new ConceptDatatype()); // Add the short name. Because the short name is not counted as a Synonym. // ConceptValidator will not record any errors. ConceptName name = new ConceptName("CD4", Context.getLocale()); name.setConceptNameType(ConceptNameType.SHORT); concept.addName(name); validator.validate(concept, errors); Assert.assertFalse(errors.hasErrors()); }