2 * ============LICENSE_START==========================================
4 * ===================================================================
5 * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6 * ===================================================================
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
13 * http://www.apache.org/licenses/LICENSE-2.0
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.
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
26 * https://creativecommons.org/licenses/by/4.0/
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.
34 * ============LICENSE_END============================================
38 package org.onap.portalsdk.analytics.model.definition;
40 import static org.junit.Assert.assertEquals;
41 import static org.junit.Assert.assertFalse;
42 import static org.junit.Assert.assertTrue;
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;
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;
87 import com.mchange.v2.debug.ThreadNameStackTraceRecorder;
89 @RunWith(PowerMockRunner.class)
90 @PrepareForTest({ AppUtils.class, Globals.class, DbUtils.class, AppUtils.class, ESAPI.class, ConnectionUtils.class, ReportSchedule.class})
92 public class ReportScheduleTest {
94 ReportSchedule reportSchedule;
96 private String REPORT_ID="1000";
97 private String USER_ID="USER#1";
100 HttpServletRequest httpServletRequest;
103 HttpSession httpSession;
106 ReportRuntime reportRuntime;
109 ReportDefinition reportDefinition;
118 Connection connection;
121 PreparedStatement preparedStatement;
130 FileInputStream fileInputStream;
133 public void setUp() throws Exception {
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);
142 MockitoAnnotations.initMocks(this);
144 Mockito.when(httpSession.getAttribute(AppConstants.SI_REPORT_RUNTIME)).thenReturn(reportRuntime);
145 Mockito.when(httpServletRequest.getSession()).thenReturn(httpSession);
147 Mockito.when(reportRuntime.getReportID()).thenReturn(REPORT_ID);
148 Mockito.when(AppUtils.getUserID(httpServletRequest)).thenReturn("USER1");
150 PowerMockito.when(ESAPI.encoder()).thenReturn(encoder);
152 createInstanceOfReportSchedule_case1();
153 createInstanceOfReportSchedule_case2();
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";
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);
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," };
171 PowerMockito.when(DbUtils.getConnection()).thenReturn(connection);
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);
178 String source = "This is the source of my input stream";
179 InputStream inputStream = IOUtils.toInputStream(source, "UTF-8");
181 Mockito.when(clob.getAsciiStream()).thenReturn(inputStream);
184 PowerMockito.when(DbUtils.executeQuery(Mockito.anyString())).thenReturn(dataSet1);
185 Mockito.when(dataSet1.getRowCount()).thenReturn(1);
187 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyInt())).thenReturn("Some Value1");
188 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyString())).thenReturn("Some Value2");
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");
200 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyObject())).thenAnswer(new Answer<String>() {
203 public String answer(InvocationOnMock invocation) throws Throwable {
204 Object args[] = invocation.getArguments();
208 columnIndex = Integer.parseInt((String)args[1]);
209 } catch (Exception e) {
210 if ("encrypt_yn".equals((String)args[1]))
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";
225 String new_schedule_data = "select coalesce(max(schedule_id),0)+1 AS sequence from cr_report_schedule";
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);
235 PowerMockito.when(Globals.getUseLoginIdInSchedYN()).thenReturn("Y");
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," };
240 PowerMockito.when(DbUtils.getConnection()).thenReturn(connection);
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);
247 String source = "This is the source of my input stream";
248 InputStream inputStream = IOUtils.toInputStream(source, "UTF-8");
250 Mockito.when(clob.getAsciiStream()).thenReturn(inputStream);
253 PowerMockito.when(DbUtils.executeQuery(Mockito.anyString())).thenReturn(dataSet1);
254 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
256 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyInt())).thenReturn("Some Value1");
257 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyString())).thenReturn("Some Value2");
259 reportSchedule = new ReportSchedule(REPORT_ID, "SCHDULE_ID", USER_ID, httpServletRequest);
262 Mockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyObject())).thenAnswer(new Answer<String>() {
265 public String answer(InvocationOnMock invocation) throws Throwable {
266 Object args[] = invocation.getArguments();
270 columnIndex = Integer.parseInt((String)args[1]);
271 } catch (Exception e) {
272 if ("encrypt_yn".equals((String)args[1]))
285 public void testAddEmailToUser() {
286 reportSchedule.addEmailToUser("UserID1", "UserName1");
287 reportSchedule.addEmailToUser("UserID2", "UserName2");
288 reportSchedule.addEmailToUser("UserID2", "UserName2");
293 public void testPersistScheduleData_case1() throws Exception {
294 reportSchedule.persistScheduleData(connection, httpServletRequest);
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]";
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);
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");
317 Mockito.when(reportRuntime.getDBInfo()).thenReturn(AppConstants.DB_LOCAL);
319 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
320 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
321 Mockito.when(resultSet.next()).thenReturn(true);
323 Mockito.when(dataSet1.getRowCount()).thenReturn(1);
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]");
339 reportSchedule.persistScheduleData(connection, httpServletRequest);
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]";
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);
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");
362 Mockito.when(reportRuntime.getDBInfo()).thenReturn(AppConstants.DB_DEV);
364 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
365 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
366 Mockito.when(resultSet.next()).thenReturn(true);
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]");
375 reportSchedule.persistScheduleData(connection, httpServletRequest);
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]";
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");
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("");
422 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
423 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
424 Mockito.when(resultSet.next()).thenReturn(true);
426 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
428 reportSchedule.setSchedEnabled("N");
429 reportSchedule.setConditionSQL("SELECT WHEN FROM TABLE WHERE AND [test] ORDER BY");
431 reportSchedule.persistScheduleData(connection, httpServletRequest);
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]";
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");
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");
483 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
484 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
485 Mockito.when(resultSet.next()).thenReturn(true);
487 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
489 reportSchedule.setSchedEnabled("N");
490 reportSchedule.setConditionSQL("SELECT WHEN FROM TABLE WHERE [test] ORDER BY");
491 reportSchedule.setRemDbInfo(remDbInfo);
493 reportSchedule.persistScheduleData(connection, httpServletRequest);
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]";
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");
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");
546 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
547 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
548 Mockito.when(resultSet.next()).thenReturn(true);
550 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
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);
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]";
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");
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");
608 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
609 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
610 Mockito.when(resultSet.next()).thenReturn(true);
612 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
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);
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]";
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");
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");
670 Mockito.when(connection.prepareStatement(Mockito.anyString())).thenReturn(preparedStatement);
671 Mockito.when(preparedStatement.executeQuery()).thenReturn(resultSet);
672 Mockito.when(resultSet.next()).thenReturn(true);
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");
679 reportSchedule.persistScheduleData(connection, httpServletRequest);
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]";
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);
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);
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);
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]");
723 reportSchedule.persistScheduleData(connection, httpServletRequest);
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()]";
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);
738 Mockito.when(dataSet1.getRowCount()).thenReturn(1);
740 reportSchedule.deleteScheduleData(connection);
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()]";
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);
754 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
756 reportSchedule.deleteScheduleData(connection);
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()]";
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);
767 PowerMockito.doThrow(new ReportSQLException("Failed to save data...")).when(DbUtils.class);
768 DbUtils.commitTransaction(Mockito.anyObject());
770 Mockito.when(dataSet1.getRowCount()).thenReturn(0);
772 reportSchedule.deleteScheduleData(null);
776 public void testDeleteScheduleData_case4() throws RaptorException {
777 reportSchedule.setReportID("-1");
778 reportSchedule.deleteScheduleData(null);
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=?";
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);
792 PowerMockito.when(Globals.getLoadCondSql()).thenReturn(load_cond_sql);
794 ReportSchedule.loadConditionalSQL("scheduleId#123");
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);
808 Mockito.when(resultSet.next()).thenReturn(false);
810 PowerMockito.when(Globals.getLoadCondSql()).thenReturn(load_cond_sql);
812 ReportSchedule.loadConditionalSQL("scheduleId#123");
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);
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);
829 ReportSchedule.loadConditionalSQL("scheduleId#123");
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());
847 public void testRemoveEmailToUser() {
848 reportSchedule.removeEmailToUser("1");
849 List value=reportSchedule.getEmailToUsers();
850 boolean removed=value.contains(value);
851 assertFalse(removed);
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());
869 public void testRemoveEmailToRole() {
870 reportSchedule.removeEmailToRole("roleID1");
871 List value=reportSchedule.getEmailToRoles();
872 boolean removed=value.contains(value);
873 assertFalse(removed);
877 public void testIsAttachmentMode() {
878 reportSchedule.setAttachmentMode("Y");
879 assertTrue(reportSchedule.isAttachmentMode());
884 public void testSetConditional() {
885 reportSchedule.setConditional("Y");
886 assertEquals("Y",reportSchedule.getConditional());