View Javadoc
1   /*
2    * Copyright 2009 the original author or authors.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *     
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.openehealth.ipf.commons.ihe.xds.core.transform.requests.ebxml30;
17  
18  import static org.junit.Assert.*;
19  
20  import java.util.Arrays;
21  import java.util.Collections;
22  import java.util.List;
23  
24  import org.junit.Before;
25  import org.junit.Test;
26  import org.openehealth.ipf.commons.ihe.xds.core.ebxml.EbXMLAdhocQueryRequest;
27  import org.openehealth.ipf.commons.ihe.xds.core.ebxml.EbXMLSlot;
28  import org.openehealth.ipf.commons.ihe.xds.core.ebxml.ebxml30.EbXMLFactory30;
29  import org.openehealth.ipf.commons.ihe.xds.core.requests.query.GetDocumentsQuery;
30  import org.openehealth.ipf.commons.ihe.xds.core.requests.query.QueryList;
31  import org.openehealth.ipf.commons.ihe.xds.core.requests.query.QueryType;
32  import org.openehealth.ipf.commons.ihe.xds.core.transform.requests.QueryParameter;
33  import org.openehealth.ipf.commons.ihe.xds.core.transform.requests.query.GetDocumentsQueryTransformer;
34  
35  /**
36   * Tests for {@link GetDocumentsQueryTransformer}.
37   * @author Jens Riemschneider
38   */
39  public class GetDocumentsQueryTransformerTest {
40      private GetDocumentsQueryTransformer transformer;
41      private GetDocumentsQuery query;
42      private EbXMLAdhocQueryRequest ebXML;
43      
44      @Before
45      public void setUp() {
46          transformer = new GetDocumentsQueryTransformer();
47          query = new GetDocumentsQuery();
48  
49          query.setUuids(Arrays.asList("uuid1", "uuid2"));
50          query.setUniqueIds(Arrays.asList("uniqueId1", "uniqueId2"));
51          query.setHomeCommunityId("home");
52  
53          QueryList<String> extraParams1 = new QueryList<>();
54          extraParams1.getOuterList().add(Arrays.asList("para-11", "para-12"));
55          extraParams1.getOuterList().add(Arrays.asList("para-21", "para-22", "para-23"));
56  
57          QueryList<String> extraParams2 = new QueryList<>();
58          extraParams2.getOuterList().add(Arrays.asList("dia-31", "dia-32", "dia-33"));
59          extraParams2.getOuterList().add(Collections.singletonList("dia-41"));
60  
61          query.getExtraParameters().put("$PatientPerimeter", extraParams1);
62          query.getExtraParameters().put("$PatientDiameter", extraParams2);
63  
64          ebXML = new EbXMLFactory30().createAdhocQueryRequest();
65      }
66      
67      @Test
68      public void testToEbXML() {
69          transformer.toEbXML(query, ebXML);
70          assertEquals(QueryType.GET_DOCUMENTS.getId(), ebXML.getId());
71          
72          assertEquals(Arrays.asList("('uuid1')", "('uuid2')"),
73                  ebXML.getSlotValues(QueryParameter.DOC_ENTRY_UUID.getSlotName()));
74          
75          assertEquals(Arrays.asList("('uniqueId1')", "('uniqueId2')"),
76                  ebXML.getSlotValues(QueryParameter.DOC_ENTRY_UNIQUE_ID.getSlotName()));
77  
78          List<EbXMLSlot> perimeters = ebXML.getSlots("$PatientPerimeter");
79          assertEquals(2, perimeters.size());
80          assertEquals(Arrays.asList("('para-11')", "('para-12')"), perimeters.get(0).getValueList());
81          assertEquals(Arrays.asList("('para-21')", "('para-22')", "('para-23')"), perimeters.get(1).getValueList());
82  
83          List<EbXMLSlot> diameters = ebXML.getSlots("$PatientDiameter");
84          assertEquals(2, diameters.size());
85          assertEquals(Arrays.asList("('dia-31')", "('dia-32')", "('dia-33')"), diameters.get(0).getValueList());
86          assertEquals(Collections.singletonList("('dia-41')"), diameters.get(1).getValueList());
87  
88          assertEquals(Arrays.asList("('uniqueId1')", "('uniqueId2')"),
89                  ebXML.getSlotValues(QueryParameter.DOC_ENTRY_UNIQUE_ID.getSlotName()));
90  
91          assertEquals("home", ebXML.getHome());
92          assertEquals(6, ebXML.getSlots().size());
93      }
94  
95      @Test
96      public void testRoundtrip() {
97          transformer.toEbXML(query, ebXML);
98          GetDocumentsQuery otherQuery = new GetDocumentsQuery();
99          transformer.fromEbXML(otherQuery, ebXML);
100         assertEquals(query, otherQuery);
101     }
102 
103     @Test
104     public void testToEbXMLNull() {
105         transformer.toEbXML(null, ebXML);
106         assertEquals(0, ebXML.getSlots().size());
107     }
108     
109     @Test
110     public void testToEbXMLEmpty() {
111         transformer.toEbXML(new GetDocumentsQuery(), ebXML);
112         assertEquals(0, ebXML.getSlots().size());
113     }
114 
115     
116     
117     @Test
118     public void testFromEbXML() {
119         transformer.toEbXML(query, ebXML);
120         GetDocumentsQuery result = new GetDocumentsQuery();
121         transformer.fromEbXML(result, ebXML);
122         
123         assertEquals(query, result);
124     }
125     
126     @Test
127     public void testFromEbXMLNull() {
128         GetDocumentsQuery result = new GetDocumentsQuery();
129         transformer.fromEbXML(result, null);        
130         assertEquals(new GetDocumentsQuery(), result);
131     }
132         
133     @Test
134     public void testFromEbXMLEmpty() {
135         GetDocumentsQuery result = new GetDocumentsQuery();
136         transformer.fromEbXML(result, ebXML);        
137         assertEquals(new GetDocumentsQuery(), result);
138     }
139 }