e3880ade8c8417d19aa5b514fa378684d5525e96
[portal/sdk.git] /
1 /*
2  * ============LICENSE_START==========================================
3  * ONAP Portal SDK
4  * ===================================================================
5  * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6  * ===================================================================
7  *
8  * Unless otherwise specified, all software contained herein is licensed
9  * under the Apache License, Version 2.0 (the "License");
10  * you may not use this software except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *             http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  * Unless otherwise specified, all documentation contained herein is licensed
22  * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
23  * you may not use this documentation except in compliance with the License.
24  * You may obtain a copy of the License at
25  *
26  *             https://creativecommons.org/licenses/by/4.0/
27  *
28  * Unless required by applicable law or agreed to in writing, documentation
29  * distributed under the License is distributed on an "AS IS" BASIS,
30  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31  * See the License for the specific language governing permissions and
32  * limitations under the License.
33  *
34  * ============LICENSE_END============================================
35  *
36  * 
37  */
38 package org.onap.portalsdk.analytics.model.definition;
39
40 import static org.junit.Assert.assertEquals;
41 import static org.junit.Assert.assertFalse;
42 import static org.junit.Assert.assertTrue;
43
44 import java.io.FileInputStream;
45 import java.io.InputStream;
46 import java.sql.Connection;
47 import java.sql.PreparedStatement;
48 import java.sql.ResultSet;
49 import java.sql.SQLException;
50 import java.util.ArrayList;
51 import java.util.List;
52 import java.util.Vector;
53
54 import javax.servlet.http.HttpServletRequest;
55 import javax.servlet.http.HttpSession;
56 import org.apache.commons.io.IOUtils;
57 import org.junit.Before;
58 import org.junit.Test;
59 import org.junit.runner.RunWith;
60 import org.mockito.Matchers;
61 import org.mockito.Mock;
62 import org.mockito.Mockito;
63 import org.mockito.MockitoAnnotations;
64 import org.onap.portalsdk.analytics.error.RaptorException;
65 import org.onap.portalsdk.analytics.error.ReportSQLException;
66 import org.onap.portalsdk.analytics.model.base.IdNameValue;
67 import org.onap.portalsdk.analytics.model.runtime.FormField;
68 import org.onap.portalsdk.analytics.model.runtime.ReportParamValues;
69 import org.onap.portalsdk.analytics.model.runtime.ReportRuntime;
70 import org.onap.portalsdk.analytics.system.AppUtils;
71 import org.onap.portalsdk.analytics.system.ConnectionUtils;
72 import org.onap.portalsdk.analytics.system.DbUtils;
73 import org.onap.portalsdk.analytics.system.Globals;
74 import org.onap.portalsdk.analytics.util.AppConstants;
75 import org.onap.portalsdk.analytics.util.DataSet;
76 import org.onap.portalsdk.analytics.util.RemDbInfo;
77 import org.onap.portalsdk.analytics.xmlobj.DataColumnType;
78 import org.onap.portalsdk.analytics.xmlobj.DataSourceType;
79 import org.onap.portalsdk.analytics.xmlobj.FormFieldList;
80 import org.onap.portalsdk.analytics.xmlobj.FormFieldType;
81 import org.owasp.esapi.ESAPI;
82 import org.owasp.esapi.Encoder;
83 import org.powermock.api.mockito.PowerMockito;
84 import org.powermock.core.classloader.annotations.PrepareForTest;
85 import org.powermock.modules.junit4.PowerMockRunner;
86
87 import com.mchange.v2.debug.ThreadNameStackTraceRecorder;
88
89 @RunWith(PowerMockRunner.class)
90 @PrepareForTest({ AppUtils.class, Globals.class, DbUtils.class, AppUtils.class, ESAPI.class, ConnectionUtils.class, ReportSchedule.class})
91
92 public class ReportScheduleTest {
93
94         ReportSchedule reportSchedule;
95         
96         private String REPORT_ID="1000";
97         private String USER_ID="USER#1";
98         
99         @Mock
100         HttpServletRequest httpServletRequest;
101         
102         @Mock
103         HttpSession httpSession;
104         
105         @Mock
106         ReportRuntime reportRuntime;
107         
108         @Mock
109         ReportDefinition reportDefinition;
110
111         @Mock
112         Encoder encoder;
113         
114         @Mock
115         DataSet dataSet1;
116         
117         @Mock
118         Connection connection;
119         
120         @Mock
121         PreparedStatement preparedStatement;
122         
123         @Mock
124         ResultSet resultSet;
125         
126         @Mock
127         java.sql.Clob clob;
128         
129         @Mock
130         FileInputStream fileInputStream;
131         
132         @Before
133         public void setUp() throws Exception {          
134                 
135                 PowerMockito.mockStatic(Globals.class);
136                 PowerMockito.mockStatic(AppUtils.class);
137                 PowerMockito.mockStatic(DbUtils.class);
138                 PowerMockito.mockStatic(AppUtils.class);
139                 PowerMockito.mockStatic(ESAPI.class);
140                 PowerMockito.mockStatic(ConnectionUtils.class);
141                                         
142                 MockitoAnnotations.initMocks(this);
143                 
144                 Mockito.when(httpSession.getAttribute(AppConstants.SI_REPORT_RUNTIME)).thenReturn(reportRuntime);
145                 Mockito.when(httpServletRequest.getSession()).thenReturn(httpSession);
146
147                 Mockito.when(reportRuntime.getReportID()).thenReturn(REPORT_ID);
148                 Mockito.when(AppUtils.getUserID(httpServletRequest)).thenReturn("USER1");
149                 
150                 PowerMockito.when(ESAPI.encoder()).thenReturn(encoder);
151                 
152                 createInstanceOfReportSchedule_case1();
153                 createInstanceOfReportSchedule_case2();
154
155         }
156
157         private void createInstanceOfReportSchedule_case1() throws Exception {
158                 String load_schedule_data = "SELECT rs.enabled_yn, DATE_FORMAT(rs.start_date, '%m/%d/%Y') start_date, DATE_FORMAT(rs.end_date, '%m/%d/%Y') end_date, DATE_FORMAT(rs.run_date, '%m/%d/%Y') run_date, coalesce(DATE_FORMAT(rs.run_date, '%h'), '12') run_hour, coalesce(DATE_FORMAT(rs.run_date, '%i'), '00') run_min, coalesce(DATE_FORMAT(rs.run_date, '%p'), 'AM') run_ampm, rs.recurrence, rs.conditional_yn, rs.notify_type, rs.max_row, rs.initial_formfields, rs.schedule_id, coalesce(DATE_FORMAT(rs.end_date, '%h'), '11') end_hour, coalesce(DATE_FORMAT(rs.end_date, '%i'), '45') end_min, coalesce(DATE_FORMAT(rs.end_date, '%p'), 'PM') end_ampm, encrypt_yn, attachment_yn FROM cr_report_schedule rs WHERE rs.rep_id = [reportID]";
159                 String load_schedule_getid = "SELECT rsu.user_id, concat(fuser.last_name,', ',fuser.first_name), fuser.login_id FROM cr_report_schedule_users rsu, fn_user fuser WHERE rsu.rep_id = [reportID]  AND rsu.schedule_id = [getScheduleID()] and rsu.user_id IS NOT NULL and rsu.user_id = fuser.user_id";
160                 String load_schedule_users = "SELECT rsu.role_id FROM cr_report_schedule_users rsu WHERE rsu.rep_id = [reportID] AND rsu.schedule_id = [getScheduleID()] AND rsu.role_id IS NOT NULL";
161                                 
162                 PowerMockito.when(Globals.getLoadScheduleData()).thenReturn(load_schedule_data);
163                 PowerMockito.when(Globals.getLoadScheduleGetId()).thenReturn(load_schedule_getid);
164                 PowerMockito.when(Globals.getLoadScheduleUsers()).thenReturn(load_schedule_users);
165                 PowerMockito.when(AppUtils.isAdminUser(httpServletRequest)).thenReturn(true);
166                 PowerMockito.when(Globals.isWeblogicServer()).thenReturn(true);
167
168                 //reportSchedule = new ReportSchedule(REPORT_ID, USER_ID, false, httpServletRequest);
169                 //String dataArray[] = {"Y", "10/10/2018", "10/10/2999", "01/11/2018", "9", "10", "AM", "Y", "Y", "0", "512","", "2000", "10", "30", "PM," };           
170                 
171                 PowerMockito.when(DbUtils.getConnection()).thenReturn(connection);
172                 
173                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
174                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
175                 Mockito.when(resultSet.next()).thenReturn(true);
176                 Mockito.when(resultSet.getClob(Mockito.anyInt())).thenReturn(clob);
177
178                 String source = "This is the source of my input stream";
179                 InputStream inputStream = IOUtils.toInputStream(source, "UTF-8");
180                 
181                 Mockito.when(clob.getAsciiStream()).thenReturn(inputStream);
182
183                 //SI_REPORT_RUNTIME
184                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyString())).thenReturn(dataSet1);
185                 Mockito.when(dataSet1.getRowCount()).thenReturn(1);
186                 
187                 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyInt())).thenReturn("Some Value1");
188                 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyString())).thenReturn("Some Value2");
189
190                 reportSchedule = new ReportSchedule(REPORT_ID, USER_ID, true, httpServletRequest);
191                 reportSchedule.setEncryptMode("test");
192                 reportSchedule.setEndAMPM("AM");
193                 reportSchedule.setEndHour("10");
194                 reportSchedule.setEndMin("00");
195                 reportSchedule.addZero("0");
196                 
197                 
198                 
199                 /*
200                 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyObject())).thenAnswer(new Answer<String>() {
201
202                         @Override
203                         public String answer(InvocationOnMock invocation) throws Throwable {
204                                 Object args[] = invocation.getArguments();
205                                 int columnIndex= 0;
206                                 
207                                 try {
208                                         columnIndex = Integer.parseInt((String)args[1]);
209                                 } catch (Exception e) {
210                                         if ("encrypt_yn".equals((String)args[1]))
211                                 }
212                                 
213                                 
214                                 return null;
215                         }
216                 });
217                 */
218         }
219         
220         private void createInstanceOfReportSchedule_case2() throws Exception {
221                 String load_schedule_data = "SELECT rs.enabled_yn, DATE_FORMAT(rs.start_date, '%m/%d/%Y') start_date, DATE_FORMAT(rs.end_date, '%m/%d/%Y') end_date, DATE_FORMAT(rs.run_date, '%m/%d/%Y') run_date, coalesce(DATE_FORMAT(rs.run_date, '%h'), '12') run_hour, coalesce(DATE_FORMAT(rs.run_date, '%i'), '00') run_min, coalesce(DATE_FORMAT(rs.run_date, '%p'), 'AM') run_ampm, rs.recurrence, rs.conditional_yn, rs.notify_type, rs.max_row, rs.initial_formfields, rs.schedule_id, coalesce(DATE_FORMAT(rs.end_date, '%h'), '11') end_hour, coalesce(DATE_FORMAT(rs.end_date, '%i'), '45') end_min, coalesce(DATE_FORMAT(rs.end_date, '%p'), 'PM') end_ampm, encrypt_yn, attachment_yn FROM cr_report_schedule rs WHERE rs.rep_id = [reportID]";
222                 String load_schedule_getid = "SELECT rsu.user_id, concat(fuser.last_name,', ',fuser.first_name), fuser.login_id FROM cr_report_schedule_users rsu, fn_user fuser WHERE rsu.rep_id = [reportID]  AND rsu.schedule_id = [getScheduleID()] and rsu.user_id IS NOT NULL and rsu.user_id = fuser.user_id";
223                 String load_schedule_users = "SELECT rsu.role_id FROM cr_report_schedule_users rsu WHERE rsu.rep_id = [reportID] AND rsu.schedule_id = [getScheduleID()] AND rsu.role_id IS NOT NULL";
224                                 
225                 String new_schedule_data = "select coalesce(max(schedule_id),0)+1  AS sequence from cr_report_schedule";
226                                 
227                 PowerMockito.when(Globals.getLoadScheduleData()).thenReturn(load_schedule_data);
228                 PowerMockito.when(Globals.getLoadScheduleGetId()).thenReturn(load_schedule_getid);
229                 PowerMockito.when(Globals.getLoadScheduleUsers()).thenReturn(load_schedule_users);
230                 PowerMockito.when(AppUtils.isAdminUser(httpServletRequest)).thenReturn(false);
231                 PowerMockito.when(Globals.isWeblogicServer()).thenReturn(false);
232                 PowerMockito.when(Globals.getNewScheduleData()).thenReturn(new_schedule_data);
233                 PowerMockito.when(Globals.isPostgreSQL()).thenReturn(false);
234                 
235                 PowerMockito.when(Globals.getUseLoginIdInSchedYN()).thenReturn("Y");
236                                 
237                 //reportSchedule = new ReportSchedule(REPORT_ID, USER_ID, false, httpServletRequest);
238                 //String dataArray[] = {"Y", "10/10/2018", "10/10/2999", "01/11/2018", "9", "10", "AM", "Y", "Y", "0", "512","", "2000", "10", "30", "PM," };           
239                 
240                 PowerMockito.when(DbUtils.getConnection()).thenReturn(connection);
241                 
242                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
243                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
244                 Mockito.when(resultSet.next()).thenReturn(true);
245                 Mockito.when(resultSet.getClob(Mockito.anyInt())).thenReturn(clob);
246
247                 String source = "This is the source of my input stream";
248                 InputStream inputStream = IOUtils.toInputStream(source, "UTF-8");
249                 
250                 Mockito.when(clob.getAsciiStream()).thenReturn(inputStream);
251
252                 //SI_REPORT_RUNTIME
253                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyString())).thenReturn(dataSet1);
254                 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
255                 
256                 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyInt())).thenReturn("Some Value1");
257                 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyString())).thenReturn("Some Value2");
258
259                 reportSchedule = new ReportSchedule(REPORT_ID, "SCHDULE_ID", USER_ID, httpServletRequest);
260
261                 /*
262                 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyObject())).thenAnswer(new Answer<String>() {
263
264                         @Override
265                         public String answer(InvocationOnMock invocation) throws Throwable {
266                                 Object args[] = invocation.getArguments();
267                                 int columnIndex= 0;
268                                 
269                                 try {
270                                         columnIndex = Integer.parseInt((String)args[1]);
271                                 } catch (Exception e) {
272                                         if ("encrypt_yn".equals((String)args[1]))
273                                 }
274                                 
275                                 
276                                 return null;
277                         }
278                 });
279                 */
280         }
281
282         
283         
284         @Test
285         public void testAddEmailToUser() {              
286                 reportSchedule.addEmailToUser("UserID1", "UserName1");
287                 reportSchedule.addEmailToUser("UserID2", "UserName2");
288                 reportSchedule.addEmailToUser("UserID2", "UserName2");
289
290         }
291         
292         @Test
293         public void testPersistScheduleData_case1() throws Exception {
294                 reportSchedule.persistScheduleData(connection, httpServletRequest);
295         }
296         
297         @Test
298         public void testPersistScheduleData_RowCount_case1() throws Exception {
299                 String execute_update = "DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID] and schedule_id = [getScheduleID()]";           
300                 String execute_update_users = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], [emailToUsers.get(i)).getId()], NULL, [(i + 1)])";
301                 String execute_update_roles = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], NULL, [emailToRoles.get(i)).getId()], [((emailToUsers.size() + i + 1)])";
302                 String execute_update_activity = "INSERT into cr_schedule_activity_log (schedule_id, notes, run_time) values ([getScheduleID()],'Submitted:Schedule',TO_DATE('[getRunDate()] [getRunHour()]:[getRunMin()] [getRunAMPM()]', 'MM/DD/YYYY HH:MI AM'))";
303                 String persist_cond_sql_update = "update cr_report_schedule set condition_large_sql = '' where  schedule_id = [scheduleId]";
304                 
305                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyObject(), Mockito.anyString())).thenReturn(dataSet1);
306                 PowerMockito.when(Globals.getExecuteUpdate()).thenReturn(execute_update);
307                 PowerMockito.when(Globals.getExecuteUpdateUsers()).thenReturn(execute_update_users);
308                 PowerMockito.when(Globals.getExecuteUpdateRoles()).thenReturn(execute_update_roles);
309                 PowerMockito.when(Globals.getExecuteUpdateActivity()).thenReturn(execute_update_activity);
310                 PowerMockito.when(Globals.getPersistCondSqlUpdate()).thenReturn(persist_cond_sql_update);
311                 PowerMockito.when(Globals.isPostgreSQL()).thenReturn(true);
312                 
313                 PowerMockito.when(Globals.getRequestParams()).thenReturn("1, 2, 3");
314                 PowerMockito.when(Globals.getSessionParams()).thenReturn("1, 2, 3");
315                 PowerMockito.when(Globals.getSessionParamsForScheduling()).thenReturn("login_id");
316                                                         
317                 Mockito.when(reportRuntime.getDBInfo()).thenReturn(AppConstants.DB_LOCAL);
318                 
319                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
320                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
321                 Mockito.when(resultSet.next()).thenReturn(true);
322                 
323                 Mockito.when(dataSet1.getRowCount()).thenReturn(1);
324                 
325                 reportSchedule.setDownloadLimit("1000");
326                 reportSchedule.setSchedEnabled("N");
327                 reportSchedule.setFormFields("Field1");
328                 reportSchedule.setNotify_type("1");
329                 reportSchedule.setStartDate("10/10/2018");
330                 reportSchedule.setEndDate("10/10/2019");
331                 reportSchedule.setRunDate("10/10/2019");
332                 reportSchedule.setRunHour("10");
333                 reportSchedule.setRunMin("10");
334                 reportSchedule.setRunAMPM("PM");
335                 reportSchedule.setRecurrence("Y");
336                 reportSchedule.setAttachmentMode("N");          
337                 reportSchedule.setConditionSQL("SELECT coalesce(cr.owner_id, cr.create_id) owner_id, cr.create_id, DATE_FORMAT(cr.create_date, '[Globals.getTimeFormat()]') create_date, maint_id, DATE_FORMAT(cr.maint_date, '[Globals.getTimeFormat()]') update_date, cr.menu_id, cr.menu_approved_yn FROM cr_report cr WHERE cr.rep_id= [reportID]");
338                 
339                 reportSchedule.persistScheduleData(connection, httpServletRequest);
340         }
341         
342         @Test
343         public void testPersistScheduleData_RowCount_case2() throws Exception {
344                 String execute_update = "DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID] and schedule_id = [getScheduleID()]";           
345                 String execute_update_users = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], [emailToUsers.get(i)).getId()], NULL, [(i + 1)])";
346                 String execute_update_roles = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], NULL, [emailToRoles.get(i)).getId()], [((emailToUsers.size() + i + 1)])";
347                 String execute_update_activity = "INSERT into cr_schedule_activity_log (schedule_id, notes, run_time) values ([getScheduleID()],'Submitted:Schedule',TO_DATE('[getRunDate()] [getRunHour()]:[getRunMin()] [getRunAMPM()]', 'MM/DD/YYYY HH:MI AM'))";
348                 String persist_cond_sql_update = "update cr_report_schedule set condition_large_sql = '' where  schedule_id = [scheduleId]";
349                 
350                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyObject(), Mockito.anyString())).thenReturn(dataSet1);
351                 PowerMockito.when(Globals.getExecuteUpdate()).thenReturn(execute_update);
352                 PowerMockito.when(Globals.getExecuteUpdateUsers()).thenReturn(execute_update_users);
353                 PowerMockito.when(Globals.getExecuteUpdateRoles()).thenReturn(execute_update_roles);
354                 PowerMockito.when(Globals.getExecuteUpdateActivity()).thenReturn(execute_update_activity);
355                 PowerMockito.when(Globals.getPersistCondSqlUpdate()).thenReturn(persist_cond_sql_update);
356                 PowerMockito.when(Globals.isPostgreSQL()).thenReturn(true);
357                 
358                 PowerMockito.when(Globals.getRequestParams()).thenReturn("1, 2, 3");
359                 PowerMockito.when(Globals.getSessionParams()).thenReturn("1, 2, 3");
360                 PowerMockito.when(Globals.getSessionParamsForScheduling()).thenReturn("login_id");
361                                                         
362                 Mockito.when(reportRuntime.getDBInfo()).thenReturn(AppConstants.DB_DEV);
363                 
364                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
365                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
366                 Mockito.when(resultSet.next()).thenReturn(true);
367                 
368                 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
369                 RemDbInfo remDbInfo = Mockito.mock(RemDbInfo.class);
370                 PowerMockito.whenNew(RemDbInfo.class).withNoArguments().thenReturn(remDbInfo);
371                 reportSchedule.setRemDbInfo(remDbInfo);
372                 reportSchedule.setSchedEnabled("N");
373                 reportSchedule.setConditionSQL("SELECT coalesce(cr.owner_id, cr.create_id) owner_id, cr.create_id, DATE_FORMAT(cr.create_date, '[Globals.getTimeFormat()]') create_date, maint_id, DATE_FORMAT(cr.maint_date, '[Globals.getTimeFormat()]') update_date, cr.menu_id, cr.menu_approved_yn FROM cr_report cr WHERE cr.rep_id= [reportID]");
374                 
375                 reportSchedule.persistScheduleData(connection, httpServletRequest);
376         }
377         
378         @Test
379         public void testPersistScheduleData_FormFieldList_case1() throws Exception {
380                 String execute_update = "DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID] and schedule_id = [getScheduleID()]";           
381                 String execute_update_users = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], [emailToUsers.get(i)).getId()], NULL, [(i + 1)])";
382                 String execute_update_roles = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], NULL, [emailToRoles.get(i)).getId()], [((emailToUsers.size() + i + 1)])";
383                 String execute_update_activity = "INSERT into cr_schedule_activity_log (schedule_id, notes, run_time) values ([getScheduleID()],'Submitted:Schedule',TO_DATE('[getRunDate()] [getRunHour()]:[getRunMin()] [getRunAMPM()]', 'MM/DD/YYYY HH:MI AM'))";
384                 String persist_cond_sql_update = "update cr_report_schedule set condition_large_sql = '' where  schedule_id = [scheduleId]";
385                 
386                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyObject(), Mockito.anyString())).thenReturn(dataSet1);
387                 PowerMockito.when(Globals.getExecuteUpdate()).thenReturn(execute_update);
388                 PowerMockito.when(Globals.getExecuteUpdateUsers()).thenReturn(execute_update_users);
389                 PowerMockito.when(Globals.getExecuteUpdateRoles()).thenReturn(execute_update_roles);
390                 PowerMockito.when(Globals.getExecuteUpdateActivity()).thenReturn(execute_update_activity);
391                 PowerMockito.when(Globals.getPersistCondSqlUpdate()).thenReturn(persist_cond_sql_update);
392                 PowerMockito.when(Globals.isPostgreSQL()).thenReturn(true);
393                 PowerMockito.when(Globals.getRequestParams()).thenReturn("1, 2, 3");
394                 PowerMockito.when(Globals.getSessionParams()).thenReturn("1, 2, 3");
395                 PowerMockito.when(Globals.getSessionParamsForScheduling()).thenReturn("login_id");
396                 
397                 FormFieldList formFieldList = new FormFieldList();
398                 formFieldList.setComment("test");
399                 FormFieldType formFieldType = new FormFieldType();
400                 formFieldType.setFieldId("test");
401                 formFieldType.setColId("1");
402                 formFieldType.setFieldName("test");
403                 formFieldType.setFieldType("type");
404                 formFieldType.setValidationType("validation");
405                 formFieldType.setMandatory("Y");
406                 formFieldType.setDefaultValue("test");
407                 formFieldType.setGroupFormField(true);
408                 formFieldList.getFormField().add(formFieldType);
409                 Mockito.when(reportRuntime.getFormFieldList()).thenReturn(formFieldList);
410                 Mockito.when(reportRuntime.getFormFieldDisplayName(Mockito.any(FormFieldType.class))).thenReturn("test");
411                 ReportParamValues paramValues = PowerMockito.mock(ReportParamValues.class);
412                 Mockito.when(paramValues.isParameterMultiValue(Matchers.anyString())).thenReturn(true);
413                 Mockito.when(paramValues.getParamValue(Mockito.any(String.class))).thenReturn("select test");
414                 Mockito.when(reportRuntime.getReportParamValues()).thenReturn(paramValues);
415                 DataSet ds = Mockito.mock(DataSet.class);
416                 Mockito.when(ConnectionUtils.getDataSet(Mockito.any(String.class), Mockito.any(String.class))).thenReturn(ds);
417                 Mockito.when(ds.getRowCount()).thenReturn(1);
418                 Mockito.when(ds.getString(Mockito.anyInt(), Mockito.anyInt())).thenReturn("test");
419                 Mockito.when(reportRuntime.formatListValue(Mockito.any(String.class), Mockito.any(String.class), Mockito.any(DataColumnType.class),
420                                 Mockito.anyBoolean(), Mockito.anyBoolean(), Mockito.any(DataSourceType.class), Mockito.any(String.class))).thenReturn("");
421                 
422                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
423                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
424                 Mockito.when(resultSet.next()).thenReturn(true);
425                 
426                 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
427                 
428                 reportSchedule.setSchedEnabled("N");
429                 reportSchedule.setConditionSQL("SELECT WHEN FROM TABLE WHERE  AND [test] ORDER BY");
430                 
431                 reportSchedule.persistScheduleData(connection, httpServletRequest);
432         }
433         
434         @Test
435         public void testPersistScheduleData_FormFieldList_case2() throws Exception {
436                 String execute_update = "DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID] and schedule_id = [getScheduleID()]";           
437                 String execute_update_users = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], [emailToUsers.get(i)).getId()], NULL, [(i + 1)])";
438                 String execute_update_roles = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], NULL, [emailToRoles.get(i)).getId()], [((emailToUsers.size() + i + 1)])";
439                 String execute_update_activity = "INSERT into cr_schedule_activity_log (schedule_id, notes, run_time) values ([getScheduleID()],'Submitted:Schedule',TO_DATE('[getRunDate()] [getRunHour()]:[getRunMin()] [getRunAMPM()]', 'MM/DD/YYYY HH:MI AM'))";
440                 String persist_cond_sql_update = "update cr_report_schedule set condition_large_sql = '' where  schedule_id = [scheduleId]";
441                 
442                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyObject(), Mockito.anyString())).thenReturn(dataSet1);
443                 PowerMockito.when(Globals.getExecuteUpdate()).thenReturn(execute_update);
444                 PowerMockito.when(Globals.getExecuteUpdateUsers()).thenReturn(execute_update_users);
445                 PowerMockito.when(Globals.getExecuteUpdateRoles()).thenReturn(execute_update_roles);
446                 PowerMockito.when(Globals.getExecuteUpdateActivity()).thenReturn(execute_update_activity);
447                 PowerMockito.when(Globals.getPersistCondSqlUpdate()).thenReturn(persist_cond_sql_update);
448                 PowerMockito.when(Globals.isPostgreSQL()).thenReturn(true);
449                 PowerMockito.when(Globals.getRequestParams()).thenReturn("1, 2, 3");
450                 PowerMockito.when(Globals.getSessionParams()).thenReturn("1, 2, 3");
451                 PowerMockito.when(Globals.getSessionParamsForScheduling()).thenReturn("login_id");
452                 
453                 FormFieldList formFieldList = new FormFieldList();
454                 formFieldList.setComment("test");
455                 FormFieldType formFieldType = new FormFieldType();
456                 formFieldType.setFieldId("test");
457                 formFieldType.setColId("1");
458                 formFieldType.setFieldName("test");
459                 formFieldType.setFieldType("type");
460                 formFieldType.setValidationType("validation");
461                 formFieldType.setMandatory("Y");
462                 formFieldType.setDefaultValue("test");
463                 formFieldType.setGroupFormField(true);
464                 formFieldList.getFormField().add(formFieldType);
465                 Mockito.when(reportRuntime.getFormFieldList()).thenReturn(formFieldList);
466                 Mockito.when(reportRuntime.getFormFieldDisplayName(Mockito.any(FormFieldType.class))).thenReturn("test");
467                 ReportParamValues paramValues = PowerMockito.mock(ReportParamValues.class);
468                 Mockito.when(paramValues.isParameterMultiValue(Matchers.anyString())).thenReturn(false);
469                 Mockito.when(paramValues.isParameterTextAreaValueAndModified(Mockito.any(String.class))).thenReturn(true);
470                 Mockito.when(paramValues.getParamValue(Mockito.any(String.class))).thenReturn("select test");
471                 Mockito.when(reportRuntime.getReportParamValues()).thenReturn(paramValues);
472                 DataSet ds = Mockito.mock(DataSet.class);
473                 Mockito.when(ConnectionUtils.getDataSet(Mockito.any(String.class), Mockito.any(String.class))).thenReturn(ds);
474                 Mockito.when(ds.getRowCount()).thenReturn(1);
475                 Mockito.when(ds.getString(Mockito.anyInt(), Mockito.anyInt())).thenReturn("test");
476                 Mockito.when(reportRuntime.getDBInfo()).thenReturn(AppConstants.DB_DEV);
477                 RemDbInfo remDbInfo = Mockito.mock(RemDbInfo.class);
478                 PowerMockito.whenNew(RemDbInfo.class).withNoArguments().thenReturn(remDbInfo);
479                 Mockito.when(remDbInfo.getDBType(Mockito.any(String.class))).thenReturn("DAYTONA");
480                 Mockito.when(reportRuntime.formatListValue(Mockito.any(String.class), Mockito.any(String.class), Mockito.any(DataColumnType.class),
481                                 Mockito.anyBoolean(), Mockito.anyBoolean(), Mockito.any(DataSourceType.class), Mockito.any(String.class))).thenReturn("test");
482                 
483                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
484                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
485                 Mockito.when(resultSet.next()).thenReturn(true);
486                 
487                 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
488                 
489                 reportSchedule.setSchedEnabled("N");
490                 reportSchedule.setConditionSQL("SELECT WHEN FROM TABLE WHERE [test] ORDER BY");
491                 reportSchedule.setRemDbInfo(remDbInfo);
492         
493                 reportSchedule.persistScheduleData(connection, httpServletRequest);
494         }
495         
496         @Test
497         public void testPersistScheduleData_FormFieldList_case3() throws Exception {
498                 String execute_update = "DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID] and schedule_id = [getScheduleID()]";           
499                 String execute_update_users = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], [emailToUsers.get(i)).getId()], NULL, [(i + 1)])";
500                 String execute_update_roles = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], NULL, [emailToRoles.get(i)).getId()], [((emailToUsers.size() + i + 1)])";
501                 String execute_update_activity = "INSERT into cr_schedule_activity_log (schedule_id, notes, run_time) values ([getScheduleID()],'Submitted:Schedule',TO_DATE('[getRunDate()] [getRunHour()]:[getRunMin()] [getRunAMPM()]', 'MM/DD/YYYY HH:MI AM'))";
502                 String persist_cond_sql_update = "update cr_report_schedule set condition_large_sql = '' where  schedule_id = [scheduleId]";
503                 
504                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyObject(), Mockito.anyString())).thenReturn(dataSet1);
505                 PowerMockito.when(Globals.getExecuteUpdate()).thenReturn(execute_update);
506                 PowerMockito.when(Globals.getExecuteUpdateUsers()).thenReturn(execute_update_users);
507                 PowerMockito.when(Globals.getExecuteUpdateRoles()).thenReturn(execute_update_roles);
508                 PowerMockito.when(Globals.getExecuteUpdateActivity()).thenReturn(execute_update_activity);
509                 PowerMockito.when(Globals.getPersistCondSqlUpdate()).thenReturn(persist_cond_sql_update);
510                 PowerMockito.when(Globals.isPostgreSQL()).thenReturn(true);
511                 PowerMockito.when(Globals.getRequestParams()).thenReturn("1, 2, 3");
512                 PowerMockito.when(Globals.getSessionParams()).thenReturn("1, 2, 3");
513                 PowerMockito.when(Globals.getSessionParamsForScheduling()).thenReturn("login_id");
514                 
515                 FormFieldList formFieldList = new FormFieldList();
516                 formFieldList.setComment("test");
517                 FormFieldType formFieldType = new FormFieldType();
518                 formFieldType.setFieldId("test");
519                 formFieldType.setColId("1");
520                 formFieldType.setFieldName("test");
521                 formFieldType.setFieldType("type");
522                 formFieldType.setValidationType("validation");
523                 formFieldType.setMandatory("Y");
524                 formFieldType.setDefaultValue("test");
525                 formFieldType.setGroupFormField(true);
526                 formFieldType.setValidationType(FormField.VT_TIMESTAMP_MIN);
527                 formFieldList.getFormField().add(formFieldType);
528                 Mockito.when(reportRuntime.getFormFieldList()).thenReturn(formFieldList);
529                 Mockito.when(reportRuntime.getFormFieldDisplayName(Mockito.any(FormFieldType.class))).thenReturn("report_id");
530                 ReportParamValues paramValues = PowerMockito.mock(ReportParamValues.class);
531                 Mockito.when(paramValues.isParameterMultiValue(Matchers.anyString())).thenReturn(false);
532                 Mockito.when(paramValues.isParameterTextAreaValueAndModified(Mockito.any(String.class))).thenReturn(true);
533                 Mockito.when(paramValues.getParamValue(Mockito.any(String.class))).thenReturn("select test");
534                 Mockito.when(reportRuntime.getReportParamValues()).thenReturn(paramValues);
535                 DataSet ds = Mockito.mock(DataSet.class);
536                 Mockito.when(ConnectionUtils.getDataSet(Mockito.any(String.class), Mockito.any(String.class))).thenReturn(ds);
537                 Mockito.when(ds.getRowCount()).thenReturn(1);
538                 Mockito.when(ds.getString(Mockito.anyInt(), Mockito.anyInt())).thenReturn("test");
539                 Mockito.when(reportRuntime.getDBInfo()).thenReturn(AppConstants.DB_DEV);
540                 RemDbInfo remDbInfo = Mockito.mock(RemDbInfo.class);
541                 PowerMockito.whenNew(RemDbInfo.class).withNoArguments().thenReturn(remDbInfo);
542                 Mockito.when(remDbInfo.getDBType(Mockito.any(String.class))).thenReturn("DAYTONA");
543                 Mockito.when(reportRuntime.formatListValue(Mockito.any(String.class), Mockito.any(String.class), Mockito.any(DataColumnType.class),
544                                 Mockito.anyBoolean(), Mockito.anyBoolean(), Mockito.any(DataSourceType.class), Mockito.any(String.class))).thenReturn("test");
545                 
546                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
547                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
548                 Mockito.when(resultSet.next()).thenReturn(true);
549                 
550                 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
551                 
552                 reportSchedule.setSchedEnabled("N");
553                 reportSchedule.setConditionSQL("SELECT WHEN FROM TABLE WHERE [report_id] ORDER BY");
554                 reportSchedule.setRemDbInfo(remDbInfo);
555                 reportSchedule.persistScheduleData(connection, httpServletRequest);
556         }
557         
558         @Test
559         public void testPersistScheduleData_FormFieldList_case4() throws Exception {
560                 String execute_update = "DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID] and schedule_id = [getScheduleID()]";           
561                 String execute_update_users = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], [emailToUsers.get(i)).getId()], NULL, [(i + 1)])";
562                 String execute_update_roles = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], NULL, [emailToRoles.get(i)).getId()], [((emailToUsers.size() + i + 1)])";
563                 String execute_update_activity = "INSERT into cr_schedule_activity_log (schedule_id, notes, run_time) values ([getScheduleID()],'Submitted:Schedule',TO_DATE('[getRunDate()] [getRunHour()]:[getRunMin()] [getRunAMPM()]', 'MM/DD/YYYY HH:MI AM'))";
564                 String persist_cond_sql_update = "update cr_report_schedule set condition_large_sql = '' where  schedule_id = [scheduleId]";
565                 
566                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyObject(), Mockito.anyString())).thenReturn(dataSet1);
567                 PowerMockito.when(Globals.getExecuteUpdate()).thenReturn(execute_update);
568                 PowerMockito.when(Globals.getExecuteUpdateUsers()).thenReturn(execute_update_users);
569                 PowerMockito.when(Globals.getExecuteUpdateRoles()).thenReturn(execute_update_roles);
570                 PowerMockito.when(Globals.getExecuteUpdateActivity()).thenReturn(execute_update_activity);
571                 PowerMockito.when(Globals.getPersistCondSqlUpdate()).thenReturn(persist_cond_sql_update);
572                 PowerMockito.when(Globals.isPostgreSQL()).thenReturn(true);
573                 PowerMockito.when(Globals.getRequestParams()).thenReturn("1, 2, 3");
574                 PowerMockito.when(Globals.getSessionParams()).thenReturn("1, 2, 3");
575                 PowerMockito.when(Globals.getSessionParamsForScheduling()).thenReturn("login_id");
576                 
577                 FormFieldList formFieldList = new FormFieldList();
578                 formFieldList.setComment("test");
579                 FormFieldType formFieldType = new FormFieldType();
580                 formFieldType.setFieldId("test");
581                 formFieldType.setColId("1");
582                 formFieldType.setFieldName("test");
583                 formFieldType.setFieldType("type");
584                 formFieldType.setValidationType("validation");
585                 formFieldType.setMandatory("Y");
586                 formFieldType.setDefaultValue("test");
587                 formFieldType.setGroupFormField(true);
588                 formFieldType.setValidationType(FormField.VT_TIMESTAMP_MIN);
589                 formFieldList.getFormField().add(formFieldType);
590                 Mockito.when(reportRuntime.getFormFieldList()).thenReturn(formFieldList);
591                 Mockito.when(reportRuntime.getFormFieldDisplayName(Mockito.any(FormFieldType.class))).thenReturn("report_id");
592                 ReportParamValues paramValues = PowerMockito.mock(ReportParamValues.class);
593                 Mockito.when(paramValues.isParameterMultiValue(Matchers.anyString())).thenReturn(false);
594                 Mockito.when(paramValues.isParameterTextAreaValueAndModified(Mockito.any(String.class))).thenReturn(true);
595                 Mockito.when(paramValues.getParamValue(Mockito.any(String.class))).thenReturn("select test");
596                 Mockito.when(reportRuntime.getReportParamValues()).thenReturn(paramValues);
597                 DataSet ds = Mockito.mock(DataSet.class);
598                 Mockito.when(ConnectionUtils.getDataSet(Mockito.any(String.class), Mockito.any(String.class))).thenReturn(ds);
599                 Mockito.when(ds.getRowCount()).thenReturn(1);
600                 Mockito.when(ds.getString(Mockito.anyInt(), Mockito.anyInt())).thenReturn("test");
601                 Mockito.when(reportRuntime.getDBInfo()).thenReturn(AppConstants.DB_DEV);
602                 RemDbInfo remDbInfo = Mockito.mock(RemDbInfo.class);
603                 PowerMockito.whenNew(RemDbInfo.class).withNoArguments().thenReturn(remDbInfo);
604                 Mockito.when(remDbInfo.getDBType(Mockito.any(String.class))).thenReturn("DAYTONA");
605                 Mockito.when(reportRuntime.formatListValue(Mockito.any(String.class), Mockito.any(String.class), Mockito.any(DataColumnType.class),
606                                 Mockito.anyBoolean(), Mockito.anyBoolean(), Mockito.any(DataSourceType.class), Mockito.any(String.class))).thenReturn("test");
607                 
608                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
609                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
610                 Mockito.when(resultSet.next()).thenReturn(true);
611                 
612                 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
613                 
614                 reportSchedule.setSchedEnabled("N");
615                 reportSchedule.setConditionSQL("SELECT WHEN FROM TABLE WHERE [report_id] ORDER BY");
616                 reportSchedule.setRemDbInfo(remDbInfo);
617                 reportSchedule.persistScheduleData(connection, httpServletRequest);
618         }
619         
620         @Test
621         public void testPersistScheduleData_FormFieldList_case5() throws Exception {
622                 String execute_update = "DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID] and schedule_id = [getScheduleID()]";           
623                 String execute_update_users = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], [emailToUsers.get(i)).getId()], NULL, [(i + 1)])";
624                 String execute_update_roles = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], NULL, [emailToRoles.get(i)).getId()], [((emailToUsers.size() + i + 1)])";
625                 String execute_update_activity = "INSERT into cr_schedule_activity_log (schedule_id, notes, run_time) values ([getScheduleID()],'Submitted:Schedule',TO_DATE('[getRunDate()] [getRunHour()]:[getRunMin()] [getRunAMPM()]', 'MM/DD/YYYY HH:MI AM'))";
626                 String persist_cond_sql_update = "update cr_report_schedule set condition_large_sql = '' where  schedule_id = [scheduleId]";
627                 
628                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyObject(), Mockito.anyString())).thenReturn(dataSet1);
629                 PowerMockito.when(Globals.getExecuteUpdate()).thenReturn(execute_update);
630                 PowerMockito.when(Globals.getExecuteUpdateUsers()).thenReturn(execute_update_users);
631                 PowerMockito.when(Globals.getExecuteUpdateRoles()).thenReturn(execute_update_roles);
632                 PowerMockito.when(Globals.getExecuteUpdateActivity()).thenReturn(execute_update_activity);
633                 PowerMockito.when(Globals.getPersistCondSqlUpdate()).thenReturn(persist_cond_sql_update);
634                 PowerMockito.when(Globals.isPostgreSQL()).thenReturn(true);
635                 PowerMockito.when(Globals.getRequestParams()).thenReturn("1, 2, 3");
636                 PowerMockito.when(Globals.getSessionParams()).thenReturn("1, 2, 3");
637                 PowerMockito.when(Globals.getSessionParamsForScheduling()).thenReturn("login_id");
638                 
639                 FormFieldList formFieldList = new FormFieldList();
640                 formFieldList.setComment("test");
641                 FormFieldType formFieldType = new FormFieldType();
642                 formFieldType.setFieldId("test");
643                 formFieldType.setColId("1");
644                 formFieldType.setFieldName("test");
645                 formFieldType.setFieldType("type");
646                 formFieldType.setValidationType("validation");
647                 formFieldType.setMandatory("Y");
648                 formFieldType.setDefaultValue("test");
649                 formFieldType.setGroupFormField(true);
650                 formFieldType.setValidationType(FormField.VT_TIMESTAMP_SEC);
651                 formFieldList.getFormField().add(formFieldType);
652                 Mockito.when(reportRuntime.getFormFieldList()).thenReturn(formFieldList);
653                 Mockito.when(reportRuntime.getFormFieldDisplayName(Mockito.any(FormFieldType.class))).thenReturn("report_id");
654                 ReportParamValues paramValues = PowerMockito.mock(ReportParamValues.class);
655                 Mockito.when(paramValues.isParameterMultiValue(Matchers.anyString())).thenReturn(false);
656                 Mockito.when(paramValues.isParameterTextAreaValueAndModified(Mockito.any(String.class))).thenReturn(true);
657                 Mockito.when(paramValues.getParamValue(Mockito.any(String.class))).thenReturn("select test");
658                 Mockito.when(reportRuntime.getReportParamValues()).thenReturn(paramValues);
659                 DataSet ds = Mockito.mock(DataSet.class);
660                 Mockito.when(ConnectionUtils.getDataSet(Mockito.any(String.class), Mockito.any(String.class))).thenReturn(ds);
661                 Mockito.when(ds.getRowCount()).thenReturn(1);
662                 Mockito.when(ds.getString(Mockito.anyInt(), Mockito.anyInt())).thenReturn("test");
663                 Mockito.when(reportRuntime.getDBInfo()).thenReturn(AppConstants.DB_DEV);
664                 RemDbInfo remDbInfo = Mockito.mock(RemDbInfo.class);
665                 PowerMockito.whenNew(RemDbInfo.class).withNoArguments().thenReturn(remDbInfo);
666                 Mockito.when(remDbInfo.getDBType(Mockito.any(String.class))).thenReturn("TESTDB");
667                 Mockito.when(reportRuntime.formatListValue(Mockito.any(String.class), Mockito.any(String.class), Mockito.any(DataColumnType.class),
668                                 Mockito.anyBoolean(), Mockito.anyBoolean(), Mockito.any(DataSourceType.class), Mockito.any(String.class))).thenReturn("test");
669                 
670                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
671                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
672                 Mockito.when(resultSet.next()).thenReturn(true);
673                 
674                 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
675                 reportSchedule.setRemDbInfo(remDbInfo);
676                 reportSchedule.setSchedEnabled("N");
677                 reportSchedule.setConditionSQL("SELECT WHEN FROM TABLE WHERE [test] ORDER BY");
678         
679                 reportSchedule.persistScheduleData(connection, httpServletRequest);
680         }
681         
682         
683         @Test
684         public void testPersistScheduleData_WithRaptorException() throws Exception {
685                 String execute_update = "DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID] and schedule_id = [getScheduleID()]";           
686                 String execute_update_users = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], [emailToUsers.get(i)).getId()], NULL, [(i + 1)])";
687                 String execute_update_roles = "INSERT INTO cr_report_schedule_users (schedule_id, rep_id, user_id, role_id, order_no) VALUES([getScheduleID()], [reportID], NULL, [emailToRoles.get(i)).getId()], [((emailToUsers.size() + i + 1)])";
688                 String execute_update_activity = "INSERT into cr_schedule_activity_log (schedule_id, notes, run_time) values ([getScheduleID()],'Submitted:Schedule',TO_DATE('[getRunDate()] [getRunHour()]:[getRunMin()] [getRunAMPM()]', 'MM/DD/YYYY HH:MI AM'))";
689                 String persist_cond_sql_update = "update cr_report_schedule set condition_large_sql = '' where  schedule_id = [scheduleId]";
690                 String new_schedule_data = "select coalesce(max(schedule_id),0)+1  AS sequence from cr_report_schedule";
691                 String persist_cond_sql_set = "update cr_report_schedule set condition_sql = ? where schedule_id = [scheduleId]";
692                 
693                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyObject(), Mockito.anyString())).thenReturn(dataSet1);
694                 PowerMockito.when(Globals.getExecuteUpdate()).thenReturn(execute_update);
695                 PowerMockito.when(Globals.getExecuteUpdateUsers()).thenReturn(execute_update_users);
696                 PowerMockito.when(Globals.getExecuteUpdateRoles()).thenReturn(execute_update_roles);
697                 PowerMockito.when(Globals.getExecuteUpdateActivity()).thenReturn(execute_update_activity);
698                 PowerMockito.when(Globals.getPersistCondSqlUpdate()).thenReturn(persist_cond_sql_update);
699                 PowerMockito.when(Globals.isPostgreSQL()).thenReturn(true);
700                 PowerMockito.when(Globals.getPersistCondSqlSet()).thenReturn(persist_cond_sql_update);
701                 
702                 PowerMockito.when(Globals.getRequestParams()).thenReturn("1, 2, 3");
703                 PowerMockito.when(Globals.getSessionParams()).thenReturn("1, 2, 3");
704                 PowerMockito.when(Globals.getSessionParamsForScheduling()).thenReturn("login_id");
705                 PowerMockito.when(Globals.getNewScheduleData()).thenReturn(new_schedule_data);
706                 Mockito.when(reportRuntime.getDBInfo()).thenReturn(AppConstants.DB_DEV);
707                 
708                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
709                 Mockito.when(preparedStatement.executeUpdate()).thenReturn(1);
710                 Mockito.when(resultSet.next()).thenReturn(false);
711                 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
712                 
713                 
714                 reportSchedule.setSchedEnabled("N");
715                 reportSchedule.setStartDate("10/10/2018");
716                 reportSchedule.setEndDate("10/10/2019");
717                 reportSchedule.setRunDate("10/10/2019");
718                 reportSchedule.setRecurrence("Y");
719                 reportSchedule.addEmailToUser("UserID1", "UserName1");
720                 reportSchedule.addEmailToRole("roleId1", "roleName1");
721                 reportSchedule.setConditionSQL("SELECT coalesce(cr.owner_id, cr.create_id) owner_id, cr.create_id, DATE_FORMAT(cr.create_date, '[Globals.getTimeFormat()]') create_date, maint_id, DATE_FORMAT(cr.maint_date, '[Globals.getTimeFormat()]') update_date, cr.menu_id, cr.menu_approved_yn FROM cr_report cr WHERE cr.rep_id= [reportID]");
722                 
723                 reportSchedule.persistScheduleData(connection, httpServletRequest);
724         }
725         
726         
727         @Test
728         public void testDeleteScheduleData_case1() throws RaptorException {
729                 String delete_schedule_data = "SELECT 1 FROM cr_report_schedule WHERE rep_id = [reportID] and sched_user_id = [getScheduleUserID()] and schedule_id = [getScheduleID()]";
730                 String delete_schedule_data_users = "DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID]  and schedule_id = [getScheduleID()]";
731                 String delete_schedule_data_id = "DELETE FROM cr_report_schedule where rep_id = [reportID] and sched_user_id = [getScheduleUserID()] and schedule_id = [getScheduleID()]";
732                                 
733                 PowerMockito.when(Globals.getDeleteScheduleData()).thenReturn(delete_schedule_data);
734                 PowerMockito.when(Globals.getDeleteScheduleDataUsers()).thenReturn(delete_schedule_data_users);
735                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyObject(), Mockito.anyString())).thenReturn(dataSet1);
736                 PowerMockito.when(Globals.getDeleteScheduleDataId()).thenReturn(delete_schedule_data_id);
737                 
738                 Mockito.when(dataSet1.getRowCount()).thenReturn(1);
739         
740                 reportSchedule.deleteScheduleData(connection);
741         }
742
743         @Test
744         public void testDeleteScheduleData_case2() throws RaptorException {
745                 String delete_schedule_data = "SELECT 1 FROM cr_report_schedule WHERE rep_id = [reportID] and sched_user_id = [getScheduleUserID()] and schedule_id = [getScheduleID()]";
746                 String delete_schedule_data_users = "DELETE FROM cr_report_schedule_users WHERE rep_id = [reportID]  and schedule_id = [getScheduleID()]";
747                 String delete_schedule_data_id = "DELETE FROM cr_report_schedule where rep_id = [reportID] and sched_user_id = [getScheduleUserID()] and schedule_id = [getScheduleID()]";
748                                 
749                 PowerMockito.when(Globals.getDeleteScheduleData()).thenReturn(delete_schedule_data);
750                 PowerMockito.when(Globals.getDeleteScheduleDataUsers()).thenReturn(delete_schedule_data_users);
751                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyObject(), Mockito.anyString())).thenReturn(dataSet1);
752                 PowerMockito.when(Globals.getDeleteScheduleDataId()).thenReturn(delete_schedule_data_id);
753                 
754                 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
755         
756                 reportSchedule.deleteScheduleData(connection);
757         }
758         
759         @Test(expected=RaptorException.class)
760         public void testDeleteScheduleData_case3() throws RaptorException {
761                 String delete_schedule_data = "SELECT 1 FROM cr_report_schedule WHERE rep_id = [reportID] and sched_user_id = [getScheduleUserID()] and schedule_id = [getScheduleID()]";
762                                 
763                 PowerMockito.when(Globals.getDeleteScheduleData()).thenReturn(delete_schedule_data);
764                 PowerMockito.when(DbUtils.startTransaction()).thenReturn(null);
765                 PowerMockito.when(DbUtils.executeQuery(Mockito.anyObject(), Mockito.anyString())).thenReturn(dataSet1);
766
767                 PowerMockito.doThrow(new ReportSQLException("Failed to save data...")).when(DbUtils.class);
768                 DbUtils.commitTransaction(Mockito.anyObject());
769                 
770                 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
771                 
772                 reportSchedule.deleteScheduleData(null);
773         }
774         
775         @Test
776         public void testDeleteScheduleData_case4() throws RaptorException {
777                 reportSchedule.setReportID("-1");               
778                 reportSchedule.deleteScheduleData(null);
779         }
780                         
781         
782         @Test(expected=RuntimeException.class)
783         public void testLoadConditionalSQL_Error_case1() throws Exception {
784                 String load_cond_sql = "SELECT condition_large_sql FROM cr_report_schedule WHERE schedule_id=?";
785                                 
786                 Mockito.when(DbUtils.getConnection()).thenReturn(connection);
787                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
788                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
789                 PowerMockito.when(Globals.isWeblogicServer()).thenReturn(true);
790                 Mockito.when(resultSet.next()).thenReturn(false);
791                 
792                 PowerMockito.when(Globals.getLoadCondSql()).thenReturn(load_cond_sql);
793                 
794                 ReportSchedule.loadConditionalSQL("scheduleId#123");
795         }
796         
797         
798         @Test(expected=RaptorException.class)
799         public void testLoadConditionalSQL_Error_case2() throws Exception {
800                 String load_cond_sql = "SELECT condition_large_sql FROM cr_report_schedule WHERE schedule_id=?";
801                 Mockito.when(DbUtils.getConnection()).thenReturn(connection);
802                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
803                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
804                 Mockito.when(Globals.isWeblogicServer()).thenReturn(false);
805                 Mockito.when(Globals.isPostgreSQL()).thenReturn(false);
806                 Mockito.when(Globals.isMySQL()).thenReturn(true);
807                 
808                 Mockito.when(resultSet.next()).thenReturn(false);
809                 
810                 PowerMockito.when(Globals.getLoadCondSql()).thenReturn(load_cond_sql);
811                 
812                 ReportSchedule.loadConditionalSQL("scheduleId#123");
813         }
814         
815         @Test
816         public void testLoadConditionalSQL_Error_case3() throws Exception {
817                 String load_cond_sql = "SELECT condition_large_sql FROM cr_report_schedule WHERE schedule_id=?";
818                 Mockito.when(DbUtils.getConnection()).thenReturn(connection);
819                 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
820                 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
821                 Mockito.when(Globals.isWeblogicServer()).thenReturn(false);
822                 Mockito.when(Globals.isPostgreSQL()).thenReturn(false);
823                 Mockito.when(Globals.isMySQL()).thenReturn(true);
824                 
825                 Mockito.when(resultSet.next()).thenReturn(true);
826                 Mockito.when(resultSet.getString(1)).thenThrow(new SQLException());
827                 PowerMockito.when(Globals.getLoadCondSql()).thenReturn(load_cond_sql);
828                 
829                 ReportSchedule.loadConditionalSQL("scheduleId#123");
830         }
831
832
833         @Test
834         public void testAddEmailArrayToUser() {
835                 ArrayList<IdNameValue> allSelectedUsers= new ArrayList<>();
836                 IdNameValue idNameValue = new IdNameValue();
837                 idNameValue.setId("1");
838                 idNameValue.setName("test");
839                 idNameValue.setReadOnly(true);
840                 idNameValue.setDefaultValue(true);
841                 allSelectedUsers.add(idNameValue);
842                 reportSchedule.addEmailArrayToUser(allSelectedUsers);
843                 assertEquals("1",((IdNameValue)reportSchedule.getEmailToUsers().get(0)).getId());
844         }
845
846         @Test
847         public void testRemoveEmailToUser() {
848                 reportSchedule.removeEmailToUser("1");
849                 List value=reportSchedule.getEmailToUsers();
850                 boolean removed=value.contains(value);
851                 assertFalse(removed);
852         }
853
854
855         @Test
856         public void testAddEmailArrayToRole() {
857                 ArrayList<IdNameValue> allSelectedUsers= new ArrayList<>();
858                 IdNameValue idNameValue = new IdNameValue();
859                 idNameValue.setId("roleID1");
860                 idNameValue.setName("roleName1");
861                 idNameValue.setReadOnly(true);
862                 idNameValue.setDefaultValue(true);
863                 allSelectedUsers.add(idNameValue);
864                 reportSchedule.addEmailArrayToRole(allSelectedUsers);
865                 assertEquals("roleID1",((IdNameValue)reportSchedule.getEmailToRoles().get(0)).getId());
866         }
867         
868         @Test
869         public void testRemoveEmailToRole() {
870                 reportSchedule.removeEmailToRole("roleID1");
871                 List value=reportSchedule.getEmailToRoles();
872                 boolean removed=value.contains(value);
873                 assertFalse(removed);
874         }
875
876         @Test
877         public void testIsAttachmentMode() {
878                 reportSchedule.setAttachmentMode("Y");
879                 assertTrue(reportSchedule.isAttachmentMode());
880         }
881         
882
883         @Test
884         public void testSetConditional() {
885                 reportSchedule.setConditional("Y");
886                 assertEquals("Y",reportSchedule.getConditional());
887         }
888         
889 }