/** * This Source Code Form is subject to the terms of the Mozilla Public License, * v. 2.0. If a copy of the MPL was not distributed with this file, You can * obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under * the terms of the Healthcare Disclaimer located at http://openmrs.org/license. * * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS * graphic logo is a trademark of OpenMRS Inc. */ package org.openmrs; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.openmrs.api.APIException; import org.openmrs.api.context.Context; import org.openmrs.test.BaseContextSensitiveTest; import org.openmrs.util.OpenmrsConstants; /** * Tests methods in {@link org.openmrs.Allergies}. */ public class AllergiesTest extends BaseContextSensitiveTest { private static final String ALLERGY_OTHER_NONCODED_TEST_DATASET = "org/openmrs/api/include/otherNonCodedConcept.xml"; Allergies allergies; @Before public void setup() { allergies = new Allergies(); executeDataSet(ALLERGY_OTHER_NONCODED_TEST_DATASET); Allergen.setOtherNonCodedConceptUuid(Context.getAdministrationService().getGlobalProperty( OpenmrsConstants.GP_ALLERGEN_OTHER_NON_CODED_UUID)); } /** * @see {@link Allergies#add(Allergy)} * @see {@link Allergies#add(int, Allergy)} * @see {@link Allergies#get(int)} * @see {@link Allergies#set(int, Allergy))} * @see {@link Allergies#indexOf(Object)} */ @Test public void shouldAddAllergyAndSetCorrectStatus(){ Assert.assertEquals(allergies.getAllergyStatus(), Allergies.UNKNOWN); Allergy allergy = new Allergy(); Assert.assertTrue(allergies.add(allergy)); Assert.assertTrue(allergies.contains(allergy)); Assert.assertEquals(allergies.getAllergyStatus(), Allergies.SEE_LIST); allergy = new Allergy(); allergies.add(0, allergy); Assert.assertEquals(allergies.indexOf(allergy), 0); Assert.assertEquals(allergies.get(0), allergy); Assert.assertNotEquals(allergies.get(1), allergy); Assert.assertEquals(allergies.getAllergyStatus(), Allergies.SEE_LIST); allergy = new Allergy(); allergies.set(0, allergy); Assert.assertEquals(allergies.size(), 2); Assert.assertEquals(allergies.get(0), allergy); Assert.assertEquals(allergies.getAllergyStatus(), Allergies.SEE_LIST); } /** * @see {@link Allergies#addAll(java.util.Collection)} * @see {@link Allergies#addAll(int, java.util.Collection)} */ @Test public void shouldAddAllergyCollectionAndSetCorrectStatus(){ Assert.assertEquals(allergies.getAllergyStatus(), Allergies.UNKNOWN); List<Allergy> allergyList = new ArrayList<>(); for (int i = 0; i < 5; i++) { allergyList.add(new Allergy()); } Assert.assertTrue(allergies.addAll(allergyList)); Assert.assertEquals(allergies.getAllergyStatus(), Allergies.SEE_LIST); Allergy allergy = new Allergy(); allergyList.clear(); for (int i = 0; i < 5; i++) { allergyList.add(new Allergy()); } allergyList.set(1, allergy); Assert.assertTrue(allergies.addAll(2, allergyList)); Assert.assertEquals(allergies.get(3), allergy); Assert.assertEquals(allergies.getAllergyStatus(), Allergies.SEE_LIST); } /** * @see {@link Allergies#remove(Allergy)} * @see {@link Allergies#remove(int)} */ @Test public void shouldRemoveAllergyAndSetCorrectStatus(){ Assert.assertEquals(allergies.getAllergyStatus(), Allergies.UNKNOWN); Allergy allergy1 = new Allergy(); Allergy allergy2 = new Allergy(); allergies.add(allergy1); allergies.add(0, allergy2); Assert.assertEquals(allergies.getAllergyStatus(), Allergies.SEE_LIST); Assert.assertFalse(allergies.remove(new Allergy())); Assert.assertEquals(allergies.remove(0), allergy2); Assert.assertEquals(allergies.size(), 1); Assert.assertEquals(allergies.getAllergyStatus(), Allergies.SEE_LIST); Assert.assertTrue(allergies.remove(allergy1)); Assert.assertEquals(allergies.getAllergyStatus(), Allergies.UNKNOWN); } /** * @see {@link Allergies#clear()} */ @Test public void shouldClearAllergyAndSetCorrectStatus(){ allergies.add(new Allergy()); allergies.add(new Allergy()); Assert.assertEquals(allergies.size(), 2); Assert.assertEquals(allergies.getAllergyStatus(), Allergies.SEE_LIST); allergies.clear(); Assert.assertEquals(allergies.size(), 0); Assert.assertEquals(allergies.getAllergyStatus(), Allergies.UNKNOWN); } /** * @see {@link Allergies#confirmNoKnownAllergies()} */ @Test public void shouldConfirmNoKnownAllergies(){ allergies.confirmNoKnownAllergies(); Assert.assertEquals(allergies.getAllergyStatus(), Allergies.NO_KNOWN_ALLERGIES); } /** * @see {@link Allergies#confirmNoKnownAllergies()} */ @Test(expected = APIException.class) public void shouldThrowAnErrorWhenTryingConfirmNoKnowAllergiesWhileAllergiesIsNotEmpty(){ allergies.add(new Allergy()); allergies.confirmNoKnownAllergies(); } /** * @see {@link Allergies#add(Allergy)} */ @Test(expected = APIException.class) public void add_shouldNotAllowDuplicateCodedAllergen(){ Allergy allergy1 = new Allergy(); Concept concept = new Concept(); allergy1.setAllergen(new Allergen(null, concept, null)); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, concept, null)); allergies.add(allergy1); allergies.add(allergy2); } /** * @see {@link Allergies#add(Allergy)} */ @Test public void add_shouldAllowNonDuplicateCodedAllergen(){ Allergy allergy1 = new Allergy(); allergy1.setAllergen(new Allergen(null, new Concept(1), null)); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, new Concept(2), null)); allergies.add(allergy1); allergies.add(allergy2); } /** * @see {@link Allergies#add(Allergy)} */ @Test(expected = APIException.class) public void add_shouldNotAllowDuplicateNonCodedAllergen(){ Concept concept = Context.getConceptService().getConceptByUuid(Allergen.getOtherNonCodedConceptUuid()); Allergy allergy1 = new Allergy(); allergy1.setAllergen(new Allergen(null, concept, "OTHER VALUE")); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, concept, "OTHER VALUE")); allergies.add(allergy1); allergies.add(allergy2); } /** * @see {@link Allergies#add(Allergy)} */ @Test public void add_shouldAllowNonDuplicateNonCodedAllergen(){ Concept concept = Context.getConceptService().getConceptByUuid(Allergen.getOtherNonCodedConceptUuid()); Allergy allergy1 = new Allergy(); allergy1.setAllergen(new Allergen(null, concept, "OTHER VALUE1")); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, concept, "OTHER VALUE2")); allergies.add(allergy1); allergies.add(allergy2); } /** * @see {@link Allergies#add(int, Allergy)} */ @Test(expected = APIException.class) public void add2_shouldNotAllowDuplicateCodedAllergen(){ Allergy allergy1 = new Allergy(); Concept concept = new Concept(); allergy1.setAllergen(new Allergen(null, concept, null)); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, concept, null)); allergies.add(0, allergy1); allergies.add(0, allergy2); } /** * @see {@link Allergies#add(int, Allergy)} */ @Test public void add2_shouldAllowNonDuplicateCodedAllergen(){ Allergy allergy1 = new Allergy(); allergy1.setAllergen(new Allergen(null, new Concept(1), null)); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, new Concept(2), null)); allergies.add(0, allergy1); allergies.add(0, allergy2); } /** * @see {@link Allergies#add(int, Allergy)} */ @Test(expected = APIException.class) public void add2_shouldNotAllowDuplicateNonCodedAllergen(){ Concept concept = Context.getConceptService().getConceptByUuid(Allergen.getOtherNonCodedConceptUuid()); Allergy allergy1 = new Allergy(); allergy1.setAllergen(new Allergen(null, concept, "OTHER VALUE")); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, concept, "OTHER VALUE")); allergies.add(0, allergy1); allergies.add(0, allergy2); } /** * @see {@link Allergies#add(int, Allergy)} */ @Test public void add2_shouldAllowNonDuplicateNonCodedAllergen(){ Concept concept = Context.getConceptService().getConceptByUuid(Allergen.getOtherNonCodedConceptUuid()); Allergy allergy1 = new Allergy(); allergy1.setAllergen(new Allergen(null, concept, "OTHER VALUE1")); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, concept, "OTHER VALUE2")); allergies.add(0, allergy1); allergies.add(0, allergy2); } /** * @see {@link Allergies#addAll(java.util.Collection)} */ @Test(expected = APIException.class) public void addAll_shouldNotAllowDuplicateCodedAllergen(){ Allergy allergy1 = new Allergy(); allergy1.setAllergen(new Allergen(null, new Concept(1), null)); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, new Concept(1), null)); Allergies allergies = new Allergies(); allergies.add(allergy1); allergies.add(allergy2); allergies.addAll(allergies); } /** * @see {@link Allergies#addAll(java.util.Collection)} */ @Test(expected = APIException.class) public void addAll_shouldAllowNonDuplicateCodedAllergen(){ Allergy allergy1 = new Allergy(); allergy1.setAllergen(new Allergen(null, new Concept(1), null)); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, new Concept(2), null)); Allergies allergies = new Allergies(); allergies.add(allergy1); allergies.add(allergy2); allergies.addAll(allergies); } /** * @see {@link Allergies#addAll(java.util.Collection)} */ @Test(expected = APIException.class) public void addAll_shouldNotAllowDuplicateNonCodedAllergen(){ Concept concept = Context.getConceptService().getConceptByUuid(Allergen.getOtherNonCodedConceptUuid()); Allergy allergy1 = new Allergy(); allergy1.setAllergen(new Allergen(null, concept, "OTHER VALUE")); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, concept, "OTHER VALUE")); Allergies allergies = new Allergies(); allergies.add(allergy1); allergies.add(allergy2); allergies.addAll(allergies); } /** * @see {@link Allergies#addAll(java.util.Collection)} */ @Test(expected = APIException.class) public void addAll_shouldAllowNonDuplicateNonCodedAllergen(){ Concept concept = Context.getConceptService().getConceptByUuid(Allergen.getOtherNonCodedConceptUuid()); Allergy allergy1 = new Allergy(); allergy1.setAllergen(new Allergen(null, concept, "OTHER VALUE1")); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, concept, "OTHER VALUE2")); Allergies allergies = new Allergies(); allergies.add(allergy1); allergies.add(allergy2); allergies.addAll(allergies); } /** * @see {@link Allergies#addAll(int, java.util.Collection)} */ @Test(expected = APIException.class) public void addAll2_shouldNotAllowDuplicateCodedAllergen(){ Allergy allergy1 = new Allergy(); allergy1.setAllergen(new Allergen(null, new Concept(1), null)); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, new Concept(1), null)); Allergies allergies = new Allergies(); allergies.add(allergy1); allergies.add(allergy2); allergies.addAll(0, allergies); } /** * @see {@link Allergies#addAll(int, java.util.Collection)} */ @Test(expected = APIException.class) public void addAll2_shouldAllowNonDuplicateCodedAllergen(){ Allergy allergy1 = new Allergy(); allergy1.setAllergen(new Allergen(null, new Concept(1), null)); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, new Concept(2), null)); Allergies allergies = new Allergies(); allergies.add(allergy1); allergies.add(allergy2); allergies.addAll(0, allergies); } /** * @see {@link Allergies#addAll(int, java.util.Collection)} */ @Test(expected = APIException.class) public void addAll2_shouldNotAllowDuplicateNonCodedAllergen(){ Concept concept = Context.getConceptService().getConceptByUuid(Allergen.getOtherNonCodedConceptUuid()); Allergy allergy1 = new Allergy(); allergy1.setAllergen(new Allergen(null, concept, "OTHER VALUE")); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, concept, "OTHER VALUE")); Allergies allergies = new Allergies(); allergies.add(allergy1); allergies.add(allergy2); allergies.addAll(0, allergies); } /** * @see {@link Allergies#addAll(int, java.util.Collection)} */ @Test(expected = APIException.class) public void addAll2_shouldAllowNonDuplicateNonCodedAllergen(){ Concept concept = Context.getConceptService().getConceptByUuid(Allergen.getOtherNonCodedConceptUuid()); Allergy allergy1 = new Allergy(); allergy1.setAllergen(new Allergen(null, concept, "OTHER VALUE1")); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, concept, "OTHER VALUE2")); Allergies allergies = new Allergies(); allergies.add(allergy1); allergies.add(allergy2); allergies.addAll(0, allergies); } /** * @see {@link Allergies#addAll(java.util.Collection)} */ @Test(expected = APIException.class) public void addAll4_shouldNotAllowDuplicateCodedAllergen(){ Allergy allergy1 = new Allergy(); Concept concept = new Concept(); allergy1.setAllergen(new Allergen(null, concept, null)); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, concept, null)); List<Allergy> allergies = new ArrayList<>(); allergies.add(allergy1); allergies.add(allergy2); new Allergies().addAll(allergies); } /** * @see {@link Allergies#addAll(int, java.util.Collection)} */ @Test(expected = APIException.class) public void addAll5_shouldNotAllowDuplicateCodedAllergen(){ Allergy allergy1 = new Allergy(); Concept concept = new Concept(); allergy1.setAllergen(new Allergen(null, concept, null)); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, concept, null)); List<Allergy> allergies = new ArrayList<>(); allergies.add(allergy1); allergies.add(allergy2); new Allergies().addAll(0, allergies); } /** * @see {@link Allergies#addAll(java.util.Collection)} */ @Test(expected = APIException.class) public void addAll6_shouldNotAllowDuplicateNonCodedAllergen(){ Concept concept = Context.getConceptService().getConceptByUuid(Allergen.getOtherNonCodedConceptUuid()); Allergy allergy1 = new Allergy(); allergy1.setAllergen(new Allergen(null, concept, "OTHER VALUE")); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, concept, "OTHER VALUE")); List<Allergy> allergies = new ArrayList<>(); allergies.add(allergy1); allergies.add(allergy2); new Allergies().addAll(allergies); } /** * @see {@link Allergies#addAll(int, java.util.Collection)} */ @Test(expected = APIException.class) public void addAll7_shouldNotAllowDuplicateNonCodedAllergen(){ Concept concept = Context.getConceptService().getConceptByUuid(Allergen.getOtherNonCodedConceptUuid()); Allergy allergy1 = new Allergy(); allergy1.setAllergen(new Allergen(null, concept, "OTHER VALUE")); Allergy allergy2 = new Allergy(); allergy2.setAllergen(new Allergen(null, concept, "OTHER VALUE")); List<Allergy> allergies = new ArrayList<>(); allergies.add(allergy1); allergies.add(allergy2); new Allergies().addAll(0, allergies); } }