/**
* 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.db;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotSame;
import java.util.Date;
import org.junit.Before;
import org.junit.Test;
import org.openmrs.Encounter;
import org.openmrs.api.EncounterService;
import org.openmrs.api.context.Context;
import org.openmrs.api.db.hibernate.HibernateEncounterDAO;
import org.openmrs.test.BaseContextSensitiveTest;
import org.openmrs.test.Verifies;
/**
* This class tests the {@link EncounterDAO} linked to from the Context. Currently that file is the
* {@link HibernateEncounterDAO} This should only have to test methods that don't really have
* equivalents at the {@link EncounterService} layer.
*/
public class EncounterDAOTest extends BaseContextSensitiveTest {
private EncounterDAO dao = null;
/**
* Run this before each unit test in this class. The "@Before" method in
* {@link BaseContextSensitiveTest} is run right before this method.
*
* @throws Exception
*/
@Before
public void runBeforeEachTest() throws Exception {
executeDataSet("org/openmrs/api/db/include/EncounterDAOTest-initialData.xml");
if (dao == null)
// fetch the dao from the spring application context
// this bean name matches the name in /metadata/spring/applicationContext-service.xml
dao = (EncounterDAO) applicationContext.getBean("encounterDAO");
}
/**
* @see {@link EncounterDAO#getSavedEncounterDatetime(Encounter)}
*/
@Test
@Verifies(value = "should get saved encounter datetime from database", method = "getSavedEncounterDatetime(Encounter)")
public void getSavedEncounterDatetime_shouldGetSavedEncounterDatetimeFromDatabase() throws Exception {
Encounter encounter = Context.getEncounterService().getEncounter(1);
Date newDate = new Date();
// sanity check: make sure the date on the encounter isn't "right now"
assertNotSame(encounter.getEncounterDatetime(), newDate);
// save the date from the db for later checks
Date origDate = encounter.getEncounterDatetime();
// change the date on the java pojo (NOT in the database)
encounter.setEncounterDatetime(newDate);
// the value from the database should match the original date from the
// encounter right after /it/ was fetched from the database
Date encounterDateFromDatabase = dao.getSavedEncounterDatetime(encounter);
assertEquals(origDate, encounterDateFromDatabase);
}
}