/** * The contents of this file are subject to the OpenMRS Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://license.openmrs.org * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * Copyright (C) OpenMRS, LLC. All Rights Reserved. */ package org.openmrs.api; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import junit.framework.Assert; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.openmrs.Concept; import org.openmrs.Encounter; import org.openmrs.Location; import org.openmrs.Patient; import org.openmrs.Visit; import org.openmrs.VisitAttribute; import org.openmrs.VisitAttributeType; import org.openmrs.VisitType; import org.openmrs.api.context.Context; import org.openmrs.test.BaseContextSensitiveTest; import org.openmrs.test.Verifies; /** * Tests methods in the {@link VisitService} * * @since 1.9 */ public class VisitServiceTest extends BaseContextSensitiveTest { protected static final String VISITS_WITH_DATES_XML = "org/openmrs/api/include/VisitServiceTest-otherVisits.xml"; protected static final String VISITS_ATTRIBUTES_XML = "org/openmrs/api/include/VisitServiceTest-visitAttributes.xml"; private VisitService service; @Before public void before() { service = Context.getVisitService(); } @Test @Verifies(value = "should get all visit types", method = "getAllVisitTypes()") public void getAllVisitTypes_shouldGetAllVisitTypes() throws Exception { List<VisitType> visitTypes = Context.getVisitService().getAllVisitTypes(); Assert.assertEquals(3, visitTypes.size()); } @Test @Verifies(value = "should get correct visit type", method = "getVisitType(Integer)") public void getVisitType_shouldGetCorrentVisitType() throws Exception { VisitType visitType = Context.getVisitService().getVisitType(1); Assert.assertNotNull(visitType); Assert.assertEquals("Initial HIV Clinic Visit", visitType.getName()); visitType = Context.getVisitService().getVisitType(2); Assert.assertNotNull(visitType); Assert.assertEquals("Return TB Clinic Visit", visitType.getName()); visitType = Context.getVisitService().getVisitType(3); Assert.assertNotNull(visitType); Assert.assertEquals("Hospitalization", visitType.getName()); visitType = Context.getVisitService().getVisitType(4); Assert.assertNull(visitType); } @Test @Verifies(value = "should get correct visit type", method = "getVisitTypeByUuid(String)") public void getVisitTypeByUuid_shouldGetCorrentVisitType() throws Exception { VisitType visitType = Context.getVisitService().getVisitTypeByUuid("c0c579b0-8e59-401d-8a4a-976a0b183519"); Assert.assertNotNull(visitType); Assert.assertEquals("Initial HIV Clinic Visit", visitType.getName()); visitType = Context.getVisitService().getVisitTypeByUuid("759799ab-c9a5-435e-b671-77773ada74e4"); Assert.assertNotNull(visitType); Assert.assertEquals("Return TB Clinic Visit", visitType.getName()); visitType = Context.getVisitService().getVisitTypeByUuid("759799ab-c9a5-435e-b671-77773ada74e6"); Assert.assertNotNull(visitType); Assert.assertEquals("Hospitalization", visitType.getName()); visitType = Context.getVisitService().getVisitTypeByUuid("759799ab-c9a5-435e-b671-77773ada74e1"); Assert.assertNull(visitType); } @Test @Verifies(value = "should get correct visit types", method = "getVisitTypes(String)") public void getVisitTypes_shouldGetCorrentVisitTypes() throws Exception { List<VisitType> visitTypes = Context.getVisitService().getVisitTypes("HIV Clinic"); Assert.assertNotNull(visitTypes); Assert.assertEquals(1, visitTypes.size()); Assert.assertEquals("Initial HIV Clinic Visit", visitTypes.get(0).getName()); visitTypes = Context.getVisitService().getVisitTypes("Clinic Visit"); Assert.assertNotNull(visitTypes); Assert.assertEquals(2, visitTypes.size()); Assert.assertEquals("Initial HIV Clinic Visit", visitTypes.get(0).getName()); Assert.assertEquals("Return TB Clinic Visit", visitTypes.get(1).getName()); visitTypes = Context.getVisitService().getVisitTypes("ClinicVisit"); Assert.assertNotNull(visitTypes); Assert.assertEquals(0, visitTypes.size()); } @Test @Verifies(value = "should save new visit type", method = "saveVisitType(VisitType)") public void saveVisitType_shouldSaveNewVisitType() throws Exception { List<VisitType> visitTypes = Context.getVisitService().getVisitTypes("Some Name"); Assert.assertEquals(0, visitTypes.size()); VisitType visitType = new VisitType("Some Name", "Description"); Context.getVisitService().saveVisitType(visitType); visitTypes = Context.getVisitService().getVisitTypes("Some Name"); Assert.assertEquals(1, visitTypes.size()); //Should create a new visit type row. Assert.assertEquals(4, Context.getVisitService().getAllVisitTypes().size()); } @Test @Verifies(value = "should save edited visit type", method = "saveVisitType(VisitType)") public void saveVisitType_shouldSaveEditedVisitType() throws Exception { VisitType visitType = Context.getVisitService().getVisitType(1); Assert.assertNotNull(visitType); Assert.assertEquals("Initial HIV Clinic Visit", visitType.getName()); visitType.setName("Edited Name"); visitType.setDescription("Edited Description"); Context.getVisitService().saveVisitType(visitType); visitType = Context.getVisitService().getVisitType(1); Assert.assertNotNull(visitType); Assert.assertEquals("Edited Name", visitType.getName()); Assert.assertEquals("Edited Description", visitType.getDescription()); //Should not change the number of visit types. Assert.assertEquals(3, Context.getVisitService().getAllVisitTypes().size()); } @Test @Verifies(value = "should retire given visit type", method = "retireVisitType(VisitType, String)") public void retireVisitType_shouldRetireGivenVisitType() throws Exception { VisitType visitType = Context.getVisitService().getVisitType(1); Assert.assertNotNull(visitType); Assert.assertFalse(visitType.isRetired()); Assert.assertNull(visitType.getRetireReason()); Context.getVisitService().retireVisitType(visitType, "retire reason"); visitType = Context.getVisitService().getVisitType(1); Assert.assertNotNull(visitType); Assert.assertTrue(visitType.isRetired()); Assert.assertEquals("retire reason", visitType.getRetireReason()); //Should not change the number of visit types. Assert.assertEquals(3, Context.getVisitService().getAllVisitTypes().size()); } @Test @Verifies(value = "should unretire given visit type", method = "unretireVisitType(VisitType)") public void unretireVisitType_shouldUnretireGivenVisitType() throws Exception { VisitType visitType = Context.getVisitService().getVisitType(3); Assert.assertNotNull(visitType); Assert.assertTrue(visitType.isRetired()); Assert.assertEquals("Some Retire Reason", visitType.getRetireReason()); Context.getVisitService().unretireVisitType(visitType); visitType = Context.getVisitService().getVisitType(3); Assert.assertNotNull(visitType); Assert.assertFalse(visitType.isRetired()); Assert.assertNull(visitType.getRetireReason()); //Should not change the number of visit types. Assert.assertEquals(3, Context.getVisitService().getAllVisitTypes().size()); } @Test @Verifies(value = "should delete given visit type", method = "purgeVisitType(VisitType)") public void purgeVisitType_shouldDeleteGivenVisitType() throws Exception { VisitType visitType = Context.getVisitService().getVisitType(3); Assert.assertNotNull(visitType); Context.getVisitService().purgeVisitType(visitType); visitType = Context.getVisitService().getVisitType(3); Assert.assertNull(visitType); //Should reduce the existing number of visit types. Assert.assertEquals(2, Context.getVisitService().getAllVisitTypes().size()); } /** * @see {@link VisitService#getAllVisits()} */ @Test @Verifies(value = "should return all unvoided visits", method = "getAllVisits()") public void getAllVisits_shouldReturnAllUnvoidedVisits() throws Exception { Assert.assertEquals(5, Context.getVisitService().getAllVisits().size()); } /** * @see {@link VisitService#getVisitByUuid(String)} */ @Test @Verifies(value = "should return a visit matching the specified uuid", method = "getVisitByUuid(String)") public void getVisitByUuid_shouldReturnAVisitMatchingTheSpecifiedUuid() throws Exception { Visit visit = Context.getVisitService().getVisitByUuid("1e5d5d48-6b78-11e0-93c3-18a905e044dc"); Assert.assertNotNull(visit); Assert.assertEquals(1, visit.getId().intValue()); } /** * @see {@link VisitService#saveVisit(Visit)} */ @Test @Verifies(value = "should add a new visit to the database", method = "saveVisit(Visit)") public void saveVisit_shouldAddANewVisitToTheDatabase() throws Exception { VisitService vs = Context.getVisitService(); Integer originalSize = vs.getAllVisits().size(); Visit visit = new Visit(new Patient(2), new VisitType(1), new Date()); visit = vs.saveVisit(visit); Assert.assertNotNull(visit.getId()); Assert.assertNotNull(visit.getUuid()); Assert.assertNotNull(visit.getCreator()); Assert.assertNotNull(visit.getDateCreated()); Assert.assertEquals(originalSize + 1, vs.getAllVisits().size()); } /** * @see {@link VisitService#saveVisit(Visit)} */ @Test @Ignore @Verifies(value = "should update an existing visit in the database", method = "saveVisit(Visit)") public void saveVisit_shouldUpdateAnExistingVisitInTheDatabase() throws Exception { Visit visit = Context.getVisitService().getVisit(1); Assert.assertNull(visit.getLocation()); Assert.assertNull(visit.getChangedBy()); Assert.assertNull(visit.getDateChanged()); visit.setLocation(new Location(1)); visit = Context.getVisitService().saveVisit(visit); //TODO Auditable interceptor is currently not able to set these fields as expected Assert.assertNotNull(visit.getChangedBy()); Assert.assertNotNull(visit.getDateChanged()); } /** * @see {@link VisitService#voidVisit(Visit,String)} */ @Test @Verifies(value = "should void the visit and set the voidReason", method = "voidVisit(Visit,String)") public void voidVisit_shouldVoidTheVisitAndSetTheVoidReason() throws Exception { Visit visit = Context.getVisitService().getVisit(1); Assert.assertFalse(visit.isVoided()); Assert.assertNull(visit.getVoidReason()); Assert.assertNull(visit.getVoidedBy()); Assert.assertNull(visit.getDateVoided()); visit = Context.getVisitService().voidVisit(visit, "test reason"); Assert.assertTrue(visit.isVoided()); Assert.assertEquals("test reason", visit.getVoidReason()); Assert.assertEquals(Context.getAuthenticatedUser(), visit.getVoidedBy()); Assert.assertNotNull(visit.getDateVoided()); } /** * @see {@link VisitService#unvoidVisit(Visit)} */ @Test @Verifies(value = "should unvoid the visit and unset all the void related fields", method = "unvoidVisit(Visit)") public void unvoidVisit_shouldUnvoidTheVisitAndUnsetAllTheVoidRelatedFields() throws Exception { Visit visit = Context.getVisitService().getVisit(6); Assert.assertTrue(visit.isVoided()); Assert.assertNotNull(visit.getVoidReason()); Assert.assertNotNull(visit.getVoidedBy()); Assert.assertNotNull(visit.getDateVoided()); visit = Context.getVisitService().unvoidVisit(visit); Assert.assertFalse(visit.isVoided()); Assert.assertNull(visit.getVoidReason()); Assert.assertNull(visit.getVoidedBy()); Assert.assertNull(visit.getDateVoided()); } /** * @see {@link VisitService#purgeVisit(Visit)} */ @Test @Verifies(value = "should erase the visit from the database", method = "purgeVisit(Visit)") public void purgeVisit_shouldEraseTheVisitFromTheDatabase() throws Exception { VisitService vs = Context.getVisitService(); Integer originalSize = vs.getVisits(null, null, null, null, null, null, null, null, null, true).size(); Visit visit = Context.getVisitService().getVisit(1); vs.purgeVisit(visit); Assert.assertEquals(originalSize - 1, vs.getVisits(null, null, null, null, null, null, null, null, null, true) .size()); } /** * @see {@link VisitService#getVisitsByPatient(Patient)} */ @Test @Verifies(value = "should return all unvoided visits for the specified patient", method = "getVisitsByPatient(Patient)") public void getVisitsByPatient_shouldReturnAllUnvoidedVisitsForTheSpecifiedPatient() throws Exception { Assert.assertEquals(3, Context.getVisitService().getVisitsByPatient(new Patient(2)).size()); } /** * @see {@link VisitService#getActiveVisitsByPatient(Patient)} */ @Test @Verifies(value = "should return all unvoided active visits for the specified patient", method = "getActiveVisitsByPatient(Patient)") public void getActiveVisitsByPatient_shouldReturnAllUnvoidedActiveVisitsForTheSpecifiedPatient() throws Exception { executeDataSet(VISITS_WITH_DATES_XML); Assert.assertEquals(4, Context.getVisitService().getActiveVisitsByPatient(new Patient(2)).size()); } /** * @see {@link VisitService#getVisits(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection, Date, Date, Date, Date, boolean)} */ @Test @Verifies(value = "should get visits by indications", method = "getVisits(Collection<VisitType>,Collection<Patient>,Collection<Location>,Collection<Concept>,Date,Date,Date,Date,boolean)") public void getVisits_shouldGetVisitsByIndications() throws Exception { Assert.assertEquals(1, Context.getVisitService().getVisits(null, null, null, Collections.singletonList(new Concept(5497)), null, null, null, null, null, false).size()); } /** * @see {@link VisitService#getVisits(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection, Date, Date, Date, Date, boolean)} */ @Test @Verifies(value = "should get visits by locations", method = "getVisits(Collection<VisitType>,Collection<Patient>,Collection<Location>,Collection<Concept>,Date,Date,Date,Date,boolean)") public void getVisits_shouldGetVisitsByLocations() throws Exception { List<Location> locations = new ArrayList<Location>(); locations.add(new Location(1)); Assert.assertEquals(1, Context.getVisitService().getVisits(null, null, locations, null, null, null, null, null, null, false).size()); } /** * @see {@link VisitService#getVisits(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection, Date, Date, Date, Date, boolean)} */ @Test @Verifies(value = "should get visits by visit type", method = "getVisits(Collection<VisitType>,Collection<Patient>,Collection<Location>,Collection<Concept>,Date,Date,Date,Date,boolean)") public void getVisits_shouldGetVisitsByVisitType() throws Exception { List<VisitType> visitTypes = new ArrayList<VisitType>(); visitTypes.add(new VisitType(1)); Assert.assertEquals(4, Context.getVisitService().getVisits(visitTypes, null, null, null, null, null, null, null, null, false).size()); } /** * @see {@link VisitService#getVisits(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection, Date, Date, Date, Date, boolean)} */ @Test @Verifies(value = "should get visits ended between the given end dates", method = "getVisits(Collection<VisitType>,Collection<Patient>,Collection<Location>,Collection<Concept>,Date,Date,Date,Date,boolean)") public void getVisits_shouldGetVisitsEndedBetweenTheGivenEndDates() throws Exception { executeDataSet(VISITS_WITH_DATES_XML); Calendar cal = Calendar.getInstance(); cal.set(2005, 01, 01, 00, 00, 00); Date minEndDate = cal.getTime(); cal.set(2005, 01, 02, 23, 59, 00); Date maxEndDate = cal.getTime(); Assert.assertEquals(2, Context.getVisitService().getVisits(null, null, null, null, null, null, minEndDate, maxEndDate, null, false).size()); } /** * @see {@link VisitService#getVisits(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection, Date, Date, Date, Date, boolean)} */ @Test @Verifies(value = "should get visits started between the given start dates", method = "getVisits(Collection<VisitType>,Collection<Patient>,Collection<Location>,Collection<Concept>,Date,Date,Date,Date,boolean)") public void getVisits_shouldGetVisitsStartedBetweenTheGivenStartDates() throws Exception { executeDataSet(VISITS_WITH_DATES_XML); Calendar cal = Calendar.getInstance(); cal.set(2005, 00, 01, 01, 00, 00); Date minStartDate = cal.getTime(); cal.set(2005, 00, 01, 04, 00, 00); Date maxStartDate = cal.getTime(); Assert.assertEquals(2, Context.getVisitService().getVisits(null, null, null, null, minStartDate, maxStartDate, null, null, null, false).size()); } /** * @see {@link VisitService#getVisits(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection, Date, Date, Date, Date, boolean)} */ @Test @Verifies(value = "should return all visits if includeVoided is set to true", method = "getVisits(Collection<VisitType>,Collection<Patient>,Collection<Location>,Collection<Concept>,Date,Date,Date,Date,boolean)") public void getVisits_shouldReturnAllVisitsIfIncludeVoidedIsSetToTrue() throws Exception { Assert.assertEquals(6, Context.getVisitService().getVisits(null, null, null, null, null, null, null, null, null, true).size()); } @Test(expected = APIException.class) @Verifies(value = "should throw error when name is null", method = "saveVisitType(VisitType)") public void saveVisitType_shouldThrowErrorWhenNameIsNull() throws Exception { Context.getVisitService().saveVisitType(new VisitType()); } @Test(expected = APIException.class) @Verifies(value = "should throw error when name is empty string", method = "saveVisitType(VisitType)") public void saveVisitType_shouldThrowErrorWhenNameIsEmptyString() throws Exception { VisitType visitType = new VisitType("", null); Context.getVisitService().saveVisitType(visitType); } /** * @see VisitService#getAllVisitAttributeTypes() * @verifies return all visit attribute types including retired ones */ @Test public void getAllVisitAttributeTypes_shouldReturnAllVisitAttributeTypesIncludingRetiredOnes() throws Exception { executeDataSet(VISITS_ATTRIBUTES_XML); Assert.assertEquals(2, service.getAllVisitAttributeTypes().size()); } /** * @see VisitService#getVisitAttributeType(Integer) * @verifies return the visit attribute type with the given id */ @Test public void getVisitAttributeType_shouldReturnTheVisitAttributeTypeWithTheGivenId() throws Exception { executeDataSet(VISITS_ATTRIBUTES_XML); Assert.assertEquals("Audit Date", service.getVisitAttributeType(1).getName()); } /** * @see VisitService#getVisitAttributeType(Integer) * @verifies return null if no visit attribute type exists with the given id */ @Test public void getVisitAttributeType_shouldReturnNullIfNoVisitAttributeTypeExistsWithTheGivenId() throws Exception { executeDataSet(VISITS_ATTRIBUTES_XML); Assert.assertNull(service.getVisitAttributeType(999)); } /** * @see VisitService#getVisitAttributeTypeByUuid(String) * @verifies return the visit attribute type with the given uuid */ @Test public void getVisitAttributeTypeByUuid_shouldReturnTheVisitAttributeTypeWithTheGivenUuid() throws Exception { executeDataSet(VISITS_ATTRIBUTES_XML); Assert.assertEquals("Audit Date", service.getVisitAttributeTypeByUuid("9516cc50-6f9f-11e0-8414-001e378eb67e") .getName()); } /** * @see VisitService#getVisitAttributeTypeByUuid(String) * @verifies return null if no visit attribute type exists with the given uuid */ @Test public void getVisitAttributeTypeByUuid_shouldReturnNullIfNoVisitAttributeTypeExistsWithTheGivenUuid() throws Exception { executeDataSet(VISITS_ATTRIBUTES_XML); Assert.assertNull(service.getVisitAttributeTypeByUuid("not-a-uuid")); } /** * @see VisitService#purgeVisitAttributeType(VisitAttributeType) * @verifies completely remove a visit attribute type */ @Test public void purgeVisitAttributeType_shouldCompletelyRemoveAVisitAttributeType() throws Exception { executeDataSet(VISITS_ATTRIBUTES_XML); Assert.assertEquals(2, service.getAllVisitAttributeTypes().size()); service.purgeVisitAttributeType(service.getVisitAttributeType(2)); Assert.assertEquals(1, service.getAllVisitAttributeTypes().size()); } /** * @see VisitService#retireVisitAttributeType(VisitAttributeType,String) * @verifies retire a visit attribute type */ @Test public void retireVisitAttributeType_shouldRetireAVisitAttributeType() throws Exception { executeDataSet(VISITS_ATTRIBUTES_XML); VisitAttributeType vat = service.getVisitAttributeType(1); Assert.assertFalse(vat.isRetired()); service.retireVisitAttributeType(vat, "for testing"); vat = service.getVisitAttributeType(1); Assert.assertTrue(vat.isRetired()); Assert.assertNotNull(vat.getRetiredBy()); Assert.assertNotNull(vat.getDateRetired()); Assert.assertEquals("for testing", vat.getRetireReason()); } /** * @see VisitService#saveVisitAttributeType(VisitAttributeType) * @verifies create a new visit attribute type */ @Test public void saveVisitAttributeType_shouldCreateANewVisitAttributeType() throws Exception { executeDataSet(VISITS_ATTRIBUTES_XML); Assert.assertEquals(2, service.getAllVisitAttributeTypes().size()); VisitAttributeType vat = new VisitAttributeType(); vat.setName("Another one"); vat.setDatatype("string"); service.saveVisitAttributeType(vat); Assert.assertEquals(3, service.getAllVisitAttributeTypes().size()); } /** * @see VisitService#saveVisitAttributeType(VisitAttributeType) * @verifies edit an existing visit attribute type */ @Test public void saveVisitAttributeType_shouldEditAnExistingVisitAttributeType() throws Exception { executeDataSet(VISITS_ATTRIBUTES_XML); Assert.assertEquals(2, service.getAllVisitAttributeTypes().size()); VisitAttributeType vat = service.getVisitAttributeType(1); vat.setName("A new name"); service.saveVisitAttributeType(vat); Assert.assertEquals(2, service.getAllVisitAttributeTypes().size()); Assert.assertEquals("A new name", service.getVisitAttributeType(1).getName()); } /** * @see VisitService#unretireVisitAttributeType(VisitAttributeType) * @verifies unretire a retired visit attribute type */ @Test public void unretireVisitAttributeType_shouldUnretireARetiredVisitAttributeType() throws Exception { executeDataSet(VISITS_ATTRIBUTES_XML); VisitAttributeType vat = service.getVisitAttributeType(2); Assert.assertTrue(vat.isRetired()); Assert.assertNotNull(vat.getDateRetired()); Assert.assertNotNull(vat.getRetiredBy()); Assert.assertNotNull(vat.getRetireReason()); service.unretireVisitAttributeType(vat); Assert.assertFalse(vat.isRetired()); Assert.assertNull(vat.getDateRetired()); Assert.assertNull(vat.getRetiredBy()); Assert.assertNull(vat.getRetireReason()); } /** * @see VisitService#getVisitAttributeByUuid(String) * @verifies get the visit attribute with the given uuid */ @Test public void getVisitAttributeByUuid_shouldGetTheVisitAttributeWithTheGivenUuid() throws Exception { executeDataSet(VISITS_ATTRIBUTES_XML); Assert.assertEquals("2011-04-25", service.getVisitAttributeByUuid("3a2bdb18-6faa-11e0-8414-001e378eb67e") .getSerializedValue()); } /** * @see VisitService#getVisitAttributeByUuid(String) * @verifies return null if no visit attribute has the given uuid */ @Test public void getVisitAttributeByUuid_shouldReturnNullIfNoVisitAttributeHasTheGivenUuid() throws Exception { executeDataSet(VISITS_ATTRIBUTES_XML); Assert.assertNull(service.getVisitAttributeByUuid("not-a-uuid")); } /** * @see VisitService#getVisits(Collection,Collection,Collection,Collection,Date,Date,Date,Date,Map,boolean) * @verifies get all visits with given attribute values */ @Test public void getVisits_shouldGetAllVisitsWithGivenAttributeValues() throws Exception { executeDataSet(VISITS_ATTRIBUTES_XML); Map<VisitAttributeType, Object> attrs = new HashMap<VisitAttributeType, Object>(); attrs.put(service.getVisitAttributeType(1), new SimpleDateFormat("yyyy-MM-dd").parse("2011-04-25")); List<Visit> visits = service.getVisits(null, null, null, null, null, null, null, null, attrs, false); Assert.assertEquals(1, visits.size()); Assert.assertEquals(Integer.valueOf(1), visits.get(0).getVisitId()); } /** * @see VisitService#getVisits(Collection,Collection,Collection,Collection,Date,Date,Date,Date,Map,boolean) * @verifies not find any visits if none have given attribute values */ @Test public void getVisits_shouldNotFindAnyVisitsIfNoneHaveGivenAttributeValues() throws Exception { executeDataSet(VISITS_ATTRIBUTES_XML); Map<VisitAttributeType, Object> attrs = new HashMap<VisitAttributeType, Object>(); attrs.put(service.getVisitAttributeType(1), new SimpleDateFormat("yyyy-MM-dd").parse("1411-04-25")); List<Visit> visits = service.getVisits(null, null, null, null, null, null, null, null, attrs, false); Assert.assertEquals(0, visits.size()); } /** * @see {@link VisitService#saveVisit(Visit)} */ @Test(expected = APIException.class) @Verifies(value = "should fail if validation errors are found", method = "saveVisit(Visit)") public void saveVisit_shouldFailIfValidationErrorsAreFound() throws Exception { VisitService vs = Context.getVisitService(); Visit visit = new Visit(); //Not setting the patient so that we get validation errors visit.setVisitType(vs.getVisitType(1)); visit.setStartDatetime(new Date()); Context.getVisitService().saveVisit(visit); } /** * @see {@link VisitService#saveVisit(Visit)} */ @Test @Verifies(value = "should pass if no validation errors are found", method = "saveVisit(Visit)") public void saveVisit_shouldPassIfNoValidationErrorsAreFound() throws Exception { VisitService vs = Context.getVisitService(); Visit visit = new Visit(); visit.setPatient(Context.getPatientService().getPatient(2)); visit.setVisitType(vs.getVisitType(1)); visit.setStartDatetime(new Date()); Context.getVisitService().saveVisit(visit); } /** * @see {@link VisitService#purgeVisit(Visit)} */ @Test(expected = APIException.class) @Verifies(value = "should fail if the visit has encounters associated to it", method = "purgeVisit(Visit)") public void purgeVisit_shouldFailIfTheVisitHasEncountersAssociatedToIt() throws Exception { Visit visit = Context.getVisitService().getVisit(1); Encounter e = Context.getEncounterService().getEncounter(3); e.setVisit(visit); Context.getEncounterService().saveEncounter(e); //sanity check Assert.assertTrue(Context.getEncounterService().getEncountersByVisit(visit).size() > 0); Context.getVisitService().purgeVisit(visit); } /** * @see VisitService#saveVisit(Visit) * @verifies be able to add an attribute to a visit */ @Test public void saveVisit_shouldBeAbleToAddAnAttributeToAVisit() throws Exception { Visit visit = service.getVisit(1); VisitAttributeType attrType = service.getVisitAttributeType(1); VisitAttribute attr = new VisitAttribute(); attr.setAttributeType(attrType); attr.setObjectValue(new Date()); visit.addAttribute(attr); service.saveVisit(visit); } }