/**
* 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.report;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
/**
* Tests the small class ReportSchemaXml without database accesses
*/
public class ReportSchemaXmlNonContextTest {
/**
* Test the updateFromAttributes method
*
* @throws Exception
*/
@Test
public void shouldUpdateFromAttributes() throws Exception {
StringBuilder xml = new StringBuilder();
xml.append("<reportSchema id=\"1\">\n");
xml.append(" <name>PEPFAR report</name>\n");
xml.append(" <description>\n");
xml.append(" Sample monthly PEPFAR report, modeled after the lesotho one\n");
xml.append(" </description>\n");
xml.append(" <parameters class=\"java.util.ArrayList\">\n");
xml
.append(" <parameter clazz=\"java.util.Date\"><name>report.startDate</name><label>When does the report period start?</label></parameter>/>\n");
xml
.append(" <parameter clazz=\"java.util.Date\"><name>report.endDate</name><label>When does the report period end?</label></parameter>\n");
xml
.append(" <parameter clazz=\"org.openmrs.Location\"><name>report.location</name><label>For which clinic is this report?</label></parameter>\n");
xml.append(" </parameters>\n");
xml.append(" <dataSets class=\"java.util.ArrayList\">\n");
xml.append(" <dataSetDefinition class=\"org.openmrs.dataset.CohortDataSetDefinition\" name=\"Cohorts\">\n");
xml.append(" <strategies class=\"java.util.LinkedHashMap\">\n");
xml.append(" <entry>\n");
xml.append(" <string>1.a</string>\n");
xml.append(" <cohort class=\"org.openmrs.reporting.PatientSearch\">\n");
xml.append(" <specification>[Male]</specification>\n");
xml.append(" </cohort>\n");
xml.append(" </entry>\n");
xml.append(" <entry>\n");
xml.append(" <string>1.b</string>\n");
xml.append(" <cohort class=\"org.openmrs.reporting.PatientSearch\">\n");
xml
.append(" <specification>[Male] and [Adult] and [EnrolledOnDate|untilDate=${report.startDate - 1d}]</specification>\n");
xml.append(" </cohort>\n");
xml.append(" </entry>\n");
xml.append(" </strategies>\n");
xml.append(" </dataSetDefinition>\n");
xml.append(" </dataSets>\n");
xml.append("</reportSchema>\n");
// create and check the report schema object
ReportSchemaXml reportSchemaXml = new ReportSchemaXml();
reportSchemaXml.setXml(xml.toString());
reportSchemaXml.setReportSchemaId(1);
reportSchemaXml.updateXmlFromAttributes();
String newXml = reportSchemaXml.getXml();
assertTrue("The id in the xml should be set from the reportSchemaXml object", newXml
.contains(" reportSchemaId=\"1\" "));
// now test with reportSchemaId already set
xml = new StringBuilder();
xml.append("<reportSchema id=\"1\" reportSchemaId=\"123\">\n");
xml.append(" <name>PEPFAR report</name>\n");
xml.append(" <description>\n");
xml.append(" Sample monthly PEPFAR report, modeled after the lesotho one\n");
xml.append(" </description>\n");
xml.append(" <parameters class=\"java.util.ArrayList\">\n");
xml
.append(" <parameter clazz=\"java.util.Date\"><name>report.startDate</name><label>When does the report period start?</label></parameter>/>\n");
xml
.append(" <parameter clazz=\"java.util.Date\"><name>report.endDate</name><label>When does the report period end?</label></parameter>\n");
xml
.append(" <parameter clazz=\"org.openmrs.Location\"><name>report.location</name><label>For which clinic is this report?</label></parameter>\n");
xml.append(" </parameters>\n");
xml.append(" <dataSets class=\"java.util.ArrayList\">\n");
xml.append(" <dataSetDefinition class=\"org.openmrs.dataset.CohortDataSetDefinition\" name=\"Cohorts\">\n");
xml.append(" <strategies class=\"java.util.LinkedHashMap\">\n");
xml.append(" <entry>\n");
xml.append(" <string>1.a</string>\n");
xml.append(" <cohort class=\"org.openmrs.reporting.PatientSearch\">\n");
xml.append(" <specification>[Male]</specification>\n");
xml.append(" </cohort>\n");
xml.append(" </entry>\n");
xml.append(" <entry>\n");
xml.append(" <string>1.b</string>\n");
xml.append(" <cohort class=\"org.openmrs.reporting.PatientSearch\">\n");
xml
.append(" <specification>[Male] and [Adult] and [EnrolledOnDate|untilDate=${report.startDate - 1d}]</specification>\n");
xml.append(" </cohort>\n");
xml.append(" </entry>\n");
xml.append(" </strategies>\n");
xml.append(" </dataSetDefinition>\n");
xml.append(" </dataSets>\n");
xml.append("</reportSchema>\n");
// create and check the report schema object
reportSchemaXml = new ReportSchemaXml();
reportSchemaXml.setXml(xml.toString());
reportSchemaXml.setReportSchemaId(12);
reportSchemaXml.updateXmlFromAttributes();
newXml = reportSchemaXml.getXml();
assertTrue("The id in the xml should be set from the reportSchemaXml object", newXml
.contains(" reportSchemaId=\"12\">"));
xml = new StringBuilder();
xml.append("<reportSchema id=\"1\" reportSchemaId=\'1\'>\n");
xml.append(" <name>PEPFAR report</name>\n");
xml.append(" <description>\n");
xml.append(" Sample monthly PEPFAR report, modeled after the lesotho one\n");
xml.append(" </description>\n");
xml.append(" <parameters class=\"java.util.ArrayList\">\n");
xml
.append(" <parameter clazz=\"java.util.Date\"><name>report.startDate</name><label>When does the report period start?</label></parameter>/>\n");
xml
.append(" <parameter clazz=\"java.util.Date\"><name>report.endDate</name><label>When does the report period end?</label></parameter>\n");
xml
.append(" <parameter clazz=\"org.openmrs.Location\"><name>report.location</name><label>For which clinic is this report?</label></parameter>\n");
xml.append(" </parameters>\n");
xml.append(" <dataSets class=\"java.util.ArrayList\">\n");
xml.append(" <dataSetDefinition class=\"org.openmrs.dataset.CohortDataSetDefinition\" name=\"Cohorts\">\n");
xml.append(" <strategies class=\"java.util.LinkedHashMap\">\n");
xml.append(" <entry>\n");
xml.append(" <string>1.a</string>\n");
xml.append(" <cohort class=\"org.openmrs.reporting.PatientSearch\">\n");
xml.append(" <specification>[Male]</specification>\n");
xml.append(" </cohort>\n");
xml.append(" </entry>\n");
xml.append(" <entry>\n");
xml.append(" <string>1.b</string>\n");
xml.append(" <cohort class=\"org.openmrs.reporting.PatientSearch\">\n");
xml
.append(" <specification>[Male] and [Adult] and [EnrolledOnDate|untilDate=${report.startDate - 1d}]</specification>\n");
xml.append(" </cohort>\n");
xml.append(" </entry>\n");
xml.append(" </strategies>\n");
xml.append(" </dataSetDefinition>\n");
xml.append(" </dataSets>\n");
xml.append("</reportSchema>\n");
// create and check the report schema object
reportSchemaXml = new ReportSchemaXml();
reportSchemaXml.setXml(xml.toString());
reportSchemaXml.setReportSchemaId(1234);
reportSchemaXml.updateXmlFromAttributes();
newXml = reportSchemaXml.getXml();
assertTrue("The id in the xml should be set from the reportSchemaXml object", newXml
.contains(" reportSchemaId=\"1234\">"));
xml = new StringBuilder();
xml.append("<reportSchema reportSchemaId=\'1\' id=\"1\">\n");
xml.append(" <name>PEPFAR report</name>\n");
xml.append(" <description>\n");
xml.append(" Sample monthly PEPFAR report, modeled after the lesotho one\n");
xml.append(" </description>\n");
xml.append(" <parameters class=\"java.util.ArrayList\">\n");
xml
.append(" <parameter clazz=\"java.util.Date\"><name>report.startDate</name><label>When does the report period start?</label></parameter>/>\n");
xml
.append(" <parameter clazz=\"java.util.Date\"><name>report.endDate</name><label>When does the report period end?</label></parameter>\n");
xml
.append(" <parameter clazz=\"org.openmrs.Location\"><name>report.location</name><label>For which clinic is this report?</label></parameter>\n");
xml.append(" </parameters>\n");
xml.append(" <dataSets class=\"java.util.ArrayList\">\n");
xml.append(" <dataSetDefinition class=\"org.openmrs.dataset.CohortDataSetDefinition\" name=\"Cohorts\">\n");
xml.append(" <strategies class=\"java.util.LinkedHashMap\">\n");
xml.append(" <entry>\n");
xml.append(" <string>1.a</string>\n");
xml.append(" <cohort class=\"org.openmrs.reporting.PatientSearch\">\n");
xml.append(" <specification>[Male]</specification>\n");
xml.append(" </cohort>\n");
xml.append(" </entry>\n");
xml.append(" <entry>\n");
xml.append(" <string>1.b</string>\n");
xml.append(" <cohort class=\"org.openmrs.reporting.PatientSearch\">\n");
xml
.append(" <specification>[Male] and [Adult] and [EnrolledOnDate|untilDate=${report.startDate - 1d}]</specification>\n");
xml.append(" </cohort>\n");
xml.append(" </entry>\n");
xml.append(" </strategies>\n");
xml.append(" </dataSetDefinition>\n");
xml.append(" </dataSets>\n");
xml.append("</reportSchema>\n");
// create and check the report schema object
reportSchemaXml = new ReportSchemaXml();
reportSchemaXml.setXml(xml.toString());
reportSchemaXml.setReportSchemaId(1234);
reportSchemaXml.updateXmlFromAttributes();
newXml = reportSchemaXml.getXml();
assertTrue("The id in the xml should be set from the reportSchemaXml object", newXml
.contains(" reportSchemaId=\"1234\" "));
}
}