View Javadoc
1   package fr.ifremer.dali.dao.data.survey;
2   
3   /*
4    * #%L
5    * Dali :: Core
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2014 - 2015 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU Affero General Public License as published by
13   * the Free Software Foundation, either version 3 of the License, or
14   * (at your option) any later version.
15   * 
16   * This program is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU General Public License for more details.
20   * 
21   * You should have received a copy of the GNU Affero General Public License
22   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23   * #L%
24   */
25  
26  import fr.ifremer.dali.dao.DaliDatabaseResource;
27  import fr.ifremer.dali.dto.data.survey.SurveyDTO;
28  import fr.ifremer.dali.service.DaliServiceLocator;
29  import fr.ifremer.quadrige3.core.test.AbstractDaoTest;
30  import org.junit.Before;
31  import org.junit.ClassRule;
32  import org.junit.Test;
33  
34  import java.sql.Date;
35  import java.util.Collections;
36  import java.util.List;
37  
38  import static org.junit.Assert.*;
39  
40  public class SurveyDaoReadTest extends AbstractDaoTest {
41  
42      @ClassRule
43      public static final DaliDatabaseResource dbResource = DaliDatabaseResource.readDb();
44  
45      private DaliSurveyDao surveyDao;
46  
47      @Before
48      @Override
49      public void setUp() throws Exception {
50          super.setUp();
51          surveyDao = DaliServiceLocator.instance().getService("daliSurveyDao", DaliSurveyDao.class);
52      }
53  
54      @Test
55      public void getSurvey() {
56  
57          List<String> programCodes = Collections.singletonList(dbResource.getFixtures().getProgramCode());
58  
59          List<SurveyDTO> surveys = surveyDao.getSurveysByCriteria(null, programCodes, null, null, null, null, null, null, null, true);
60          assertNotNull(surveys);
61          assertTrue(surveys.size() >= 3); // should be 3 but if SamplingOperationDaoWriteTest is executed before, it should be more surveys
62  
63          // filter survey date > 2014-01-01
64          surveys = surveyDao.getSurveysByCriteria(null, programCodes, null, null, null, null, null, Date.valueOf("2014-01-01"), null, true);
65          assertNotNull(surveys);
66          int nbSurveys = surveys.size();
67          for (SurveyDTO survey : surveys) {
68              // the survey with id=1 must not be here
69              assertNotEquals((Integer) 1, survey.getId());
70          }
71  
72          // filter survey date >= 2014-01-01
73          surveys = surveyDao.getSurveysByCriteria(null, programCodes, null, null, null, null, null, Date.valueOf("2014-01-01"), null, false);
74          assertNotNull(surveys);
75          assertTrue(nbSurveys < surveys.size());
76          boolean found = false;
77          for (SurveyDTO survey : surveys) {
78              // the survey with id=1 must be here
79              if (survey.getId() == 101) {
80                  found = true;
81                  break;
82              }
83          }
84          assertTrue(found);
85  
86          // filter survey date < 2016-01-01
87          surveys = surveyDao.getSurveysByCriteria(null, programCodes, null, null, null, null, null, null, Date.valueOf("2016-01-01"), true);
88          assertNotNull(surveys);
89          nbSurveys = surveys.size();
90          for (SurveyDTO survey : surveys) {
91              // the survey with id=3 must not be here
92              assertNotEquals((Integer) 103, survey.getId());
93          }
94  
95          // filter survey date <= 2016-01-01
96          surveys = surveyDao.getSurveysByCriteria(null, programCodes, null, null, null, null, null, null, Date.valueOf("2016-01-01"), false);
97          assertNotNull(surveys);
98          assertTrue(nbSurveys < surveys.size());
99          found = false;
100         for (SurveyDTO survey : surveys) {
101             // the survey with id=3 must be here
102             if (survey.getId() == 103) {
103                 found = true;
104                 break;
105             }
106         }
107         assertTrue(found);
108 
109         // filter survey date between 2014-01-01 & 2015-01-01
110         surveys = surveyDao.getSurveysByCriteria(null, programCodes, null, null, null, null, null, Date.valueOf("2014-01-01"), Date.valueOf("2015-01-01"), false);
111         assertNotNull(surveys);
112         assertEquals(2, surveys.size()); // the id=1 & id=2
113         boolean found1 = false;
114         boolean found2 = false;
115         for (SurveyDTO survey : surveys) {
116             if (survey.getId() == 101) {
117                 found1 = true;
118             }
119             if (survey.getId() == 102) {
120                 found2 = true;
121             }
122         }
123         assertTrue(found1);
124         assertTrue(found2);
125 
126         // filter survey date = 2015-01-01
127         surveys = surveyDao.getSurveysByCriteria(null, programCodes, null, null, null, null, null, Date.valueOf("2015-01-01"), Date.valueOf("2015-01-01"), false);
128         assertNotNull(surveys);
129         assertEquals(1, surveys.size());
130         assertEquals((Integer) 102, surveys.get(0).getId());
131 
132         // filter survey date = 2015-02-01
133         surveys = surveyDao.getSurveysByCriteria(null, programCodes, null, null, null, null, null, Date.valueOf("2015-02-01"), Date.valueOf("2015-02-01"), false);
134         assertNotNull(surveys);
135         assertEquals(0, surveys.size());
136 
137         // load a detailed survey
138         SurveyDTO surveyDetail = surveyDao.getSurveyById(101, false);
139         assertNotNull(surveyDetail);
140 
141     }
142 
143 }