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  import org.junit.Before;
24  import org.junit.Test;
25  import org.openehealth.ipf.commons.ihe.xds.core.ebxml.EbXMLAdhocQueryRequest;
26  import org.openehealth.ipf.commons.ihe.xds.core.ebxml.EbXMLSlot;
27  import org.openehealth.ipf.commons.ihe.xds.core.ebxml.ebxml30.EbXMLFactory30;
28  import org.openehealth.ipf.commons.ihe.xds.core.metadata.AssigningAuthority;
29  import org.openehealth.ipf.commons.ihe.xds.core.metadata.AvailabilityStatus;
30  import org.openehealth.ipf.commons.ihe.xds.core.metadata.Code;
31  import org.openehealth.ipf.commons.ihe.xds.core.metadata.Identifiable;
32  import org.openehealth.ipf.commons.ihe.xds.core.requests.query.FindFoldersQuery;
33  import org.openehealth.ipf.commons.ihe.xds.core.requests.query.QueryList;
34  import org.openehealth.ipf.commons.ihe.xds.core.requests.query.QueryType;
35  import org.openehealth.ipf.commons.ihe.xds.core.transform.requests.QueryParameter;
36  import org.openehealth.ipf.commons.ihe.xds.core.transform.requests.query.FindFoldersQueryTransformer;
37  
38  /**
39   * Tests for {@link FindFoldersQueryTransformer}.
40   * @author Jens Riemschneider
41   */
42  public class FindFoldersQueryTransformerTest {
43      private FindFoldersQueryTransformer transformer;
44      private FindFoldersQuery query;
45      private EbXMLAdhocQueryRequest ebXML;
46      
47      @Before
48      public void setUp() {
49          transformer = new FindFoldersQueryTransformer();
50          query = new FindFoldersQuery();
51          
52          query.setPatientId(new Identifiable("id1", new AssigningAuthority("uni1", "uniType1")));
53          query.getLastUpdateTime().setFrom("20150102030405");
54          query.getLastUpdateTime().setTo("20150102030406");
55          QueryList<Code> codes = new QueryList<>();
56          codes.getOuterList().add(
57                  Arrays.asList(new Code("code7", null, "scheme7"), new Code("code8", null, "scheme8")));
58          codes.getOuterList().add(
59                  Collections.singletonList(new Code("code9", null, "scheme9")));
60          query.setCodes(codes);
61          query.setStatus(Arrays.asList(AvailabilityStatus.APPROVED, AvailabilityStatus.SUBMITTED));
62          query.setHomeCommunityId("12.21.41");
63  
64          ebXML = new EbXMLFactory30().createAdhocQueryRequest();
65      }
66      
67      @Test
68      public void testToEbXML() {
69          transformer.toEbXML(query, ebXML);
70          assertEquals(QueryType.FIND_FOLDERS.getId(), ebXML.getId());
71          assertEquals("12.21.41", ebXML.getHome());
72  
73          assertEquals(Collections.singletonList("'id1^^^&uni1&uniType1'"),
74                  ebXML.getSlotValues(QueryParameter.FOLDER_PATIENT_ID.getSlotName()));
75          
76          assertEquals(Collections.singletonList("20150102030405"),
77                  ebXML.getSlotValues(QueryParameter.FOLDER_LAST_UPDATE_TIME_FROM.getSlotName()));
78          assertEquals(Collections.singletonList("20150102030406"),
79                  ebXML.getSlotValues(QueryParameter.FOLDER_LAST_UPDATE_TIME_TO.getSlotName()));
80  
81          List<EbXMLSlot> slots = ebXML.getSlots(QueryParameter.FOLDER_CODES.getSlotName());
82          assertEquals(2, slots.size());
83          assertEquals(Arrays.asList("('code7^^scheme7')", "('code8^^scheme8')"), slots.get(0).getValueList());
84          assertEquals(Collections.singletonList("('code9^^scheme9')"), slots.get(1).getValueList());
85          
86          assertEquals(Arrays.asList("('urn:oasis:names:tc:ebxml-regrep:StatusType:Approved')", "('urn:oasis:names:tc:ebxml-regrep:StatusType:Submitted')"),
87                  ebXML.getSlotValues(QueryParameter.FOLDER_STATUS.getSlotName()));
88          
89          assertEquals(6, ebXML.getSlots().size());
90      }
91      
92      @Test
93      public void testToEbXMLNull() {
94          transformer.toEbXML(null, ebXML);
95          assertEquals(0, ebXML.getSlots().size());
96      }
97      
98      @Test
99      public void testToEbXMLEmpty() {
100         transformer.toEbXML(new FindFoldersQuery(), ebXML);
101         assertEquals(0, ebXML.getSlots().size());
102     }
103 
104 
105 
106     @Test
107     public void testFromEbXML() {
108         transformer.toEbXML(query, ebXML);
109         FindFoldersQuery result = new FindFoldersQuery();
110         transformer.fromEbXML(result, ebXML);
111         
112         assertEquals(query, result);
113     }
114     
115     @Test
116     public void testFromEbXMLLineBreakInAValueList() {
117         transformer.toEbXML(query, ebXML);
118         ebXML.getSlots().get(5).getValueList().clear();
119         ebXML.getSlots().get(5).getValueList().add("('urn:oasis:names:tc:ebxml-regrep:StatusType:Approved',\n'urn:oasis:names:tc:ebxml-regrep:StatusType:Submitted')");
120         FindFoldersQuery result = new FindFoldersQuery();
121         transformer.fromEbXML(result, ebXML);
122         
123         assertEquals(query, result);
124     }
125     
126     @Test
127     public void testFromEbXMLNull() {
128         FindFoldersQuery result = new FindFoldersQuery();
129         transformer.fromEbXML(result, null);        
130         assertEquals(new FindFoldersQuery(), result);
131     }
132         
133     @Test
134     public void testFromEbXMLEmpty() {
135         FindFoldersQuery result = new FindFoldersQuery();
136         transformer.fromEbXML(result, ebXML);        
137         assertEquals(new FindFoldersQuery().toString(), result.toString());
138     }
139 }