1 package fr.ifremer.dali.service.administration.context;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import com.google.common.collect.Lists;
27 import fr.ifremer.dali.dao.DaliDatabaseResource;
28 import fr.ifremer.dali.dto.DaliBeanFactory;
29 import fr.ifremer.dali.dto.configuration.context.ContextDTO;
30 import fr.ifremer.dali.dto.configuration.filter.FilterDTO;
31 import fr.ifremer.dali.dto.configuration.programStrategy.ProgramDTO;
32 import fr.ifremer.dali.dto.enums.FilterTypeValues;
33 import fr.ifremer.dali.dto.referential.LocationDTO;
34 import fr.ifremer.dali.service.DaliServiceLocator;
35 import org.apache.commons.logging.Log;
36 import org.apache.commons.logging.LogFactory;
37 import org.junit.Assert;
38 import org.junit.Before;
39 import org.junit.ClassRule;
40 import org.junit.Test;
41
42 import java.io.File;
43 import java.util.Collection;
44 import java.util.List;
45
46
47
48
49 public class ContextServiceTest {
50
51 private static final Log log = LogFactory.getLog(ContextServiceTest.class);
52
53 @ClassRule
54 public static final DaliDatabaseResource dbResource = DaliDatabaseResource.writeDb();
55
56 private ContextService service;
57
58 @Before
59 public void setUp() {
60 service = DaliServiceLocator.instance().getContextService();
61 }
62
63 @Test
64 @SuppressWarnings("unchecked")
65 public void getLocationFilter() {
66 FilterDTO f = service.getFilter(1001);
67 Assert.assertNotNull(f);
68 service.loadFilteredElements(f);
69
70 List<LocationDTO> l = (List<LocationDTO>) f.getElements();
71 Assert.assertEquals(2, l.size());
72 Assert.assertEquals("Jetée est Dunkerque", ((LocationDTO) f.getElements().get(0)).getName());
73 Assert.assertEquals("Cap Gris nez", ((LocationDTO) f.getElements().get(1)).getName());
74
75 FilterDTO fp = service.getFilter(1002);
76 Assert.assertNotNull(fp);
77 service.loadFilteredElements(fp);
78
79 List<ProgramDTO> p = (List<ProgramDTO>) fp.getElements();
80 Assert.assertEquals(2, p.size());
81 Assert.assertEquals("REBENT", ((ProgramDTO) fp.getElements().get(0)).getCode());
82 Assert.assertEquals("REMIS", ((ProgramDTO) fp.getElements().get(1)).getCode());
83 }
84
85 @Test
86 public void saveAndDeleteFilters() {
87 FilterDTO f1 = service.getFilter(1001);
88
89 FilterDTO f2 = DaliBeanFactory.newFilterDTO();
90 LocationDTO l1 = DaliBeanFactory.newLocationDTO();
91 l1.setId(2);
92 l1.setLabel("L1");
93 f2.setFilterTypeId(FilterTypeValues.LOCATION.getFilterTypeId());
94 f2.setName("test new");
95 f2.setElements(Lists.newArrayList(l1));
96 f2.setDirty(true);
97
98 List<FilterDTO> filters = Lists.newArrayList(f1, f2);
99
100 service.saveFilters(filters);
101
102 filters.remove(f1);
103 f2 = filters.get(0);
104
105 Integer newFilterId = f2.getId();
106
107 Assert.assertNotNull(newFilterId);
108
109 List<FilterDTO> filtersToRemove = Lists.newArrayList();
110 filtersToRemove.add(f2);
111
112 service.deleteFilters(filtersToRemove);
113
114 f2 = service.getFilter(newFilterId);
115
116 Assert.assertNull(f2);
117
118 }
119
120 @Test
121 public void getContexts() {
122 List<ContextDTO> contexts = service.getAllContexts();
123 Assert.assertTrue(contexts.size() >= 2);
124
125 ContextDTO c1 = service.getContext(1001);
126 Assert.assertNotNull(c1);
127 Assert.assertEquals(3, c1.getFilters().size());
128
129 }
130
131 @Test
132 public void saveContexts() {
133 List<ContextDTO> contexts = service.getAllContexts();
134
135 ContextDTO newCtxt = DaliBeanFactory.newContextDTO();
136 newCtxt.setDirty(true);
137 newCtxt.setName("Test NEW");
138
139 Collection<FilterDTO> filters = Lists.newArrayList();
140 filters.addAll(service.getAllLocationFilter());
141 filters.addAll(service.getAllProgramFilter());
142
143 newCtxt.setFilters(filters);
144
145 contexts.add(newCtxt);
146
147 service.saveContexts(contexts);
148
149 Assert.assertNotNull(newCtxt.getId());
150
151 }
152
153 @Test
154 public void deleteContexts() {
155 List<ContextDTO> contexts = service.getAllContexts();
156 List<ContextDTO> contextsToDelete = Lists.newArrayList();
157
158 int contextNbBefore = contexts.size();
159
160 for (ContextDTO c : contexts) {
161 if (c.getId() < 1000) {
162 contextsToDelete.add(c);
163 }
164 }
165
166 int nbToDelete = contextsToDelete.size();
167
168 service.deleteContexts(contextsToDelete);
169
170 int contextNbAfter = service.getAllContexts().size();
171
172 Assert.assertEquals(contextNbAfter, contextNbBefore - nbToDelete);
173
174 }
175
176 @Test
177 public void exportImportFilters() {
178 List<FilterDTO> filters = Lists.newArrayList();
179 FilterDTO f1 = service.getFilter(1004);
180 filters.add(f1);
181 Assert.assertFalse(filters.isEmpty());
182 int filtersNb = filters.size();
183
184 File exportFile = new File(dbResource.getResourceDirectory(), "filters.dat");
185 service.exportFilter(filters, exportFile);
186
187 service.importFilter(exportFile, f1.getFilterTypeId());
188 service.deleteFilters(filters);
189 List<FilterDTO> importedFilters = service.importFilter(exportFile, f1.getFilterTypeId());
190 Assert.assertEquals(filtersNb, importedFilters.size());
191
192 FilterDTO importedFilter = importedFilters.get(0);
193 Assert.assertEquals(1, importedFilter.getElements().size());
194
195 }
196
197 @Test
198 public void duplicateFilter() throws CloneNotSupportedException {
199
200 FilterDTO filter = service.getFilter(1001);
201 service.loadFilteredElements(filter);
202
203 int nbLoc = filter.getElements().size();
204
205 FilterDTO newFilter = service.duplicateFilter(filter);
206
207 Assert.assertNull(newFilter.getId());
208 Assert.assertEquals(nbLoc, newFilter.getElements().size());
209
210 }
211
212 }