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