Package org.openmrs.module.htmlformentry

Source Code of org.openmrs.module.htmlformentry.StandardRegimenElement1_10Test

package org.openmrs.module.htmlformentry;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Before;
import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.openmrs.Drug;
import org.openmrs.Encounter;
import org.openmrs.Order;
import org.openmrs.Patient;
import org.openmrs.api.AdministrationService;
import org.openmrs.api.context.Context;
import org.openmrs.api.context.ServiceContext;
import org.openmrs.test.BaseModuleContextSensitiveTest;
import org.openmrs.util.OpenmrsConstants;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.test.annotation.DirtiesContext;

import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import static org.hamcrest.Matchers.*;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

@DirtiesContext
public class StandardRegimenElement1_10Test extends BaseModuleContextSensitiveTest {
 
  protected final Log log = LogFactory.getLog(getClass());
 
  protected static final String XML_DATASET_PATH = "org/openmrs/module/htmlformentry/include/";
 
  protected static final String XML_REGRESSION_TEST_DATASET = "regressionTestDataSet";
 
  protected static final String XML_DRUG_ORDER_ELEMENT_DATASET = "drugOrderElementDataSet";
 
  protected static final String XML_HTML_FORM_ENTRY_REGIMEN_UTIL_TEST_DATASET = "RegimenUtils1_10Test.xml";
 
  @Before
  public void setupDatabase() throws Exception {
    executeDataSet(XML_DATASET_PATH + new TestUtil().getTestDatasetFilename(XML_REGRESSION_TEST_DATASET));
    executeDataSet(XML_DATASET_PATH + new TestUtil().getTestDatasetFilename(XML_DRUG_ORDER_ELEMENT_DATASET));
  }

    private int orderNumberCounter = 1;

    @Before
    public void setUp() throws Exception {
        String xml = (new TestUtil()).loadXmlFromFile(XML_HTML_FORM_ENTRY_REGIMEN_UTIL_TEST_DATASET);

        // used to avoid lock timeout on GP#order.nextOrderNumberSeed
        AdministrationService administrationService = mock(AdministrationService.class);

        when(administrationService.getGlobalProperty(OpenmrsConstants.GLOBAL_PROPERTY_STANDARD_DRUG_REGIMENS))
                .thenReturn(xml);

        when(administrationService.getGlobalProperty("")).thenAnswer(new Answer<String>() {
            @Override
            public String answer(InvocationOnMock invocationOnMock) throws Throwable {
                return "" + orderNumberCounter++;
            }
        });

        ServiceContext.getInstance().setAdministrationService(administrationService);
    }

  @Test
  public void testStandardRegimenTag_shouldCreateAndEditStandardRegimen() throws Exception {
    new RegressionTestHelper() {

      final Date date = new Date();

      private Encounter encounter;

      @Override
      public String getFormName() {
        return "standardRegimenTestForm";
      }

      @Override
      public Patient getPatient() {
        return Context.getPatientService().getPatient(6);
      }

      @Override
      public String[] widgetLabels() {
        return new String[] { "Date:", "Location:", "Provider:" };

      }

      @Override
      public void testBlankFormHtml(String html) {
      }

      @Override
      public void setupRequest(MockHttpServletRequest request, Map<String, String> widgets) {
        request.addParameter(widgets.get("Date:"), dateAsString(date));
        request.addParameter(widgets.get("Location:"), "2");
        request.addParameter(widgets.get("Provider:"), "502");
        //w7 is the standardRegimen tag
        request.addParameter("w7", "all3");
        //start date
        request.addParameter("w9", dateAsString(date));
        //care setting
        request.addParameter("w15", "2");
      }

      @Override
      public void testResults(SubmissionResults results) {
        results.assertNoErrors();
        results.assertEncounterCreated();
        encounter = results.getEncounterCreated();

        Drug drug2 = Context.getConceptService().getDrug(2);
        Drug drug3 = Context.getConceptService().getDrug(3);
        Drug drug11 = Context.getConceptService().getDrug(11);

        assertThat(
            encounter.getOrders(),
            containsInAnyOrder(
                allOf(hasProperty("drug", is(drug2)), hasProperty("dose", is(1.0)),
                    hasProperty("dateActivated", is(ymdToDate(dateAsString(date))))),
                allOf(hasProperty("drug", is(drug3)), hasProperty("dose", is(1.0)),
                    hasProperty("dateActivated", is(ymdToDate(dateAsString(date))))),
                allOf(hasProperty("drug", is(drug11)), hasProperty("dose", is(1.0)),
                    hasProperty("dateActivated", is(ymdToDate(dateAsString(date)))))));
      }

      @Override
      public Encounter getEncounterToEdit() {
        return encounter;
      }

      @Override
      public void testEditFormHtml(String html) {
        System.out.println(html);
      }

      @Override
      public void setupEditRequest(MockHttpServletRequest request, Map<String, String> widgets) {
        //w7 is the standardRegimen tag
        request.setParameter("w7", "drug2and3");
        //start date
        request.setParameter("w9", dateAsString(date));
        //care setting
        request.setParameter("w15", "2");
      }

      public void testEditedResults(SubmissionResults results) {
        Encounter editedEncounter = results.getEncounterCreated();

        Drug drug2 = Context.getConceptService().getDrug(2);
        Drug drug3 = Context.getConceptService().getDrug(3);

        Set<Order> orders = new HashSet<Order>(editedEncounter.getOrders());
        for (Iterator<Order> it = orders.iterator(); it.hasNext();) {
          Order order = it.next();
          if (order.isVoided()) {
            it.remove();
          }
        }

        assertThat(
            orders,
            containsInAnyOrder(
                allOf(hasProperty("drug", is(drug2)), hasProperty("dose", is(1.0)),
                    hasProperty("dateActivated", is(ymdToDate(dateAsString(date))))),
                allOf(hasProperty("drug", is(drug3)), hasProperty("dose", is(200.0)),
                    hasProperty("dateActivated", is(ymdToDate(dateAsString(date)))))));
      }
    }.run();
  }
}
TOP

Related Classes of org.openmrs.module.htmlformentry.StandardRegimenElement1_10Test

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.