diff options
2 files changed, 3335 insertions, 88 deletions
diff --git a/ecomp-sdk/epsdk-analytics/src/test/java/org/onap/portalsdk/analytics/controller/WizardProcessorTest.java b/ecomp-sdk/epsdk-analytics/src/test/java/org/onap/portalsdk/analytics/controller/WizardProcessorTest.java index b9ebe170..d287ab55 100644 --- a/ecomp-sdk/epsdk-analytics/src/test/java/org/onap/portalsdk/analytics/controller/WizardProcessorTest.java +++ b/ecomp-sdk/epsdk-analytics/src/test/java/org/onap/portalsdk/analytics/controller/WizardProcessorTest.java @@ -40,32 +40,51 @@ package org.onap.portalsdk.analytics.controller; import static org.junit.Assert.*; - +import java.io.InputStream; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.util.ArrayList; +import java.util.List; +import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; +import org.onap.portalsdk.analytics.system.fusion.AppUtils; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.onap.portalsdk.analytics.model.ReportHandler; +import org.onap.portalsdk.analytics.model.base.ReportSecurity; import org.onap.portalsdk.analytics.model.definition.ReportDefinition; +import org.onap.portalsdk.analytics.model.definition.ReportSchedule; import org.onap.portalsdk.analytics.model.runtime.ReportRuntime; -import org.onap.portalsdk.analytics.system.AppUtils; import org.onap.portalsdk.analytics.system.DbUtils; import org.onap.portalsdk.analytics.system.Globals; import org.onap.portalsdk.analytics.system.IAppUtils; import org.onap.portalsdk.analytics.util.AppConstants; +import org.onap.portalsdk.analytics.util.DataSet; +import org.onap.portalsdk.analytics.xmlobj.ChartAdditionalOptions; +import org.onap.portalsdk.analytics.xmlobj.ChartDrillFormfield; +import org.onap.portalsdk.analytics.xmlobj.ChartDrillOptions; +import org.onap.portalsdk.analytics.xmlobj.ColFilterType; +import org.onap.portalsdk.analytics.xmlobj.DataColumnType; +import org.onap.portalsdk.analytics.xmlobj.DataSourceType; +import org.onap.portalsdk.analytics.xmlobj.FormFieldType; +import org.onap.portalsdk.analytics.xmlobj.JavascriptItemType; +import org.onap.portalsdk.analytics.xmlobj.ObjectFactory; +import org.onap.portalsdk.analytics.xmlobj.SemaphoreList; +import org.onap.portalsdk.analytics.xmlobj.SemaphoreType; +import org.onap.portalsdk.core.domain.User; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) -@PrepareForTest({ WizardProcessor.class, AppUtils.class, Globals.class, DbUtils.class}) +@PrepareForTest({DbUtils.class, Globals.class, IAppUtils.class, WizardProcessor.class})//, RaptorAdapter.class}) public class WizardProcessorTest { WizardProcessor wizardProcessor; @@ -74,10 +93,13 @@ public class WizardProcessorTest { HttpServletRequest httpServletRequest; @Mock + ServletContext servletContext; + + @Mock HttpSession httpSession; @Mock - IAppUtils iAppUtils; + AppUtils appUtils; @Mock ReportRuntime reportRuntime; @@ -90,80 +112,76 @@ public class WizardProcessorTest { @Mock WizardSequence wizardSequence; + + @Mock + DataSet dataSet; + + @Mock + DataSet dataSet1; + + @Mock + DataSet dataSet2; + + @Mock + ResultSet resultSet; + + @Mock + ResultSetMetaData resultSetMetaData; + + @Mock + ReportSchedule reportSchedule; + + @Mock + User user; + @Mock + ReportSecurity reportSecurity; + private String REPORT_ID="1000"; + private String DETAIL_ID="3000"; + @Before public void init() throws Exception { - - PowerMockito.mockStatic(Globals.class); - PowerMockito.mockStatic(AppUtils.class); + PowerMockito.mockStatic(DbUtils.class); - - MockitoAnnotations.initMocks(this); - - PowerMockito.when(Globals.getAppUtils()).thenReturn(iAppUtils); - PowerMockito.when(AppUtils.getImgFolderURL()).thenReturn("http://sometesturl:9090/hi"); - PowerMockito.when(httpServletRequest.getSession()).thenReturn(httpSession); - - PowerMockito.when(httpSession.getAttribute(AppConstants.SI_REPORT_DEFINITION)).thenReturn(reportDefinition); - - PowerMockito.when(AppUtils.nvl(Mockito.anyString())).thenAnswer(new Answer<String>() { - @Override - public String answer(InvocationOnMock invocation) throws Throwable { - Object[] args = invocation.getArguments(); - String inputString = (String) args[0]; - return (inputString == null) ? "" : inputString; - } - } ); + PowerMockito.mockStatic(Globals.class); + PowerMockito.mockStatic(IAppUtils.class); - PowerMockito.when(AppUtils.getRequestNvlValue(Mockito.anyObject(), Mockito.anyString())).thenAnswer(new Answer<String>() { - @Override - public String answer(InvocationOnMock invocation) throws Throwable { - Object[] args = invocation.getArguments(); - HttpServletRequest request = (HttpServletRequest) args[0]; - String valueID = (String) args[1]; - String value = (String) request.getAttribute(valueID); + Mockito.when(httpServletRequest.getSession()).thenReturn(httpSession); - /** - if (value == null) - value = ESAPI.encoder().encodeForSQL( SecurityCodecUtil.getCodec(), request.getParameter(valueID)); - ***/ + Mockito.when(httpSession.getAttribute(AppConstants.SI_REPORT_DEFINITION)).thenReturn(reportDefinition); + Mockito.when(httpSession.getAttribute(AppConstants.SI_REPORT_SCHEDULE)).thenReturn(reportSchedule); + Mockito.when(httpSession.getAttribute(AppConstants.SI_REPORT_RUNTIME)).thenReturn(reportRuntime); + + PowerMockito.whenNew(ReportHandler.class).withNoArguments().thenReturn(reportHandler); - return (value == null) ? "" : value; - } - } ); - + PowerMockito.when(Globals.getAppUtils()).thenReturn(appUtils); - PowerMockito.when(AppUtils.getRequestValue(Mockito.anyObject(), Mockito.anyString())).thenAnswer(new Answer<String>() { - @Override - public String answer(InvocationOnMock invocation) throws Throwable { - Object[] args = invocation.getArguments(); - HttpServletRequest request = (HttpServletRequest) args[0]; - String valueID = (String) args[1]; - String value = (String) request.getAttribute(valueID); - - /*** - if (value == null) - value = ESAPI.encoder().encodeForSQL( SecurityCodecUtil.getCodec(), request.getParameter(valueID)); - ***/ - return value; - } - } ); + Mockito.when(reportHandler.loadReportDefinition(httpServletRequest, REPORT_ID)).thenReturn(reportDefinition); + + Mockito.when(reportHandler.loadReportRuntime(httpServletRequest, REPORT_ID, false)).thenReturn(reportRuntime); + Mockito.when(reportDefinition.getWizardSequence()).thenReturn(wizardSequence); + Mockito.when(reportDefinition.getReportSchedule()).thenReturn(reportSchedule); + Mockito.when(reportRuntime.getReportID()).thenReturn(REPORT_ID); + Mockito.when(reportDefinition.getReportID()).thenReturn(REPORT_ID); + + Mockito.when(appUtils.getUserID(httpServletRequest)).thenReturn("USER1"); + - wizardProcessor = new WizardProcessor(); + wizardProcessor = Mockito.spy(WizardProcessor.class); } - @Test public void testWizardProcessor() { WizardProcessor wizardProcessorLocal = new WizardProcessor(); - assertNotNull(wizardProcessorLocal); } + + @Test(expected=NullPointerException.class) public void testPersistReportDefinition_null_arguments() throws Exception { wizardProcessor.persistReportDefinition(null, null); @@ -176,31 +194,21 @@ public class WizardProcessorTest { @Test(expected=NullPointerException.class) public void testPersistReportDefinition_null_arguments_case2() throws Exception { - Mockito.when(httpSession.getAttribute(AppConstants.SI_REPORT_RUNTIME)).thenReturn(reportRuntime); wizardProcessor.persistReportDefinition(httpServletRequest, null); } @Test(expected=NullPointerException.class) public void testPersistReportDefinition_null_arguments_case3() throws Exception { - Mockito.when(httpSession.getAttribute(AppConstants.SI_REPORT_RUNTIME)).thenReturn(reportRuntime); - PowerMockito.when(reportRuntime.getReportID()).thenReturn("Report#1"); - wizardProcessor.persistReportDefinition(httpServletRequest, null); } @Test public void testPersistReportDefinition_not_null_arguments_case1() throws Exception { - Mockito.when(httpSession.getAttribute(AppConstants.SI_REPORT_RUNTIME)).thenReturn(reportRuntime); - Mockito.when(reportRuntime.getReportID()).thenReturn("Report#1"); wizardProcessor.persistReportDefinition(httpServletRequest, reportDefinition); } @Test public void testPersistReportDefinition_not_null_arguments_case2() throws Exception { - Mockito.when(httpSession.getAttribute(AppConstants.SI_REPORT_RUNTIME)).thenReturn(reportRuntime); - Mockito.when(reportRuntime.getReportID()).thenReturn("Report#1"); - Mockito.when(reportDefinition.getReportID()).thenReturn("Report#1"); - wizardProcessor.persistReportDefinition(httpServletRequest, reportDefinition); } @@ -209,44 +217,2924 @@ public class WizardProcessorTest { wizardProcessor.processWizardStep(null); } - @Test(expected=NullPointerException.class) + @Test(expected=Exception.class) public void testProcessWizardStep_not_null_arguments_case1() throws Exception { wizardProcessor.processWizardStep(httpServletRequest); } - @Test(expected=NullPointerException.class) + @Test(expected=Exception.class) public void testProcessWizardStep_not_null_arguments_case2() throws Exception { - Mockito.when(httpServletRequest.getParameter(AppConstants.RI_WIZARD_ACTION)).thenReturn(null); + mockHttpParameter(AppConstants.RI_WIZARD_ACTION,null); wizardProcessor.processWizardStep(httpServletRequest); } - @Test(expected=NullPointerException.class) + @Test(expected=Exception.class) public void testProcessWizardStep_not_null_arguments_case3() throws Exception { - Mockito.when(httpServletRequest.getParameter(AppConstants.RI_WIZARD_ACTION)).thenReturn("NA"); + mockHttpParameter(AppConstants.RI_WIZARD_ACTION,"NA"); wizardProcessor.processWizardStep(httpServletRequest); } @Test public void testProcessWizardStep_not_null_arguments_case4() throws Exception { - PowerMockito.whenNew(ReportHandler.class).withNoArguments().thenReturn(reportHandler); - Mockito.when(AppUtils.getRequestValue(httpServletRequest, AppConstants.RI_REPORT_ID)).thenReturn("Report#1"); - Mockito.when(reportHandler.loadReportDefinition(httpServletRequest,"Report#1")).thenReturn(reportDefinition); - Mockito.when(httpServletRequest.getParameter(AppConstants.RI_WIZARD_ACTION)).thenReturn("NA"); - Mockito.when(AppUtils.getRequestNvlValue(httpServletRequest, "showDashboardOptions")).thenReturn(""); + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.RI_ACTION); + mockHttpAttribute(AppConstants.RI_REPORT_ID, REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + + setWizardSteps("NA", "NA"); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processDefinition_Dashboard_case1() throws Exception { + + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.RI_ACTION); + mockHttpAttribute(AppConstants.RI_REPORT_ID, REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute("folder_id","2000"); + mockHttpAttribute("reportType",AppConstants.RT_DASHBOARD); + + setWizardSteps(AppConstants.WS_DEFINITION, "NA"); + + mockHttpAttribute("reportName", "Report One"); + mockHttpAttribute("reportDescr","Report One help for testing..."); + + mockHttpAttribute("allowSchedule",""); + mockHttpAttribute("multiGroupColumn",""); + mockHttpAttribute("topDown",""); + mockHttpAttribute("sizedByContent",""); + + mockHttpAttribute("isOneTimeScheduleAllowed",""); + mockHttpAttribute("isHourlyScheduleAllowed",""); + mockHttpAttribute("isDailyScheduleAllowed",""); + mockHttpAttribute("isDailyMFScheduleAllowed",""); + mockHttpAttribute("isWeeklyScheduleAllowed",""); + mockHttpAttribute("isMonthlyScheduleAllowed",""); + + mockHttpAttribute("dashboardLayoutHTML","<html>dashboardLayoutHtml</html>"); + mockHttpAttribute("heightContainer",""); + mockHttpAttribute("widthContainer",""); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processDefinition_Dashboard_case2() throws Exception { + + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.RI_ACTION); + mockHttpAttribute(AppConstants.RI_REPORT_ID, REPORT_ID); + mockHttpAttribute("showDashboardOptions","Y"); + mockHttpAttribute("folder_id","2000"); + mockHttpAttribute("reportType",AppConstants.RT_DASHBOARD); + + setWizardSteps(AppConstants.WS_DEFINITION, "NA"); + + mockHttpAttribute("reportName", "Report One"); + + String reportDescr = "Report One help for testing. "; + + while (reportDescr.length() <1000) { + reportDescr += reportDescr; + } + + mockHttpAttribute("reportDescr", reportDescr); + + mockHttpAttribute("allowSchedule","Y"); + mockHttpAttribute("multiGroupColumn","Y"); + mockHttpAttribute("topDown","Y"); + mockHttpAttribute("sizedByContent","Y"); + + mockHttpAttribute("isOneTimeScheduleAllowed","Y"); + mockHttpAttribute("isHourlyScheduleAllowed","Y"); + mockHttpAttribute("isDailyScheduleAllowed","Y"); + mockHttpAttribute("isDailyMFScheduleAllowed","Y"); + mockHttpAttribute("isWeeklyScheduleAllowed","Y"); + mockHttpAttribute("isMonthlyScheduleAllowed","Y"); + + mockHttpAttribute("dashboardLayoutHTML","<html>dashboardLayoutHtml</html>"); + mockHttpAttribute("heightContainer","auto"); + mockHttpAttribute("widthContainer","auto"); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + + } + + + private void setWizardSteps(String currentStep, String currentSubStep) { + Mockito.when(wizardSequence.getCurrentStep()).thenReturn(currentStep); + Mockito.when(wizardSequence.getCurrentSubStep()).thenReturn(currentSubStep); + } + + @Test + public void testProcessWizardStep_processDefinition_Crosstab_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.RI_ACTION); + mockHttpAttribute(AppConstants.RI_REPORT_ID, REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute("folder_id","2000"); + mockHttpAttribute("reportType",AppConstants.RT_CROSSTAB); + + setWizardSteps(AppConstants.WS_DEFINITION, "NA"); + + mockHttpAttribute("reportName","Report One"); + mockHttpAttribute("reportDescr","Report One help for testing..."); + + mockHttpAttribute("allowSchedule","N"); + mockHttpAttribute("multiGroupColumn","N"); + mockHttpAttribute("topDown","N"); + mockHttpAttribute("sizedByContent","N"); + + mockHttpAttribute("isOneTimeScheduleAllowed","N"); + mockHttpAttribute("isHourlyScheduleAllowed","N"); + mockHttpAttribute("isDailyScheduleAllowed","N"); + mockHttpAttribute("isDailyMFScheduleAllowed","N"); + mockHttpAttribute("isWeeklyScheduleAllowed","N"); + mockHttpAttribute("isMonthlyScheduleAllowed","N"); + + mockHttpAttribute("widthNo","500px"); + mockHttpAttribute("dataGridAlign","right"); + mockHttpAttribute("pdfImg","/onap-portal/images"); + mockHttpAttribute("emptyMessage","empty"); + mockHttpAttribute("formHelp","refer help option in onap portal"); + mockHttpAttribute("excelDownloadSize","1024"); + mockHttpAttribute("reportInNewWindow","N"); + + mockHttpAttribute("hideFormFieldsAfterRun","N"); + mockHttpAttribute("reportInNewWindow","N"); + mockHttpAttribute("displayFolderTree","N"); + mockHttpAttribute("pageSize","100"); + mockHttpAttribute("menuApproved","N"); + + String [] menuIds = {"30001", "3002", "3003", "3004"}; + + mockHttpParameterValues("menuID", menuIds); + + mockHttpAttribute("runtimeColSortDisabled","N"); + mockHttpAttribute("reportDefType","N"); + mockHttpAttribute("heightContainer","N"); + mockHttpAttribute("widthContainer","N"); + mockHttpAttribute("hideForm","N"); + mockHttpAttribute("hideChart","N"); + mockHttpAttribute("hideData","N"); + mockHttpAttribute("hideBtns","N"); + + mockHttpAttribute("hideMap","N"); + mockHttpAttribute("hideExcelIcons","N"); + mockHttpAttribute("hidePDFIcons","N"); + + mockHttpAttribute("dataSource","org.att.onap.DataSource"); + + mockHttpAttribute("numFormCols","10"); + mockHttpAttribute("reportTitle","ONAP Portal User Report"); + mockHttpAttribute("reportSubTitle",""); + + mockHttpAttribute("reportHeader",""); + mockHttpAttribute("reportFooter",""); + mockHttpAttribute("frozenColumns","10"); + + PowerMockito.when(Globals.getDBType()).thenReturn("oracle"); + + String sql = "SELECT a.SCHEMA_ID, a.SCHEMA_DESC, DATASOURCE_TYPE FROM SCHEMA_INFO a where schema_id = '[schema_id]'"; + PowerMockito.when(Globals.getDBType()).thenReturn("oracle"); + PowerMockito.when(Globals.getRemoteDbSchemaSqlWithWhereClause()).thenReturn(sql); + + PowerMockito.when(DbUtils.executeQuery(Mockito.anyString())).thenReturn(dataSet); + + Mockito.when(dataSet.getRowCount()).thenReturn(2); + Mockito.when(dataSet.getItem(Mockito.anyInt(), Mockito.anyInt())).thenReturn("oracle12c"); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processValidateSQL_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_VALIDATE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions","Option 1"); + mockHttpAttribute("folder_id","2000"); + + setWizardSteps(AppConstants.WS_SQL, "NA"); + + mockHttpAttribute("reportSQL","SELECT [colNames.toString()] FROM ( [reportSQL]"); + wizardProcessor.processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processDefinition_processValidateSQL_case2() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_VALIDATE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute("folder_id","2000"); + + setWizardSteps(AppConstants.WS_SQL, "NA"); + + mockHttpAttribute("reportSQL","SELECT [colNames.toString()] FROM ( [reportSQL]"); + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processTableAdd_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_VALIDATE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute("folder_id","20001"); + + setWizardSteps(AppConstants.WS_TABLES, AppConstants.WSS_ADD); + + Mockito.when(reportHandler.loadReportDefinition(httpServletRequest, "10001")).thenReturn(reportDefinition); + + mockHttpAttribute("reportSQL","SELECT [colNames.toString()] FROM ( [reportSQL]"); + + mockHttpAttribute("tableName","cr_report_access crc"); + mockHttpAttribute("joinTableName","cr_report cr"); + mockHttpAttribute("joinExpr","crc.rep_id = cr.rep_id"); + mockHttpAttribute("tablePK","crc.rep_id"); + mockHttpAttribute("displayName","Report Access"); + mockHttpAttribute("outerJoin"," "); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processTableAdd_case2() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_VALIDATE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute("folder_id","2000"); + + DataSourceType dataSourceType = new DataSourceType(); + dataSourceType.setRefTableId("reportaccess"); + dataSourceType.setTableName("cr_report_access crc"); + + Mockito.when(reportDefinition.getTableById(Mockito.anyString())).thenReturn(dataSourceType); + + setWizardSteps(AppConstants.WS_TABLES, AppConstants.WSS_ADD); + + + mockHttpAttribute("reportSQL","SELECT [colNames.toString()] FROM ( [reportSQL]"); + mockHttpAttribute("tableName","cr_report_access crc"); + mockHttpAttribute("joinTableName","cr_report cr"); + mockHttpAttribute("joinExpr","crc.rep_id = cr.rep_id"); + mockHttpAttribute("tablePK","crc.rep_id"); + mockHttpAttribute("displayName","Report Access"); + mockHttpAttribute("outerJoin"," "); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processTableEdit_case1() throws Exception { + + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_VALIDATE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID, DETAIL_ID); + + DataSourceType dataSourceType = new DataSourceType(); + dataSourceType.setTableId("reportaccess"); + dataSourceType.setTableName("cr_report_access crc"); + Mockito.when(reportDefinition.getTableById(Mockito.anyString())).thenReturn(dataSourceType); + + Mockito.when(reportDefinition.getTableByDBName(Mockito.anyString())).thenReturn(dataSourceType); + + setWizardSteps(AppConstants.WS_TABLES, AppConstants.WSS_EDIT); + + mockHttpAttribute("reportSQL","SELECT [colNames.toString()] FROM ( [reportSQL]"); + + mockHttpAttribute("tableName","cr_report_access crc"); + mockHttpAttribute("joinTableName","cr_report cr"); + mockHttpAttribute("joinExpr","crc.rep_id = cr.rep_id"); + mockHttpAttribute("tablePK","crc.rep_id"); + mockHttpAttribute("displayName","Report Access"); + mockHttpAttribute("outerJoin"," "); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processTableDelete_case1() throws Exception { + + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_VALIDATE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_TABLES, AppConstants.WA_DELETE); + + DataSourceType dataSourceType = new DataSourceType(); + dataSourceType.setTableId("reportaccess"); + dataSourceType.setTableName("cr_report_access crc"); + + Mockito.when(reportDefinition.getTableById(Mockito.anyString())).thenReturn(dataSourceType); + Mockito.when(reportDefinition.getTableByDBName(Mockito.anyString())).thenReturn(dataSourceType); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + + @Test + public void testProcessWizardStep_processColumnAddEdit_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_VALIDATE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_COLUMNS, AppConstants.WSS_ADD); + + DataSourceType dataSourceType = new DataSourceType(); + dataSourceType.setTableId("reportaccess"); + dataSourceType.setTableName("cr_report_access crc"); + + Mockito.when(reportDefinition.getTableById(Mockito.anyString())).thenReturn(dataSourceType); + Mockito.when(reportDefinition.getTableByDBName(Mockito.anyString())).thenReturn(dataSourceType); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + + @Test + public void testProcessWizardStep_processColumnAddEdit_case2() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_VALIDATE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_COLUMNS, AppConstants.WSS_EDIT); + + Mockito.when(reportDefinition.getReportType()).thenReturn(AppConstants.RT_CROSSTAB); + Mockito.when(reportDefinition.getReportDefType()).thenReturn(AppConstants.RD_SQL_BASED); + + DataColumnType dataColumnType = new DataColumnType(); + + dataColumnType.setTableId("reportaccess"); + dataColumnType.setDbColName("rep_id"); + dataColumnType.setColName("rep_id"); + dataColumnType.setDbColType("integer"); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType); + + mockHttpAttribute("columnDetails","reportaccess|rep_id|integer"); + mockHttpAttribute("exprFormula","COUNT(*)"); + mockHttpAttribute("displayWidth","500"); + mockHttpAttribute("drillDownParams"," [this] "); + mockHttpAttribute("visible", "true"); + mockHttpAttribute("sortable", "true"); + mockHttpAttribute("nowrap", "Yes"); + mockHttpAttribute("indentation", "100"); + mockHttpAttribute("dependsOnFormField", "100"); + mockHttpAttribute("groupBreak", "true"); + mockHttpAttribute("groupByPos", "1"); + mockHttpAttribute("subTotalCustomText", ""); + mockHttpAttribute("hideRepeatedKeys", "true"); + mockHttpAttribute("displayTotal", "100"); + mockHttpAttribute("widthInPxls", "500"); + mockHttpAttribute("crossTabValue", AppConstants.CV_VALUE); + mockHttpAttribute("displayTotalPerRow", "100"); + mockHttpAttribute("displayName", "ONAP USER REPORT"); + mockHttpAttribute("colType", AppConstants.CT_HYPERLINK); + mockHttpAttribute("hyperlinkURL", "http://onap.readthedocs.io/en/latest"); + mockHttpAttribute("anchor", "IMAGE"); + mockHttpAttribute("actionImg", "Dummy"); + mockHttpAttribute("displayFormat", "HTML"); + mockHttpAttribute("displayFormat", "HTML"); + mockHttpAttribute("displayAlign", "right"); + mockHttpAttribute("displayHeaderAlign", "right"); + mockHttpAttribute("drillDownURL", ""); + mockHttpAttribute("drillDownSuppress", ""); + mockHttpAttribute("drillDownPopUp", ""); + mockHttpAttribute("semaphore", ""); + mockHttpAttribute("semaphoreTypeHidden", ""); + mockHttpAttribute("multiGroupColLevel", "1000"); + mockHttpAttribute("startMultiGroup", ""); + mockHttpAttribute("colspan", ""); + mockHttpAttribute("colDataFormat", "GRID"); + mockHttpAttribute("enhancedPagination", "100"); + mockHttpAttribute("no_parse_date", "true"); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + /*** + @Test + public void testProcessWizardStep_processColumnAddEdit_case3() throws Exception { + + } + + @Test + public void testProcessWizardStep_processColumnAddEdit_case4() throws Exception { + + } + + @Test + public void testProcessWizardStep_processColumnAddEdit_case5() throws Exception { + + } + + ***/ + + @Test + public void testProcessWizardStep_processColumnAddMulti_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_VALIDATE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_COLUMNS, AppConstants.WSS_ADD_MULTI); + + String[] addColumn = {"Y", "N", "Y"}; + String[] tableId = {"Id", "N", "Y"}; + String[] columnName = {"REP_ID", "ORDER_NO", "ROLE_ID"}; + String[] columnType = {"INTEGER", "INTEGER", "INTEGER"}; + String[] displayName = {"Report Id", "Order No", "Role Id"}; + + mockHttpParameterValues("addColumn", addColumn); + mockHttpParameterValues("tableId", tableId); + mockHttpParameterValues("columnName", columnName); + mockHttpParameterValues("columnType", columnType); + mockHttpParameterValues("displayName", displayName); + + + DataColumnType dataColumnType1 = new DataColumnType(); + + dataColumnType1.setTableId("reportaccess"); + dataColumnType1.setDbColName("REP_ID"); + dataColumnType1.setColName("REP_ID"); + dataColumnType1.setDbColType("INTEGER"); + dataColumnType1.setDisplayName("Report Id"); + + DataColumnType dataColumnType2 = new DataColumnType(); + + dataColumnType2.setTableId("reportaccess"); + dataColumnType2.setDbColName("ORDER_NO"); + dataColumnType2.setColName("ORDER_NO"); + dataColumnType2.setDbColType("INTEGER"); + dataColumnType2.setDisplayName("Order No"); + + List<DataColumnType> listDataColumnType = new ArrayList<DataColumnType>(); + listDataColumnType.add(dataColumnType1); + listDataColumnType.add(dataColumnType2); + + Mockito.when(reportDefinition.getAllColumns()).thenReturn(listDataColumnType); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + + } + + @Test + public void testProcessWizardStep_processColumnOrderAll_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_VALIDATE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_COLUMNS, AppConstants.WSS_ORDER_ALL); + + String[] colId = {"REP_ID", "ORDER_NO", "ROLE_ID"}; + String[] colOrder = {"1", "2", "3"}; + + mockHttpParameterValues("colId", colId); + mockHttpParameterValues("colOrder", colOrder); + + DataColumnType dataColumnType1 = new DataColumnType(); + + dataColumnType1.setTableId("reportaccess"); + dataColumnType1.setDbColName("REP_ID"); + dataColumnType1.setColName("REP_ID"); + dataColumnType1.setDbColType("INTEGER"); + dataColumnType1.setDisplayName("Report Id"); + + Mockito.when(reportDefinition.getColumnById("REP_ID")).thenReturn(dataColumnType1); + + DataColumnType dataColumnType2 = new DataColumnType(); + + dataColumnType2.setTableId("reportaccess"); + dataColumnType2.setDbColName("ORDER_NO"); + dataColumnType2.setColName("ORDER_NO"); + dataColumnType2.setDbColType("INTEGER"); + dataColumnType2.setDisplayName("Order No"); + + List<DataColumnType> listDataColumnType = new ArrayList<DataColumnType>(); + listDataColumnType.add(dataColumnType1); + listDataColumnType.add(dataColumnType2); + + Mockito.when(reportDefinition.getAllColumns()).thenReturn(listDataColumnType); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + + } + + + @Test + public void testProcessWizardStep_processColumnDelete_case1() throws Exception { + + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_DELETE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_COLUMNS, "NA"); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processColumnMoveUp_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_MOVE_UP); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_COLUMNS, "NA"); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processColumnMoveDown_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_MOVE_DOWN); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_COLUMNS, "NA"); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + + } + + @Test + public void testProcessWizardStep_processFormFieldAddEdit_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, "ACTION"); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_FORM_FIELDS, AppConstants.WSS_ADD); + + Mockito.when(reportDefinition.getReportDefType()).thenReturn(AppConstants.RD_SQL_BASED); + + FormFieldType formFieldType = new FormFieldType(); + formFieldType.setFieldId(AppConstants.RI_REPORT_ID); + + Mockito.when(reportDefinition.addFormFieldType(Mockito.anyObject(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyObject(), Mockito.anyObject(), Mockito.anyString(), Mockito.anyString())).thenReturn(formFieldType); + + mockHttpAttribute("fieldName", "REP_ID"); + mockHttpAttribute("fieldColId", "REP_ID"); + mockHttpAttribute("displayFormat", "TABLE"); + mockHttpAttribute("fieldType", "INTEGER"); + mockHttpAttribute("validation", "Success"); + mockHttpAttribute("mandatory", "Y"); + mockHttpAttribute("defaultValue", "null"); + mockHttpAttribute("fieldHelp", "Refer ONAP Help"); + mockHttpAttribute("fieldSQL", "SELECT 1 FROM DUAL"); + mockHttpAttribute("fieldDefaultSQL", "SELECT 1 FROM DUAL"); + mockHttpAttribute("visible", "Y"); + + mockHttpAttribute("dependsOn", ""); + mockHttpAttribute("rangeStartDate", "01/01/2018"); + mockHttpAttribute("rangeEndDate", "12/12/2018"); + mockHttpAttribute("rangeStartDateSQL", "Y"); + mockHttpAttribute("rangeEndDateSQL", "Y"); + mockHttpAttribute("isGroupFormField", "Y"); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processFormFieldAddEdit_case2() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_ADD_USER); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_FORM_FIELDS, AppConstants.WSS_EDIT); + + Mockito.when(reportDefinition.getReportDefType()).thenReturn(AppConstants.RD_SQL_BASED); + + FormFieldType formFieldType = new FormFieldType(); + formFieldType.setFieldId(AppConstants.RI_REPORT_ID); + + Mockito.when(reportDefinition.getFormFieldById(Mockito.anyString())).thenReturn(formFieldType); + + Mockito.when(reportDefinition.addFormFieldType(Mockito.anyObject(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyObject(), Mockito.anyObject(), Mockito.anyString(), Mockito.anyString())).thenReturn(formFieldType); + + mockHttpAttribute("fieldName", "REP_ID"); + mockHttpAttribute("fieldColId", "REP_ID"); + mockHttpAttribute("displayFormat", "TABLE"); + mockHttpAttribute("fieldType", "INTEGER"); + mockHttpAttribute("validation", "Success"); + mockHttpAttribute("mandatory", "Y"); + mockHttpAttribute("defaultValue", "null"); + mockHttpAttribute("fieldHelp", "Refer ONAP Help"); + mockHttpAttribute("fieldSQL", "SELECT 1 FROM DUAL"); + mockHttpAttribute("fieldDefaultSQL", "SELECT 1 FROM DUAL"); + mockHttpAttribute("visible", "Y"); + mockHttpAttribute("dependsOn", ""); + mockHttpAttribute("rangeStartDate", "01/01/2018"); + mockHttpAttribute("rangeEndDate", "12/12/2018"); + mockHttpAttribute("rangeStartDateSQL", "Y"); + mockHttpAttribute("rangeEndDateSQL", "Y"); + mockHttpAttribute("isGroupFormField", "Y"); + mockHttpAttribute("newPredefinedValue", "Y"); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + + } + + + @Test + public void testProcessWizardStep_processFormFieldDelete_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_DELETE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_FORM_FIELDS, AppConstants.WA_DELETE); + Mockito.when(reportDefinition.getReportDefType()).thenReturn(AppConstants.RD_SQL_BASED); + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + + } + + + @Test + public void testProcessWizardStep_processFormFieldMoveUp_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_MOVE_UP); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_FORM_FIELDS, AppConstants.WA_MOVE_UP); + Mockito.when(reportDefinition.getReportDefType()).thenReturn(AppConstants.RD_SQL_BASED); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + + } + + @Test + public void testProcessWizardStep_processFormFieldMoveDown_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_MOVE_DOWN); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_FORM_FIELDS, AppConstants.WA_MOVE_DOWN); + Mockito.when(reportDefinition.getReportDefType()).thenReturn(AppConstants.RD_SQL_BASED); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processFormFieldBlank_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WSS_ADD_BLANK); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_FORM_FIELDS, AppConstants.WSS_ADD_BLANK); + + Mockito.when(reportDefinition.getReportDefType()).thenReturn(AppConstants.RD_SQL_BASED); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processFormFieldInfoBar_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WSS_INFO_BAR); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_FORM_FIELDS, AppConstants.WSS_INFO_BAR); + + Mockito.when(reportDefinition.getReportDefType()).thenReturn(AppConstants.RD_SQL_BASED); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processFilterAddEdit_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, "ACTION"); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_FILTERS, AppConstants.WSS_ADD); + + DataColumnType dataColumnType1 = new DataColumnType(); + + dataColumnType1.setTableId("reportaccess"); + dataColumnType1.setDbColName("REP_ID"); + dataColumnType1.setColName("REP_ID"); + dataColumnType1.setDbColType("INTEGER"); + dataColumnType1.setDisplayName("Report Id"); + + DataColumnType dataColumnType2 = new DataColumnType(); + + dataColumnType2.setTableId("reportaccess"); + dataColumnType2.setDbColName("ORDER_NO"); + dataColumnType2.setColName("ORDER_NO"); + dataColumnType2.setDbColType("INTEGER"); + dataColumnType2.setDisplayName("Order No"); + + List<DataColumnType> listDataColumnType = new ArrayList<DataColumnType>(); + listDataColumnType.add(dataColumnType1); + listDataColumnType.add(dataColumnType2); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType2); + Mockito.when(reportDefinition.getAllColumns()).thenReturn(listDataColumnType); + + mockHttpAttribute("filterColId", "ORDER_NO"); + mockHttpAttribute("filterExpr", "ORDER_NO="); + mockHttpAttribute("argType", AppConstants.AT_COLUMN); + mockHttpAttribute("argValue", "1001"); + + mockHttpAttribute("rangeEndDateSQL", "Y"); + mockHttpAttribute("isGroupFormField", "Y"); + + mockHttpAttribute("newPredefinedValue", "Y"); + + mockHttpAttribute("filterJoin", "+"); + mockHttpAttribute("openBrackets", "("); + mockHttpAttribute("closeBrackets", ")"); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processFilterAddEdit_case2() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, "ACTION"); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_FILTERS, AppConstants.WSS_EDIT); + + DataColumnType dataColumnType1 = new DataColumnType(); + + dataColumnType1.setTableId("reportaccess"); + dataColumnType1.setDbColName("REP_ID"); + dataColumnType1.setColName("REP_ID"); + dataColumnType1.setDbColType("INTEGER"); + dataColumnType1.setDisplayName("Report Id"); + + DataColumnType dataColumnType2 = new DataColumnType(); + + dataColumnType2.setTableId("reportaccess"); + dataColumnType2.setDbColName("ORDER_NO"); + dataColumnType2.setColName("ORDER_NO"); + dataColumnType2.setDbColType("INTEGER"); + dataColumnType2.setDisplayName("Order No"); + dataColumnType2.setColType("INTEGER"); + + PowerMockito.when(Globals.getProcessFilterAddEdit()).thenReturn("= \'[argValue]\'"); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType2); + + + List<DataColumnType> listDataColumnType = new ArrayList<DataColumnType>(); + listDataColumnType.add(dataColumnType1); + listDataColumnType.add(dataColumnType2); + + ColFilterType colFilterType = new ColFilterType(); + + Mockito.when(reportDefinition.getAllColumns()).thenReturn(listDataColumnType); + Mockito.when(reportDefinition.getFilterById(Mockito.anyString(), Mockito.anyInt())).thenReturn(colFilterType); + + mockHttpAttribute("filterColId", "ORDER_NO"); + mockHttpAttribute("filterExpr", "ORDER_NO="); + mockHttpAttribute("argType", AppConstants.AT_VALUE); + mockHttpAttribute("argValue", "1001"); + + mockHttpAttribute("filterPos", "1"); + + mockHttpAttribute("rangeEndDateSQL", "Y"); + mockHttpAttribute("isGroupFormField", "Y"); + + mockHttpAttribute("newPredefinedValue", "Y"); + + mockHttpAttribute("filterJoin", "+"); + mockHttpAttribute("openBrackets", "("); + mockHttpAttribute("closeBrackets", ")"); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + + @Test + public void testProcessWizardStep_processFilterDelete_case1() throws Exception { + + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_DELETE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID, "ORDER_NO|1"); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_FILTERS, AppConstants.WA_DELETE); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processSortAddEdit_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WS_SORTING); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("sortAscDesc","Asc"); + setWizardSteps(AppConstants.WS_SORTING, AppConstants.WSS_ADD); + + DataColumnType dataColumnType = new DataColumnType(); + + dataColumnType.setTableId("reportaccess"); + dataColumnType.setDbColName("rep_id"); + dataColumnType.setColName("rep_id"); + dataColumnType.setDbColType("integer"); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType); + mockHttpAttribute("sortColId","1"); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processSortAddEdit_case2() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WS_SORTING); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("sortAscDesc","Asc"); + + setWizardSteps(AppConstants.WS_SORTING, AppConstants.WSS_EDIT); + + DataColumnType dataColumnType = new DataColumnType(); + + dataColumnType.setTableId("reportaccess"); + dataColumnType.setDbColName("rep_id"); + dataColumnType.setColName("rep_id"); + dataColumnType.setDbColType("integer"); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType); + mockHttpAttribute("sortColId","1"); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processSortOrderAll_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WS_SORTING); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_SORTING, AppConstants.WSS_ORDER_ALL); + + String[] colId =new String [0]; + String[] colOrder = {"1", "2", "3"}; + String[] sortAscDesc = {"Desc", "Desc", "Desc"}; + + mockHttpParameterValues("colId", colId); + mockHttpParameterValues("colOrder", colOrder); + mockHttpParameterValues("sortAscDesc", sortAscDesc); + + DataColumnType dataColumnType = new DataColumnType(); + + dataColumnType.setTableId("reportaccess"); + dataColumnType.setDbColName("rep_id"); + dataColumnType.setColName("rep_id"); + dataColumnType.setDbColType("integer"); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType); + mockHttpAttribute("sortColId","1"); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processSortOrderAll_case2() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WS_SORTING); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_SORTING, AppConstants.WSS_ORDER_ALL); + + String[] colId = {"REP_ID", "ORDER_NO", "ROLE_ID"}; + String[] sortOrder = {"1", "2", "0"}; + String[] sortAscDesc = {"Desc", "Asc", "Desc"}; + + mockHttpParameterValues("colId", colId); + mockHttpParameterValues("sortOrder", sortOrder); + mockHttpParameterValues("sortAscDesc", sortAscDesc); + + DataColumnType dataColumnType1 = new DataColumnType(); + + dataColumnType1.setTableId("reportaccess"); + dataColumnType1.setDbColName("REP_ID"); + dataColumnType1.setColName("REP_ID"); + dataColumnType1.setDbColType("INTEGER"); + dataColumnType1.setDisplayName("Report Id"); + dataColumnType1.setOrderByAscDesc("Desc"); + dataColumnType1.setOrderBySeq(1); + + DataColumnType dataColumnType2 = new DataColumnType(); + + dataColumnType2.setTableId("reportaccess"); + dataColumnType2.setDbColName("ORDER_NO"); + dataColumnType2.setColName("ORDER_NO"); + dataColumnType2.setDbColType("INTEGER"); + dataColumnType2.setDisplayName("Order No"); + dataColumnType2.setOrderByAscDesc("Desc"); + dataColumnType2.setOrderBySeq(1); + + DataColumnType dataColumnType3 = new DataColumnType(); + + dataColumnType3.setTableId("reportaccess"); + dataColumnType3.setDbColName("ROLE_ID"); + dataColumnType3.setColName("ROLE_ID"); + dataColumnType3.setDbColType("INTEGER"); + dataColumnType3.setDisplayName("Role Id"); + dataColumnType3.setOrderByAscDesc("Desc"); + dataColumnType3.setOrderBySeq(0); + + List<DataColumnType> listDataColumnType = new ArrayList<DataColumnType>(); + listDataColumnType.add(dataColumnType1); + listDataColumnType.add(dataColumnType2); + + Mockito.when(reportDefinition.getAllColumns()).thenReturn(listDataColumnType); + + Mockito.when(reportHandler.loadReportDefinition(httpServletRequest, "1001")).thenReturn(reportDefinition); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenAnswer(new Answer<DataColumnType>() { + @Override + public DataColumnType answer(InvocationOnMock invocation) throws Throwable { + Object[] args = invocation.getArguments(); + String inputString = (String) args[0]; + + if ("REP_ID".equals(inputString)) + return dataColumnType1; + + else if("ORDER_NO".equals(inputString)) + return dataColumnType2; + + else + return null; + + } + } ); + + mockHttpAttribute("sortColId","1"); + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processSortDelete_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_DELETE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_SORTING, AppConstants.WA_DELETE); + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processSortMoveUp_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_MOVE_UP); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_SORTING, AppConstants.WA_MOVE_UP); + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processSortMoveDown_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_MOVE_DOWN); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_SORTING, AppConstants.WA_MOVE_DOWN); + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processAddJavascriptElement_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WSS_ADD); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_JAVASCRIPT, AppConstants.WSS_ADD); + JavascriptItemType javascriptItemType = new JavascriptItemType(); + + Mockito.when(reportDefinition.addJavascriptType(Mockito.anyObject(), Mockito.anyString())).thenReturn(javascriptItemType); + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processSaveJavascriptElement_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_SAVE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_JAVASCRIPT, AppConstants.WA_SAVE); + + mockHttpAttribute(AppConstants.RI_JAVASCRIPT, "document.getElementById(\"REP_ID\");"); + mockHttpAttribute(AppConstants.RI_JAVASCRIPT_ITEM_ID, "1"); + mockHttpAttribute("javascriptFormField-1", "-1"); + + JavascriptItemType javascriptItemType = new JavascriptItemType(); + Mockito.when(reportDefinition.addJavascriptType(Mockito.anyObject(), Mockito.anyString())).thenReturn(javascriptItemType); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processSaveJavascriptElement_case2() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_SAVE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_JAVASCRIPT, AppConstants.WA_SAVE); + + mockHttpAttribute(AppConstants.RI_JAVASCRIPT, "document.getElementById(\"REP_ID\");"); + mockHttpAttribute(AppConstants.RI_JAVASCRIPT_ITEM_ID, "-1"); + + mockHttpAttribute("callText--1", "document.getElementById(\\\"REP_ID\\\");"); + mockHttpAttribute("javascriptFormField--1", "1"); + + JavascriptItemType javascriptItemType = new JavascriptItemType(); + Mockito.when(reportDefinition.addJavascriptType(Mockito.anyObject(), Mockito.anyString())).thenReturn(javascriptItemType); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processSaveJavascriptElement_case3() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_SAVE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + setWizardSteps(AppConstants.WS_JAVASCRIPT, AppConstants.WA_SAVE); + + mockHttpAttribute(AppConstants.RI_JAVASCRIPT, "document.getElementById(\"REP_ID\");"); + mockHttpAttribute(AppConstants.RI_JAVASCRIPT_ITEM_ID, "-1"); + mockHttpAttribute("callText--1", "document.getElementById(\\\"REP_ID\\\");"); + mockHttpAttribute("javascriptFormField--1", "os1"); + + JavascriptItemType javascriptItemType = new JavascriptItemType(); + Mockito.when(reportDefinition.addJavascriptType(Mockito.anyObject(), Mockito.anyString())).thenReturn(javascriptItemType); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processDeleteJavascriptElement_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_DELETE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + mockHttpAttribute(AppConstants.RI_JAVASCRIPT_ITEM_ID, "-1"); + + setWizardSteps(AppConstants.WS_JAVASCRIPT, AppConstants.WA_DELETE); + + Mockito.when(reportDefinition.deleteJavascriptType(Mockito.anyString())).thenReturn(false); + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.when(reportDefinition.deleteJavascriptType(Mockito.anyString())).thenReturn(true); + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(2)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processJavascript_case1() throws Exception { + + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_MOVE_UP); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + + mockHttpAttribute(AppConstants.RI_JAVASCRIPT_ITEM_ID, "-1"); + + setWizardSteps(AppConstants.WS_JAVASCRIPT, AppConstants.WA_SAVE); + + mockHttpAttribute(AppConstants.RI_JAVASCRIPT, "document.getElementById(\"REP_ID\");"); + mockHttpAttribute(AppConstants.RI_JAVASCRIPT_ITEM_ID, "1"); + mockHttpAttribute("javascriptFormField-1", "-1"); + JavascriptItemType javascriptItemType = new JavascriptItemType(); + Mockito.when(reportDefinition.addJavascriptType(Mockito.anyObject(), Mockito.anyString())).thenReturn(javascriptItemType); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + + } + + + @Test + public void testProcessWizardStep_processChart_MultiplePieChart_case1() throws Exception { + + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, "WIZ_ACTION"); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_CHART, AppConstants.WA_SAVE); + + mockHttpAttribute("chartType", AppConstants.GT_PIE_MULTIPLE); + mockHttpAttribute("chartTypeFixed", "N"); + mockHttpAttribute("legendCol", "MULTI COLUMN"); + mockHttpAttribute("leftAxisLabel", "USER"); + mockHttpAttribute("rightAxisLabel", "TIME"); + mockHttpAttribute("chartWidth", "500"); + mockHttpAttribute("chartHeight", "500"); + mockHttpAttribute("multiSeries", "N"); + mockHttpAttribute("lastSeriesALineChart", "N"); + mockHttpAttribute("lastSeriesABarChart", "N"); + mockHttpAttribute("animatedOption", "animate"); + + mockHttpAttribute("multiplePieOrder", "N"); + mockHttpAttribute("multiplePieLabelDisplay", "N"); + mockHttpAttribute("chartDisplay", "N"); + mockHttpAttribute("animatedOption", "N"); + mockHttpAttribute("multiplePieOrderInRunPage", "Y"); + mockHttpAttribute("multiplePieLabelDisplayInRunPage", "Y"); + mockHttpAttribute("chartDisplayInRunPage", "Y"); + + mockHttpAttribute("yAxisLowerLimit", "500"); + mockHttpAttribute("yAxisUpperLimit", "1200"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("legendPosition", "Top"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("maxLabelsInDomainAxis", "N"); + mockHttpAttribute("hideLegend", "labelAngle"); + mockHttpAttribute("showLegendDisplayOptionsInRunPage", "N"); + mockHttpAttribute("hideTooltips", "N"); + mockHttpAttribute("keepAsString", "N"); + + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("newChart1Axis", "1"); + mockHttpAttribute("valueCol1", ""); + mockHttpAttribute("valueCol1Color", "1"); + mockHttpAttribute("valueColAxis", "1"); + mockHttpAttribute("chartGroupAxis", "1"); + mockHttpAttribute("YAxisLabel", "1"); + + DataColumnType dataColumnType = new DataColumnType(); + ChartDrillOptions chartDrillOptions = new ChartDrillOptions(); + + List<ChartDrillFormfield> listChartDrillFormfield = chartDrillOptions.getTargetFormfield(); + ChartDrillFormfield chartDrillFormfield = new ChartDrillFormfield(); + chartDrillFormfield.setFormfield("REPORT_ID"); + listChartDrillFormfield.add(chartDrillFormfield); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType); + Mockito.when(reportDefinition.getChartDrillOptions()).thenReturn(chartDrillOptions); + + wizardProcessor.processWizardStep(httpServletRequest); + + + ChartAdditionalOptions chartAdditionalOptions = new ChartAdditionalOptions(); + Mockito.when(reportDefinition.getChartAdditionalOptions()).thenReturn(chartAdditionalOptions); + + mockHttpAttribute("leftAxisLabel", ""); + mockHttpAttribute("rightAxisLabel", ""); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(2)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processChart_MultiplePieChart_case2() throws Exception { + + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, "WIZ_ACTION"); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_CHART, AppConstants.WA_SAVE); + + mockHttpAttribute("chartType", AppConstants.GT_PIE_MULTIPLE); + mockHttpAttribute("chartTypeFixed", "N"); + mockHttpAttribute("legendCol", "REP_ID"); + mockHttpAttribute("leftAxisLabel", ""); + mockHttpAttribute("rightAxisLabel", ""); + mockHttpAttribute("chartWidth", "500"); + mockHttpAttribute("chartHeight", "500"); + mockHttpAttribute("multiSeries", "N"); + mockHttpAttribute("lastSeriesALineChart", "N"); + mockHttpAttribute("lastSeriesABarChart", "N"); + mockHttpAttribute("animatedOption", "animate"); + + mockHttpAttribute("multiplePieOrder", "N"); + mockHttpAttribute("multiplePieLabelDisplay", "N"); + mockHttpAttribute("chartDisplay", "N"); + mockHttpAttribute("animatedOption", "N"); + mockHttpAttribute("multiplePieOrderInRunPage", "Y"); + mockHttpAttribute("multiplePieLabelDisplayInRunPage", "Y"); + mockHttpAttribute("chartDisplayInRunPage", "Y"); + + mockHttpAttribute("yAxisLowerLimit", "500"); + mockHttpAttribute("yAxisUpperLimit", "1200"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("legendPosition", "Top"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("maxLabelsInDomainAxis", "N"); + mockHttpAttribute("hideLegend", "labelAngle"); + mockHttpAttribute("showLegendDisplayOptionsInRunPage", "N"); + mockHttpAttribute("hideTooltips", "N"); + mockHttpAttribute("keepAsString", "N"); + + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("newChart1Axis", "1"); + mockHttpAttribute("valueCol1", ""); + mockHttpAttribute("valueCol1Color", "1"); + mockHttpAttribute("valueColAxis", "1"); + mockHttpAttribute("chartGroupAxis", "1"); + mockHttpAttribute("YAxisLabel", "1"); + + DataColumnType dataColumnType = new DataColumnType(); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType); + + ChartAdditionalOptions chartAdditionalOptions = new ChartAdditionalOptions(); + Mockito.when(reportDefinition.getChartAdditionalOptions()).thenReturn(chartAdditionalOptions); + + ChartDrillOptions chartDrillOptions = new ChartDrillOptions(); + + List<ChartDrillFormfield> listChartDrillFormfield = chartDrillOptions.getTargetFormfield(); + ChartDrillFormfield chartDrillFormfield = new ChartDrillFormfield(); + chartDrillFormfield.setFormfield("REPORT_ID"); + listChartDrillFormfield.add(chartDrillFormfield); + + DataColumnType dataColumnType1 = new DataColumnType(); + + dataColumnType1.setTableId("reportaccess"); + dataColumnType1.setDbColName("REP_ID"); + dataColumnType1.setColName("REP_ID"); + dataColumnType1.setDbColType("INTEGER"); + dataColumnType1.setDisplayName("Report Id"); + dataColumnType1.setColId("REP_ID"); + dataColumnType1.setColOnChart(AppConstants.GT_COMPARE_PREVYEAR_CHART); + + DataColumnType dataColumnType2 = new DataColumnType(); + + dataColumnType2.setTableId("reportaccess"); + dataColumnType2.setDbColName("ORDER_NO"); + dataColumnType2.setColName("ORDER_NO"); + dataColumnType2.setDbColType("INTEGER"); + dataColumnType2.setDisplayName("Order No"); + dataColumnType2.setColId("ORDER_NO"); + + dataColumnType2.setColOnChart(AppConstants.GC_LEGEND); + + + List<DataColumnType> listDataColumnType = new ArrayList<DataColumnType>(); + listDataColumnType.add(dataColumnType1); + listDataColumnType.add(dataColumnType2); + + Mockito.when(reportDefinition.getAllColumns()).thenReturn(listDataColumnType); + Mockito.when(reportDefinition.getChartDrillOptions()).thenReturn(chartDrillOptions); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processChart_RegressionPlotChart_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, "WIZ_ACTION"); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_CHART, AppConstants.WA_SAVE); + + mockHttpAttribute("chartType", AppConstants.GT_REGRESSION); + mockHttpAttribute("chartTypeFixed", "N"); + mockHttpAttribute("legendCol", "REP_ID"); + mockHttpAttribute("leftAxisLabel", ""); + mockHttpAttribute("rightAxisLabel", ""); + mockHttpAttribute("chartWidth", "500"); + mockHttpAttribute("chartHeight", "500"); + mockHttpAttribute("multiSeries", "N"); + mockHttpAttribute("lastSeriesALineChart", "N"); + mockHttpAttribute("lastSeriesABarChart", "N"); + mockHttpAttribute("animatedOption", "animate"); + + mockHttpAttribute("multiplePieOrder", "N"); + mockHttpAttribute("multiplePieLabelDisplay", "N"); + mockHttpAttribute("chartDisplay", "N"); + mockHttpAttribute("animatedOption", "N"); + mockHttpAttribute("multiplePieOrderInRunPage", "Y"); + mockHttpAttribute("multiplePieLabelDisplayInRunPage", "Y"); + mockHttpAttribute("chartDisplayInRunPage", "Y"); + + mockHttpAttribute("yAxisLowerLimit", "500"); + mockHttpAttribute("yAxisUpperLimit", "1200"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("legendPosition", "Top"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("maxLabelsInDomainAxis", "N"); + mockHttpAttribute("hideLegend", "labelAngle"); + mockHttpAttribute("showLegendDisplayOptionsInRunPage", "N"); + mockHttpAttribute("hideTooltips", "N"); + mockHttpAttribute("keepAsString", "N"); + + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("newChart1Axis", "1"); + mockHttpAttribute("valueCol1", ""); + mockHttpAttribute("valueCol1Color", "1"); + mockHttpAttribute("valueColAxis", "1"); + mockHttpAttribute("chartGroupAxis", "1"); + mockHttpAttribute("YAxisLabel", "1"); + + mockHttpAttribute("regressionType", "Y"); + mockHttpAttribute("valueLinearRegressionColor", "Y"); + mockHttpAttribute("valueExponentialRegressionColor", "BLUE"); + mockHttpAttribute("regressionPointCustomization", "YELLOW"); + + mockHttpAttribute("chartSeries", "REP_ID"); + + DataColumnType dataColumnType = new DataColumnType(); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType); + + ChartAdditionalOptions chartAdditionalOptions = new ChartAdditionalOptions(); + Mockito.when(reportDefinition.getChartAdditionalOptions()).thenReturn(chartAdditionalOptions); + + ChartDrillOptions chartDrillOptions = new ChartDrillOptions(); + + List<ChartDrillFormfield> listChartDrillFormfield = chartDrillOptions.getTargetFormfield(); + ChartDrillFormfield chartDrillFormfield = new ChartDrillFormfield(); + chartDrillFormfield.setFormfield("REPORT_ID"); + listChartDrillFormfield.add(chartDrillFormfield); + + DataColumnType dataColumnType1 = new DataColumnType(); + + dataColumnType1.setTableId("reportaccess"); + dataColumnType1.setDbColName("REP_ID"); + dataColumnType1.setColName("REP_ID"); + dataColumnType1.setDbColType("INTEGER"); + dataColumnType1.setDisplayName("Report Id"); + dataColumnType1.setColId("REP_ID"); + dataColumnType1.setColOnChart(AppConstants.GT_COMPARE_PREVYEAR_CHART); + + DataColumnType dataColumnType2 = new DataColumnType(); + + dataColumnType2.setTableId("reportaccess"); + dataColumnType2.setDbColName("ORDER_NO"); + dataColumnType2.setColName("ORDER_NO"); + dataColumnType2.setDbColType("INTEGER"); + dataColumnType2.setDisplayName("Order No"); + dataColumnType2.setColId("ORDER_NO"); + + dataColumnType2.setColOnChart(AppConstants.GC_LEGEND); + + + List<DataColumnType> listDataColumnType = new ArrayList<DataColumnType>(); + listDataColumnType.add(dataColumnType1); + listDataColumnType.add(dataColumnType2); + + Mockito.when(reportDefinition.getAllColumns()).thenReturn(listDataColumnType); + + Mockito.when(reportDefinition.getChartDrillOptions()).thenReturn(chartDrillOptions); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + + } + + @Test + public void testProcessWizardStep_processChart_RegressionPlotChart_case2() throws Exception { + + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, "WIZ_ACTION"); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_CHART, AppConstants.WA_SAVE); + + mockHttpAttribute("chartType", AppConstants.GT_REGRESSION); + mockHttpAttribute("chartTypeFixed", "N"); + mockHttpAttribute("legendCol", "REP_ID"); + mockHttpAttribute("leftAxisLabel", ""); + mockHttpAttribute("rightAxisLabel", ""); + mockHttpAttribute("chartWidth", "500"); + mockHttpAttribute("chartHeight", "500"); + mockHttpAttribute("multiSeries", "N"); + mockHttpAttribute("lastSeriesALineChart", "N"); + mockHttpAttribute("lastSeriesABarChart", "N"); + mockHttpAttribute("animatedOption", "animate"); + + mockHttpAttribute("multiplePieOrder", "N"); + mockHttpAttribute("multiplePieLabelDisplay", "N"); + mockHttpAttribute("chartDisplay", "N"); + mockHttpAttribute("animatedOption", "N"); + mockHttpAttribute("multiplePieOrderInRunPage", "Y"); + mockHttpAttribute("multiplePieLabelDisplayInRunPage", "Y"); + mockHttpAttribute("chartDisplayInRunPage", "Y"); + + mockHttpAttribute("yAxisLowerLimit", "500"); + mockHttpAttribute("yAxisUpperLimit", "1200"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("legendPosition", "Top"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("maxLabelsInDomainAxis", "N"); + mockHttpAttribute("hideLegend", "labelAngle"); + mockHttpAttribute("showLegendDisplayOptionsInRunPage", "N"); + mockHttpAttribute("hideTooltips", "N"); + mockHttpAttribute("keepAsString", "N"); + + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("newChart1Axis", "1"); + mockHttpAttribute("valueCol1", ""); + mockHttpAttribute("valueCol1Color", "1"); + mockHttpAttribute("valueColAxis", "1"); + mockHttpAttribute("chartGroupAxis", "1"); + mockHttpAttribute("YAxisLabel", "1"); + + mockHttpAttribute("regressionType", ""); + mockHttpAttribute("valueLinearRegressionColor", "Y"); + mockHttpAttribute("valueExponentialRegressionColor", "BLUE"); + mockHttpAttribute("regressionPointCustomization", "YELLOW"); + + mockHttpAttribute("chartSeries", "REP_ID"); + + DataColumnType dataColumnType = new DataColumnType(); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType); + + ChartAdditionalOptions chartAdditionalOptions = new ChartAdditionalOptions(); + Mockito.when(reportDefinition.getChartAdditionalOptions()).thenReturn(chartAdditionalOptions); + + + ChartDrillOptions chartDrillOptions = new ChartDrillOptions(); + + List<ChartDrillFormfield> listChartDrillFormfield = chartDrillOptions.getTargetFormfield(); + ChartDrillFormfield chartDrillFormfield = new ChartDrillFormfield(); + chartDrillFormfield.setFormfield("REPORT_ID"); + listChartDrillFormfield.add(chartDrillFormfield); + + + DataColumnType dataColumnType1 = new DataColumnType(); + + dataColumnType1.setTableId("reportaccess"); + dataColumnType1.setDbColName("REP_ID"); + dataColumnType1.setColName("REP_ID"); + dataColumnType1.setDbColType("INTEGER"); + dataColumnType1.setDisplayName("Report Id"); + dataColumnType1.setColId("REP_ID"); + dataColumnType1.setColOnChart(AppConstants.GT_COMPARE_PREVYEAR_CHART); + + DataColumnType dataColumnType2 = new DataColumnType(); + + dataColumnType2.setTableId("reportaccess"); + dataColumnType2.setDbColName("ORDER_NO"); + dataColumnType2.setColName("ORDER_NO"); + dataColumnType2.setDbColType("INTEGER"); + dataColumnType2.setDisplayName("Order No"); + dataColumnType2.setColId("ORDER_NO"); + + dataColumnType2.setColOnChart(AppConstants.GC_LEGEND); + + + List<DataColumnType> listDataColumnType = new ArrayList<DataColumnType>(); + listDataColumnType.add(dataColumnType1); + listDataColumnType.add(dataColumnType2); + + Mockito.when(reportDefinition.getAllColumns()).thenReturn(listDataColumnType); + + Mockito.when(reportDefinition.getChartDrillOptions()).thenReturn(chartDrillOptions); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + + } + + @Test + public void testProcessWizardStep_processChart_BarChart3D_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, "WIZ_ACTION"); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_CHART, AppConstants.WA_SAVE); + + mockHttpAttribute("chartType", AppConstants.GT_BAR_3D); + mockHttpAttribute("chartTypeFixed", "N"); + mockHttpAttribute("legendCol", "REP_ID"); + mockHttpAttribute("leftAxisLabel", ""); + mockHttpAttribute("rightAxisLabel", ""); + mockHttpAttribute("chartWidth", "500"); + mockHttpAttribute("chartHeight", "500"); + mockHttpAttribute("multiSeries", "N"); + mockHttpAttribute("lastSeriesALineChart", "N"); + mockHttpAttribute("lastSeriesABarChart", "N"); + mockHttpAttribute("animatedOption", "animate"); + + mockHttpAttribute("chartGroup", "Group"); + mockHttpAttribute("drillDownReport", "DrillDown"); + mockHttpAttribute("yAxis", "Y"); + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("drillDownXAxisFormfield", "1"); + mockHttpAttribute("drillDownYAxisFormfield", "1"); + mockHttpAttribute("drillDownSeriesAxisFormfield", "1"); + + mockHttpAttribute("yAxisLowerLimit", "500"); + mockHttpAttribute("yAxisUpperLimit", "1200"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("legendPosition", "Top"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("maxLabelsInDomainAxis", "N"); + mockHttpAttribute("hideLegend", "labelAngle"); + mockHttpAttribute("showLegendDisplayOptionsInRunPage", "N"); + mockHttpAttribute("hideTooltips", "N"); + mockHttpAttribute("keepAsString", "N"); + + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("newChart1Axis", "1"); + mockHttpAttribute("valueCol1", ""); + mockHttpAttribute("valueCol1Color", "1"); + mockHttpAttribute("valueColAxis", "1"); + mockHttpAttribute("chartGroupAxis", "1"); + mockHttpAttribute("YAxisLabel", "1"); + + + mockHttpAttribute("chartOrientation", "1"); + mockHttpAttribute("secondaryChartRenderer", "1"); + mockHttpAttribute("chartDisplay", "1"); + mockHttpAttribute("chartOrientationInRunPage", "1"); + mockHttpAttribute("secondaryChartRendererInRunPage", "1"); + mockHttpAttribute("chartDisplayInRunPage", "1"); + + mockHttpAttribute("chartSeries", "REP_ID"); + + DataColumnType dataColumnType = new DataColumnType(); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType); + + ChartAdditionalOptions chartAdditionalOptions = new ChartAdditionalOptions(); + Mockito.when(reportDefinition.getChartAdditionalOptions()).thenReturn(chartAdditionalOptions); + + ChartDrillOptions chartDrillOptions = new ChartDrillOptions(); + + List<ChartDrillFormfield> listChartDrillFormfield = chartDrillOptions.getTargetFormfield(); + ChartDrillFormfield chartDrillFormfield = new ChartDrillFormfield(); + chartDrillFormfield.setFormfield("REPORT_ID"); + listChartDrillFormfield.add(chartDrillFormfield); + + DataColumnType dataColumnType1 = new DataColumnType(); + + dataColumnType1.setTableId("reportaccess"); + dataColumnType1.setDbColName("REP_ID"); + dataColumnType1.setColName("REP_ID"); + dataColumnType1.setDbColType("INTEGER"); + dataColumnType1.setDisplayName("Report Id"); + dataColumnType1.setColId("REP_ID"); + dataColumnType1.setColOnChart(AppConstants.GT_COMPARE_PREVYEAR_CHART); + + DataColumnType dataColumnType2 = new DataColumnType(); + + dataColumnType2.setTableId("reportaccess"); + dataColumnType2.setDbColName("ORDER_NO"); + dataColumnType2.setColName("ORDER_NO"); + dataColumnType2.setDbColType("INTEGER"); + dataColumnType2.setDisplayName("Order No"); + dataColumnType2.setColId("ORDER_NO"); + + dataColumnType2.setColOnChart(AppConstants.GC_LEGEND); + + List<DataColumnType> listDataColumnType = new ArrayList<DataColumnType>(); + listDataColumnType.add(dataColumnType1); + listDataColumnType.add(dataColumnType2); + + Mockito.when(reportDefinition.getAllColumns()).thenReturn(listDataColumnType); + + Mockito.when(reportDefinition.getChartDrillOptions()).thenReturn(chartDrillOptions); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processChart_BarChart3D_case2() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, "WIZ_ACTION"); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_CHART, AppConstants.WA_SAVE); + + mockHttpAttribute("chartType", AppConstants.GT_BAR_3D); + mockHttpAttribute("chartTypeFixed", "N"); + mockHttpAttribute("legendCol", "REP_ID"); + mockHttpAttribute("leftAxisLabel", ""); + mockHttpAttribute("rightAxisLabel", ""); + mockHttpAttribute("chartWidth", "500"); + mockHttpAttribute("chartHeight", "500"); + mockHttpAttribute("multiSeries", "N"); + mockHttpAttribute("lastSeriesALineChart", "N"); + mockHttpAttribute("lastSeriesABarChart", "N"); + mockHttpAttribute("animatedOption", "animate"); + + mockHttpAttribute("chartGroup", "Group"); + mockHttpAttribute("drillDownReport", "DrillDown"); + mockHttpAttribute("yAxis", "Y"); + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("drillDownXAxisFormfield", "-1"); + mockHttpAttribute("drillDownYAxisFormfield", "-1"); + mockHttpAttribute("drillDownSeriesAxisFormfield", "-1"); + + + mockHttpAttribute("yAxisLowerLimit", "500"); + mockHttpAttribute("yAxisUpperLimit", "1200"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("legendPosition", "Top"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("maxLabelsInDomainAxis", "N"); + mockHttpAttribute("hideLegend", "labelAngle"); + mockHttpAttribute("showLegendDisplayOptionsInRunPage", "N"); + mockHttpAttribute("hideTooltips", "N"); + mockHttpAttribute("keepAsString", "N"); + + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("newChart1Axis", "1"); + mockHttpAttribute("valueCol1", ""); + mockHttpAttribute("valueCol1Color", "1"); + mockHttpAttribute("valueColAxis", "1"); + mockHttpAttribute("chartGroupAxis", "1"); + mockHttpAttribute("YAxisLabel", "1"); + + mockHttpAttribute("chartOrientation", "1"); + mockHttpAttribute("secondaryChartRenderer", "1"); + mockHttpAttribute("chartDisplay", "1"); + mockHttpAttribute("chartOrientationInRunPage", "1"); + mockHttpAttribute("secondaryChartRendererInRunPage", "1"); + mockHttpAttribute("chartDisplayInRunPage", "1"); + + mockHttpAttribute("chartSeries", "REP_ID"); + + DataColumnType dataColumnType = new DataColumnType(); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType); + + ChartAdditionalOptions chartAdditionalOptions = new ChartAdditionalOptions(); + Mockito.when(reportDefinition.getChartAdditionalOptions()).thenReturn(chartAdditionalOptions); + + ChartDrillOptions chartDrillOptions = new ChartDrillOptions(); + + List<ChartDrillFormfield> listChartDrillFormfield = chartDrillOptions.getTargetFormfield(); + ChartDrillFormfield chartDrillFormfield = new ChartDrillFormfield(); + chartDrillFormfield.setFormfield("REPORT_ID"); + listChartDrillFormfield.add(chartDrillFormfield); + + + DataColumnType dataColumnType1 = new DataColumnType(); + + dataColumnType1.setTableId("reportaccess"); + dataColumnType1.setDbColName("REP_ID"); + dataColumnType1.setColName("REP_ID"); + dataColumnType1.setDbColType("INTEGER"); + dataColumnType1.setDisplayName("Report Id"); + dataColumnType1.setColId("REP_ID"); + dataColumnType1.setColOnChart(AppConstants.GT_COMPARE_PREVYEAR_CHART); + + DataColumnType dataColumnType2 = new DataColumnType(); + + dataColumnType2.setTableId("reportaccess"); + dataColumnType2.setDbColName("ORDER_NO"); + dataColumnType2.setColName("ORDER_NO"); + dataColumnType2.setDbColType("INTEGER"); + dataColumnType2.setDisplayName("Order No"); + dataColumnType2.setColId("ORDER_NO"); + + dataColumnType2.setColOnChart(AppConstants.GC_LEGEND); + + + List<DataColumnType> listDataColumnType = new ArrayList<DataColumnType>(); + listDataColumnType.add(dataColumnType1); + listDataColumnType.add(dataColumnType2); + + Mockito.when(reportDefinition.getAllColumns()).thenReturn(listDataColumnType); + + Mockito.when(reportDefinition.getChartDrillOptions()).thenReturn(chartDrillOptions); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processChart_LineChart_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, "WIZ_ACTION"); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_CHART, AppConstants.WA_SAVE); + + mockHttpAttribute("chartType", AppConstants.GT_LINE); + mockHttpAttribute("chartTypeFixed", "N"); + mockHttpAttribute("legendCol", "REP_ID"); + mockHttpAttribute("leftAxisLabel", ""); + mockHttpAttribute("rightAxisLabel", ""); + mockHttpAttribute("chartWidth", "500"); + mockHttpAttribute("chartHeight", "500"); + mockHttpAttribute("multiSeries", "N"); + mockHttpAttribute("lastSeriesALineChart", "N"); + mockHttpAttribute("lastSeriesABarChart", "N"); + mockHttpAttribute("animatedOption", "animate"); + + mockHttpAttribute("chartGroup", "Group"); + mockHttpAttribute("drillDownReport", "DrillDown"); + mockHttpAttribute("yAxis", "Y"); + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("drillDownXAxisFormfield", "-1"); + mockHttpAttribute("drillDownYAxisFormfield", "-1"); + mockHttpAttribute("drillDownSeriesAxisFormfield", "-1"); + + + mockHttpAttribute("yAxisLowerLimit", "500"); + mockHttpAttribute("yAxisUpperLimit", "1200"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("legendPosition", "Top"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("maxLabelsInDomainAxis", "N"); + mockHttpAttribute("hideLegend", "labelAngle"); + mockHttpAttribute("showLegendDisplayOptionsInRunPage", "N"); + mockHttpAttribute("hideTooltips", "N"); + mockHttpAttribute("keepAsString", "N"); + + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("newChart1Axis", "1"); + mockHttpAttribute("valueCol1", ""); + mockHttpAttribute("valueCol1Color", "1"); + mockHttpAttribute("valueColAxis", "1"); + mockHttpAttribute("chartGroupAxis", "1"); + mockHttpAttribute("YAxisLabel", "1"); + + mockHttpAttribute("chartOrientation", "1"); + mockHttpAttribute("secondaryChartRenderer", "1"); + mockHttpAttribute("chartDisplay", "1"); + mockHttpAttribute("chartOrientationInRunPage", "1"); + mockHttpAttribute("secondaryChartRendererInRunPage", "1"); + mockHttpAttribute("chartDisplayInRunPage", "1"); + + mockHttpAttribute("chartSeries", "REP_ID"); + + DataColumnType dataColumnType = new DataColumnType(); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType); + + ChartAdditionalOptions chartAdditionalOptions = new ChartAdditionalOptions(); + Mockito.when(reportDefinition.getChartAdditionalOptions()).thenReturn(chartAdditionalOptions); + + ChartDrillOptions chartDrillOptions = new ChartDrillOptions(); + + List<ChartDrillFormfield> listChartDrillFormfield = chartDrillOptions.getTargetFormfield(); + ChartDrillFormfield chartDrillFormfield = new ChartDrillFormfield(); + chartDrillFormfield.setFormfield("REPORT_ID"); + listChartDrillFormfield.add(chartDrillFormfield); + + DataColumnType dataColumnType1 = new DataColumnType(); + + dataColumnType1.setTableId("reportaccess"); + dataColumnType1.setDbColName("REP_ID"); + dataColumnType1.setColName("REP_ID"); + dataColumnType1.setDbColType("INTEGER"); + dataColumnType1.setDisplayName("Report Id"); + dataColumnType1.setColId("REP_ID"); + dataColumnType1.setColOnChart(AppConstants.GT_COMPARE_PREVYEAR_CHART); + + DataColumnType dataColumnType2 = new DataColumnType(); + + dataColumnType2.setTableId("reportaccess"); + dataColumnType2.setDbColName("ORDER_NO"); + dataColumnType2.setColName("ORDER_NO"); + dataColumnType2.setDbColType("INTEGER"); + dataColumnType2.setDisplayName("Order No"); + dataColumnType2.setColId("ORDER_NO"); + + dataColumnType2.setColOnChart(AppConstants.GC_LEGEND); + + List<DataColumnType> listDataColumnType = new ArrayList<DataColumnType>(); + listDataColumnType.add(dataColumnType1); + listDataColumnType.add(dataColumnType2); + + Mockito.when(reportDefinition.getAllColumns()).thenReturn(listDataColumnType); + Mockito.when(reportDefinition.getChartDrillOptions()).thenReturn(chartDrillOptions); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processChart_TimeDifferenceChart_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, "WIZ_ACTION"); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_CHART, AppConstants.WA_SAVE); + + mockHttpAttribute("chartType", AppConstants.GT_TIME_DIFFERENCE_CHART); + mockHttpAttribute("chartTypeFixed", "N"); + mockHttpAttribute("legendCol", "REP_ID"); + mockHttpAttribute("leftAxisLabel", ""); + mockHttpAttribute("rightAxisLabel", ""); + mockHttpAttribute("chartWidth", "500"); + mockHttpAttribute("chartHeight", "500"); + mockHttpAttribute("multiSeries", "N"); + mockHttpAttribute("lastSeriesALineChart", "N"); + mockHttpAttribute("lastSeriesABarChart", "N"); + mockHttpAttribute("animatedOption", "animate"); + + mockHttpAttribute("intervalFromDate", "Y"); + mockHttpAttribute("intervalToDate", "Y"); + mockHttpAttribute("intervalLabel", "Y"); + mockHttpAttribute("intervalInputInRunPage", "Y"); + + + mockHttpAttribute("chartGroup", "Group"); + mockHttpAttribute("drillDownReport", "DrillDown"); + mockHttpAttribute("yAxis", "Y"); + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("drillDownXAxisFormfield", "-1"); + mockHttpAttribute("drillDownYAxisFormfield", "-1"); + mockHttpAttribute("drillDownSeriesAxisFormfield", "-1"); + + + mockHttpAttribute("yAxisLowerLimit", "500"); + mockHttpAttribute("yAxisUpperLimit", "1200"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("legendPosition", "Top"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("maxLabelsInDomainAxis", "N"); + mockHttpAttribute("hideLegend", "labelAngle"); + mockHttpAttribute("showLegendDisplayOptionsInRunPage", "N"); + mockHttpAttribute("hideTooltips", "N"); + mockHttpAttribute("keepAsString", "N"); + + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("newChart1Axis", "1"); + mockHttpAttribute("valueCol1", ""); + mockHttpAttribute("valueCol1Color", "1"); + mockHttpAttribute("valueColAxis", "1"); + mockHttpAttribute("chartGroupAxis", "1"); + mockHttpAttribute("YAxisLabel", "1"); + + + mockHttpAttribute("chartOrientation", "1"); + mockHttpAttribute("secondaryChartRenderer", "1"); + mockHttpAttribute("chartDisplay", "1"); + mockHttpAttribute("chartOrientationInRunPage", "1"); + mockHttpAttribute("secondaryChartRendererInRunPage", "1"); + mockHttpAttribute("chartDisplayInRunPage", "1"); + + mockHttpAttribute("chartSeries", "REP_ID"); + + DataColumnType dataColumnType = new DataColumnType(); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType); + + ChartAdditionalOptions chartAdditionalOptions = new ChartAdditionalOptions(); + Mockito.when(reportDefinition.getChartAdditionalOptions()).thenReturn(chartAdditionalOptions); + + + ChartDrillOptions chartDrillOptions = new ChartDrillOptions(); + + List<ChartDrillFormfield> listChartDrillFormfield = chartDrillOptions.getTargetFormfield(); + ChartDrillFormfield chartDrillFormfield = new ChartDrillFormfield(); + chartDrillFormfield.setFormfield("REPORT_ID"); + listChartDrillFormfield.add(chartDrillFormfield); + + + DataColumnType dataColumnType1 = new DataColumnType(); + + dataColumnType1.setTableId("reportaccess"); + dataColumnType1.setDbColName("REP_ID"); + dataColumnType1.setColName("REP_ID"); + dataColumnType1.setDbColType("INTEGER"); + dataColumnType1.setDisplayName("Report Id"); + dataColumnType1.setColId("REP_ID"); + dataColumnType1.setColOnChart(AppConstants.GT_COMPARE_PREVYEAR_CHART); + + DataColumnType dataColumnType2 = new DataColumnType(); + + dataColumnType2.setTableId("reportaccess"); + dataColumnType2.setDbColName("ORDER_NO"); + dataColumnType2.setColName("ORDER_NO"); + dataColumnType2.setDbColType("INTEGER"); + dataColumnType2.setDisplayName("Order No"); + dataColumnType2.setColId("ORDER_NO"); + + dataColumnType2.setColOnChart(AppConstants.GC_LEGEND); + + List<DataColumnType> listDataColumnType = new ArrayList<DataColumnType>(); + listDataColumnType.add(dataColumnType1); + listDataColumnType.add(dataColumnType2); + + Mockito.when(reportDefinition.getAllColumns()).thenReturn(listDataColumnType); + + Mockito.when(reportDefinition.getChartDrillOptions()).thenReturn(chartDrillOptions); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processChart_VerticalStackedBarChart_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, "WIZ_ACTION"); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_CHART, AppConstants.WA_SAVE); + + mockHttpAttribute("chartType", AppConstants.GT_STACKED_VERT_BAR); + mockHttpAttribute("chartTypeFixed", "N"); + mockHttpAttribute("legendCol", "REP_ID"); + mockHttpAttribute("leftAxisLabel", ""); + mockHttpAttribute("rightAxisLabel", ""); + mockHttpAttribute("chartWidth", "500"); + mockHttpAttribute("chartHeight", "500"); + mockHttpAttribute("multiSeries", "N"); + mockHttpAttribute("lastSeriesALineChart", "N"); + mockHttpAttribute("lastSeriesABarChart", "N"); + mockHttpAttribute("animatedOption", "animate"); + + mockHttpAttribute("intervalFromDate", "Y"); + mockHttpAttribute("intervalToDate", "Y"); + mockHttpAttribute("intervalLabel", "Y"); + mockHttpAttribute("intervalInputInRunPage", "Y"); + + mockHttpAttribute("overlayItemValue", "Y"); + mockHttpAttribute("animatedOption", "animate"); + + mockHttpAttribute("chartGroup", "Group"); + mockHttpAttribute("drillDownReport", "DrillDown"); + mockHttpAttribute("yAxis", "Y"); + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("drillDownXAxisFormfield", "-1"); + mockHttpAttribute("drillDownYAxisFormfield", "-1"); + mockHttpAttribute("drillDownSeriesAxisFormfield", "-1"); + + mockHttpAttribute("yAxisLowerLimit", "500"); + mockHttpAttribute("yAxisUpperLimit", "1200"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("legendPosition", "Top"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("maxLabelsInDomainAxis", "N"); + mockHttpAttribute("hideLegend", "labelAngle"); + mockHttpAttribute("showLegendDisplayOptionsInRunPage", "N"); + mockHttpAttribute("hideTooltips", "N"); + mockHttpAttribute("keepAsString", "N"); + + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("newChart1Axis", "1"); + mockHttpAttribute("valueCol1", ""); + mockHttpAttribute("valueCol1Color", "1"); + mockHttpAttribute("valueColAxis", "1"); + mockHttpAttribute("chartGroupAxis", "1"); + mockHttpAttribute("YAxisLabel", "1"); + + + mockHttpAttribute("chartOrientation", "1"); + mockHttpAttribute("secondaryChartRenderer", "1"); + mockHttpAttribute("chartDisplay", "1"); + mockHttpAttribute("chartOrientationInRunPage", "1"); + mockHttpAttribute("secondaryChartRendererInRunPage", "1"); + mockHttpAttribute("chartDisplayInRunPage", "1"); + + mockHttpAttribute("chartSeries", "REP_ID"); + + DataColumnType dataColumnType = new DataColumnType(); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType); + + ChartAdditionalOptions chartAdditionalOptions = new ChartAdditionalOptions(); + Mockito.when(reportDefinition.getChartAdditionalOptions()).thenReturn(chartAdditionalOptions); + + + ChartDrillOptions chartDrillOptions = new ChartDrillOptions(); + + List<ChartDrillFormfield> listChartDrillFormfield = chartDrillOptions.getTargetFormfield(); + ChartDrillFormfield chartDrillFormfield = new ChartDrillFormfield(); + chartDrillFormfield.setFormfield("REPORT_ID"); + listChartDrillFormfield.add(chartDrillFormfield); + + DataColumnType dataColumnType1 = new DataColumnType(); + + dataColumnType1.setTableId("reportaccess"); + dataColumnType1.setDbColName("REP_ID"); + dataColumnType1.setColName("REP_ID"); + dataColumnType1.setDbColType("INTEGER"); + dataColumnType1.setDisplayName("Report Id"); + dataColumnType1.setColId("REP_ID"); + dataColumnType1.setColOnChart(AppConstants.GT_COMPARE_PREVYEAR_CHART); + + DataColumnType dataColumnType2 = new DataColumnType(); + + dataColumnType2.setTableId("reportaccess"); + dataColumnType2.setDbColName("ORDER_NO"); + dataColumnType2.setColName("ORDER_NO"); + dataColumnType2.setDbColType("INTEGER"); + dataColumnType2.setDisplayName("Order No"); + dataColumnType2.setColId("ORDER_NO"); + + dataColumnType2.setColOnChart(AppConstants.GC_LEGEND); + + List<DataColumnType> listDataColumnType = new ArrayList<DataColumnType>(); + listDataColumnType.add(dataColumnType1); + listDataColumnType.add(dataColumnType2); + + Mockito.when(reportDefinition.getAllColumns()).thenReturn(listDataColumnType); + + Mockito.when(reportDefinition.getChartDrillOptions()).thenReturn(chartDrillOptions); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processChart_HorizontalStackedBarChart_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, "WIZ_ACTION"); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_CHART, AppConstants.WA_SAVE); + + mockHttpAttribute("chartType", AppConstants.GT_STACKED_HORIZ_BAR); + mockHttpAttribute("chartTypeFixed", "N"); + mockHttpAttribute("legendCol", "REP_ID"); + mockHttpAttribute("leftAxisLabel", ""); + mockHttpAttribute("rightAxisLabel", ""); + mockHttpAttribute("chartWidth", "500"); + mockHttpAttribute("chartHeight", "500"); + mockHttpAttribute("multiSeries", "N"); + mockHttpAttribute("lastSeriesALineChart", "N"); + mockHttpAttribute("lastSeriesABarChart", "N"); + mockHttpAttribute("animatedOption", "animate"); + + mockHttpAttribute("intervalFromDate", "Y"); + mockHttpAttribute("intervalToDate", "Y"); + mockHttpAttribute("intervalLabel", "Y"); + mockHttpAttribute("intervalInputInRunPage", "Y"); + + mockHttpAttribute("overlayItemValue", "Y"); + mockHttpAttribute("animatedOption", "animate"); + + mockHttpAttribute("chartGroup", "Group"); + mockHttpAttribute("drillDownReport", "DrillDown"); + mockHttpAttribute("yAxis", "Y"); + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("drillDownXAxisFormfield", "-1"); + mockHttpAttribute("drillDownYAxisFormfield", "-1"); + mockHttpAttribute("drillDownSeriesAxisFormfield", "-1"); + + mockHttpAttribute("yAxisLowerLimit", "500"); + mockHttpAttribute("yAxisUpperLimit", "1200"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("legendPosition", "Top"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("maxLabelsInDomainAxis", "N"); + mockHttpAttribute("hideLegend", "labelAngle"); + mockHttpAttribute("showLegendDisplayOptionsInRunPage", "N"); + mockHttpAttribute("hideTooltips", "N"); + mockHttpAttribute("keepAsString", "N"); + + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("newChart1Axis", "1"); + mockHttpAttribute("valueCol1", ""); + mockHttpAttribute("valueCol1Color", "1"); + mockHttpAttribute("valueColAxis", "1"); + mockHttpAttribute("chartGroupAxis", "1"); + mockHttpAttribute("YAxisLabel", "1"); + + mockHttpAttribute("chartOrientation", "1"); + mockHttpAttribute("secondaryChartRenderer", "1"); + mockHttpAttribute("chartDisplay", "1"); + mockHttpAttribute("chartOrientationInRunPage", "1"); + mockHttpAttribute("secondaryChartRendererInRunPage", "1"); + mockHttpAttribute("chartDisplayInRunPage", "1"); + + mockHttpAttribute("chartSeries", "REP_ID"); + + DataColumnType dataColumnType = new DataColumnType(); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType); + + ChartAdditionalOptions chartAdditionalOptions = new ChartAdditionalOptions(); + Mockito.when(reportDefinition.getChartAdditionalOptions()).thenReturn(chartAdditionalOptions); + + ChartDrillOptions chartDrillOptions = new ChartDrillOptions(); + + List<ChartDrillFormfield> listChartDrillFormfield = chartDrillOptions.getTargetFormfield(); + ChartDrillFormfield chartDrillFormfield = new ChartDrillFormfield(); + chartDrillFormfield.setFormfield("REPORT_ID"); + listChartDrillFormfield.add(chartDrillFormfield); + + + DataColumnType dataColumnType1 = new DataColumnType(); + + dataColumnType1.setTableId("reportaccess"); + dataColumnType1.setDbColName("REP_ID"); + dataColumnType1.setColName("REP_ID"); + dataColumnType1.setDbColType("INTEGER"); + dataColumnType1.setDisplayName("Report Id"); + dataColumnType1.setColId("REP_ID"); + dataColumnType1.setColOnChart(AppConstants.GT_COMPARE_PREVYEAR_CHART); + + DataColumnType dataColumnType2 = new DataColumnType(); + + dataColumnType2.setTableId("reportaccess"); + dataColumnType2.setDbColName("ORDER_NO"); + dataColumnType2.setColName("ORDER_NO"); + dataColumnType2.setDbColType("INTEGER"); + dataColumnType2.setDisplayName("Order No"); + dataColumnType2.setColId("ORDER_NO"); + + dataColumnType2.setColOnChart(AppConstants.GC_LEGEND); + + List<DataColumnType> listDataColumnType = new ArrayList<DataColumnType>(); + listDataColumnType.add(dataColumnType1); + listDataColumnType.add(dataColumnType2); + + Mockito.when(reportDefinition.getAllColumns()).thenReturn(listDataColumnType); + Mockito.when(reportDefinition.getChartDrillOptions()).thenReturn(chartDrillOptions); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processChart_VerticalStackedBarLinesChart_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_ADD_USER); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_CHART, AppConstants.WA_SAVE); + + mockHttpAttribute("chartType", AppConstants.GT_STACKED_VERT_BAR_LINES); + mockHttpAttribute("chartTypeFixed", "N"); + mockHttpAttribute("legendCol", "REP_ID"); + mockHttpAttribute("leftAxisLabel", ""); + mockHttpAttribute("rightAxisLabel", ""); + mockHttpAttribute("chartWidth", "500"); + mockHttpAttribute("chartHeight", "500"); + mockHttpAttribute("multiSeries", "N"); + mockHttpAttribute("lastSeriesALineChart", "N"); + mockHttpAttribute("lastSeriesABarChart", "N"); + mockHttpAttribute("animatedOption", "animate"); + + mockHttpAttribute("intervalFromDate", "Y"); + mockHttpAttribute("intervalToDate", "Y"); + mockHttpAttribute("intervalLabel", "Y"); + mockHttpAttribute("intervalInputInRunPage", "Y"); + + mockHttpAttribute("overlayItemValue", "Y"); + mockHttpAttribute("animatedOption", "animate"); + + mockHttpAttribute("chartGroup", "Group"); + mockHttpAttribute("drillDownReport", "DrillDown"); + mockHttpAttribute("yAxis", "Y"); + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("drillDownXAxisFormfield", "-1"); + mockHttpAttribute("drillDownYAxisFormfield", "-1"); + mockHttpAttribute("drillDownSeriesAxisFormfield", "-1"); + + mockHttpAttribute("yAxisLowerLimit", "500"); + mockHttpAttribute("yAxisUpperLimit", "1200"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("legendPosition", "Top"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("maxLabelsInDomainAxis", "N"); + mockHttpAttribute("hideLegend", "labelAngle"); + mockHttpAttribute("showLegendDisplayOptionsInRunPage", "N"); + mockHttpAttribute("hideTooltips", "N"); + mockHttpAttribute("keepAsString", "N"); + + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("newChart1Axis", "1"); + mockHttpAttribute("valueCol1", ""); + mockHttpAttribute("valueCol1Color", "1"); + mockHttpAttribute("valueColAxis", "1"); + mockHttpAttribute("chartGroupAxis", "1"); + mockHttpAttribute("YAxisLabel", "1"); + + + mockHttpAttribute("chartOrientation", "1"); + mockHttpAttribute("secondaryChartRenderer", "1"); + mockHttpAttribute("chartDisplay", "1"); + mockHttpAttribute("chartOrientationInRunPage", "1"); + mockHttpAttribute("secondaryChartRendererInRunPage", "1"); + mockHttpAttribute("chartDisplayInRunPage", "1"); + + mockHttpAttribute("chartSeries", "REP_ID"); + + mockHttpAttribute("valueColNew", "REP_ID"); + mockHttpAttribute("valueColNewColor", "YELLOW"); + mockHttpAttribute("valueColNewAxis", "Y"); + + ChartAdditionalOptions chartAdditionalOptions = new ChartAdditionalOptions(); + Mockito.when(reportDefinition.getChartAdditionalOptions()).thenReturn(chartAdditionalOptions); + + ChartDrillOptions chartDrillOptions = new ChartDrillOptions(); + + List<ChartDrillFormfield> listChartDrillFormfield = chartDrillOptions.getTargetFormfield(); + ChartDrillFormfield chartDrillFormfield = new ChartDrillFormfield(); + chartDrillFormfield.setFormfield("REPORT_ID"); + listChartDrillFormfield.add(chartDrillFormfield); + + + DataColumnType dataColumnType1 = new DataColumnType(); + + dataColumnType1.setTableId("reportaccess"); + dataColumnType1.setDbColName("REP_ID"); + dataColumnType1.setColName("REP_ID"); + dataColumnType1.setDbColType("INTEGER"); + dataColumnType1.setDisplayName("Report Id"); + dataColumnType1.setColId("REP_ID"); + dataColumnType1.setColOnChart(AppConstants.GT_COMPARE_PREVYEAR_CHART); + + DataColumnType dataColumnType2 = new DataColumnType(); + + dataColumnType2.setTableId("reportaccess"); + dataColumnType2.setDbColName("ORDER_NO"); + dataColumnType2.setColName("ORDER_NO"); + dataColumnType2.setDbColType("INTEGER"); + dataColumnType2.setDisplayName("Order No"); + dataColumnType2.setColId("ORDER_NO"); + + dataColumnType2.setColOnChart(AppConstants.GC_LEGEND); + + List<DataColumnType> listDataColumnType = new ArrayList<DataColumnType>(); + listDataColumnType.add(dataColumnType1); + listDataColumnType.add(dataColumnType2); + + Mockito.when(reportDefinition.getAllColumns()).thenReturn(listDataColumnType); + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType1); + Mockito.when(reportDefinition.getChartDrillOptions()).thenReturn(chartDrillOptions); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_processChart_HorizontalStackedBarLinesChart_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_ADD_USER); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_CHART, AppConstants.WA_SAVE); + + mockHttpAttribute("chartType", AppConstants.GT_STACKED_HORIZ_BAR_LINES); + mockHttpAttribute("chartTypeFixed", "N"); + mockHttpAttribute("legendCol", "REP_ID"); + mockHttpAttribute("leftAxisLabel", ""); + mockHttpAttribute("rightAxisLabel", ""); + mockHttpAttribute("chartWidth", "500"); + mockHttpAttribute("chartHeight", "500"); + mockHttpAttribute("multiSeries", "N"); + mockHttpAttribute("lastSeriesALineChart", "N"); + mockHttpAttribute("lastSeriesABarChart", "N"); + mockHttpAttribute("animatedOption", "animate"); + + mockHttpAttribute("intervalFromDate", "Y"); + mockHttpAttribute("intervalToDate", "Y"); + mockHttpAttribute("intervalLabel", "Y"); + mockHttpAttribute("intervalInputInRunPage", "Y"); + + mockHttpAttribute("overlayItemValue", "Y"); + mockHttpAttribute("animatedOption", "animate"); + + mockHttpAttribute("chartGroup", "Group"); + mockHttpAttribute("drillDownReport", "DrillDown"); + mockHttpAttribute("yAxis", "Y"); + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("drillDownXAxisFormfield", "-1"); + mockHttpAttribute("drillDownYAxisFormfield", "-1"); + mockHttpAttribute("drillDownSeriesAxisFormfield", "-1"); + + mockHttpAttribute("yAxisLowerLimit", "500"); + mockHttpAttribute("yAxisUpperLimit", "1200"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("legendPosition", "Top"); + mockHttpAttribute("labelAngle", "N"); + mockHttpAttribute("maxLabelsInDomainAxis", "N"); + mockHttpAttribute("hideLegend", "labelAngle"); + mockHttpAttribute("showLegendDisplayOptionsInRunPage", "N"); + mockHttpAttribute("hideTooltips", "N"); + mockHttpAttribute("keepAsString", "N"); + + mockHttpAttribute("drillDownReport", "-1"); + + mockHttpAttribute("newChart1Axis", "1"); + mockHttpAttribute("valueCol1", ""); + mockHttpAttribute("valueCol1Color", "1"); + mockHttpAttribute("valueColAxis", "1"); + mockHttpAttribute("chartGroupAxis", "1"); + mockHttpAttribute("YAxisLabel", "1"); + + mockHttpAttribute("chartOrientation", "1"); + mockHttpAttribute("secondaryChartRenderer", "1"); + mockHttpAttribute("chartDisplay", "1"); + mockHttpAttribute("chartOrientationInRunPage", "1"); + mockHttpAttribute("secondaryChartRendererInRunPage", "1"); + mockHttpAttribute("chartDisplayInRunPage", "1"); + + mockHttpAttribute("chartSeries", "REP_ID"); + + mockHttpAttribute("valueColNew", ""); + mockHttpAttribute("valueColNewColor", "YELLOW"); + mockHttpAttribute("valueColNewAxis", "Y"); + + DataColumnType dataColumnType = new DataColumnType(); + + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType); + + ChartAdditionalOptions chartAdditionalOptions = new ChartAdditionalOptions(); + Mockito.when(reportDefinition.getChartAdditionalOptions()).thenReturn(chartAdditionalOptions); + + ChartDrillOptions chartDrillOptions = new ChartDrillOptions(); + + List<ChartDrillFormfield> listChartDrillFormfield = chartDrillOptions.getTargetFormfield(); + ChartDrillFormfield chartDrillFormfield = new ChartDrillFormfield(); + chartDrillFormfield.setFormfield("REPORT_ID"); + listChartDrillFormfield.add(chartDrillFormfield); + + DataColumnType dataColumnType1 = new DataColumnType(); + + dataColumnType1.setTableId("reportaccess"); + dataColumnType1.setDbColName("REP_ID"); + dataColumnType1.setColName("REP_ID"); + dataColumnType1.setDbColType("INTEGER"); + dataColumnType1.setDisplayName("Report Id"); + dataColumnType1.setColId("REP_ID"); + dataColumnType1.setColOnChart(AppConstants.GT_COMPARE_PREVYEAR_CHART); + + DataColumnType dataColumnType2 = new DataColumnType(); + + dataColumnType2.setTableId("reportaccess"); + dataColumnType2.setDbColName("ORDER_NO"); + dataColumnType2.setColName("ORDER_NO"); + dataColumnType2.setDbColType("INTEGER"); + dataColumnType2.setDisplayName("Order No"); + dataColumnType2.setColId("ORDER_NO"); + + dataColumnType2.setColOnChart(AppConstants.GC_LEGEND); + + List<DataColumnType> listDataColumnType = new ArrayList<DataColumnType>(); + listDataColumnType.add(dataColumnType1); + listDataColumnType.add(dataColumnType2); + + Mockito.when(reportDefinition.getAllColumns()).thenReturn(listDataColumnType); + Mockito.when(reportDefinition.getColumnById(Mockito.anyString())).thenReturn(dataColumnType1); + Mockito.when(reportDefinition.getChartDrillOptions()).thenReturn(chartDrillOptions); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_Schedule_Add_User_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_ADD_USER); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_SCHEDULE, AppConstants.WA_SAVE); + + mockHttpAttribute(AppConstants.RI_DETAIL_ID, "2001"); + mockHttpAttribute("pdfAttachmentKey", "PdfKey"); + mockHttpAttribute("log_id", "Log#1234"); + mockHttpAttribute("user_id", "demo"); + + mockHttpAttribute("schedEnabled", "N"); + mockHttpAttribute("schedStartDate", "03/12/2018"); + mockHttpAttribute("schedEndDate", "03/12/2999"); + mockHttpAttribute("schedEndHour", "9"); + mockHttpAttribute("schedMin", "30"); + mockHttpAttribute("schedEndMin", "10"); + mockHttpAttribute("schedEndAMPM", "AM"); + mockHttpAttribute("schedRunDate", "N"); + mockHttpAttribute("schedHour", "10"); + mockHttpAttribute("schedAMPM", "AM"); + + mockHttpAttribute("schedRecurrence", "Y"); + mockHttpAttribute("conditional", "Y"); + mockHttpAttribute("encryptMode" , "Y"); + mockHttpAttribute("conditionSQL", "REPORT_ID=1001"); + mockHttpAttribute("notify_type", "QUEUE"); + mockHttpAttribute("downloadLimit", "1024mb"); + mockHttpAttribute("formFields", "REPORT_ID"); + mockHttpAttribute("sendAttachment", "Y"); + mockHttpAttribute("schedEmailAdd", "Y"); + mockHttpAttribute("schedEmailAddRole", "Y"); + + PowerMockito.when(Globals.getUseLoginIdInSchedYN()).thenReturn("Y"); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_Schedule_Delete_User_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_DELETE_USER); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_SCHEDULE, AppConstants.WA_SAVE); + + mockHttpAttribute("pdfAttachmentKey", "PdfKey"); + mockHttpAttribute("log_id", "Log#1234"); + mockHttpAttribute("user_id", "demo"); + + mockHttpAttribute("schedEnabled", "N"); + mockHttpAttribute("schedStartDate", "03/12/2018"); + mockHttpAttribute("schedEndDate", "03/12/2999"); + mockHttpAttribute("schedEndHour", "9"); + mockHttpAttribute("schedMin", "30"); + mockHttpAttribute("schedEndMin", "10"); + mockHttpAttribute("schedEndAMPM", "AM"); + mockHttpAttribute("schedRunDate", "N"); + mockHttpAttribute("schedHour", "10"); + mockHttpAttribute("schedAMPM", "AM"); + + mockHttpAttribute("schedRecurrence", "Y"); + mockHttpAttribute("conditional", "Y"); + mockHttpAttribute("encryptMode" , "Y"); + + mockHttpAttribute("conditionSQL", "REPORT_ID=1001"); + mockHttpAttribute("notify_type", "QUEUE"); + mockHttpAttribute("downloadLimit", "1024mb"); + mockHttpAttribute("formFields", "REPORT_ID"); + + mockHttpAttribute("sendAttachment", "Y"); + mockHttpAttribute("schedEmailAdd", "Y"); + mockHttpAttribute("schedEmailAddRole", "Y"); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + + @Test + public void testProcessWizardStep_Schedule_Add_Role_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_ADD_ROLE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_SCHEDULE, AppConstants.WA_SAVE); + + mockHttpAttribute("pdfAttachmentKey", "PdfKey"); + mockHttpAttribute("log_id", "Log#1234"); + mockHttpAttribute("user_id", "demo"); + + mockHttpAttribute("schedEnabled", "N"); + mockHttpAttribute("schedStartDate", "03/12/2018"); + mockHttpAttribute("schedEndDate", "03/12/2999"); + mockHttpAttribute("schedEndHour", "9"); + mockHttpAttribute("schedMin", "30"); + mockHttpAttribute("schedEndMin", "10"); + mockHttpAttribute("schedEndAMPM", "AM"); + mockHttpAttribute("schedRunDate", "N"); + mockHttpAttribute("schedHour", "10"); + mockHttpAttribute("schedAMPM", "AM"); + mockHttpAttribute("schedRecurrence", "Y"); + mockHttpAttribute("conditional", "Y"); + mockHttpAttribute("encryptMode" , "Y"); + mockHttpAttribute("conditionSQL", "REPORT_ID=1001"); + mockHttpAttribute("notify_type", "QUEUE"); + mockHttpAttribute("downloadLimit", "1024mb"); + mockHttpAttribute("formFields", "REPORT_ID"); + mockHttpAttribute("sendAttachment", "Y"); + mockHttpAttribute("schedEmailAdd", "Y"); + mockHttpAttribute("schedEmailAddRole", "Y"); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_Schedule_Delete_Role_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_DELETE_ROLE); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_SCHEDULE, AppConstants.WA_SAVE); + + mockHttpAttribute(AppConstants.RI_DETAIL_ID, "2001"); + mockHttpAttribute("pdfAttachmentKey", "PdfKey"); + mockHttpAttribute("log_id", "Log#1234"); + mockHttpAttribute("user_id", "demo"); + + mockHttpAttribute("schedEnabled", "N"); + mockHttpAttribute("schedStartDate", "03/12/2018"); + mockHttpAttribute("schedEndDate", "03/12/2999"); + mockHttpAttribute("schedEndHour", "9"); + mockHttpAttribute("schedMin", "30"); + mockHttpAttribute("schedEndMin", "10"); + mockHttpAttribute("schedEndAMPM", "AM"); + mockHttpAttribute("schedRunDate", "N"); + mockHttpAttribute("schedHour", "10"); + mockHttpAttribute("schedAMPM", "AM"); + + mockHttpAttribute("schedRecurrence", "Y"); + + mockHttpAttribute("conditional", "Y"); + + mockHttpAttribute("encryptMode" , "Y"); + + mockHttpAttribute("conditionSQL", "REPORT_ID=1001"); + mockHttpAttribute("notify_type", "QUEUE"); + mockHttpAttribute("downloadLimit", "1024mb"); + mockHttpAttribute("formFields", "REPORT_ID"); + + mockHttpAttribute("sendAttachment", "Y"); + + mockHttpAttribute("schedEmailAdd", "Y"); + mockHttpAttribute("schedEmailAddRole", "Y"); + + wizardProcessor.processWizardStep(httpServletRequest); + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processUserAccess_Add_User_case1() throws Exception { + + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_ADD_USER); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_USER_ACCESS, AppConstants.WA_SAVE); + + mockHttpAttribute("reportOwner", "Owner"); + mockHttpAttribute("public", "Y"); + mockHttpAttribute("newUserId", "Y"); + + Mockito.when(reportDefinition.getReportSecurity()).thenReturn(reportSecurity); + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessWizardStep_processUserAccess_Delete_User_case1() throws Exception { + mockHttpParameter(AppConstants.RI_WIZARD_ACTION, AppConstants.WA_DELETE_USER); + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + mockHttpAttribute("showDashboardOptions",""); + mockHttpAttribute(AppConstants.RI_DETAIL_ID,DETAIL_ID); + mockHttpAttribute("blueBarField", "REPORT ID"); + + setWizardSteps(AppConstants.WS_USER_ACCESS, AppConstants.WA_SAVE); + + mockHttpAttribute("reportOwner", "Owner"); + mockHttpAttribute("public", "Y"); + mockHttpAttribute("newUserId", "Y"); + + Mockito.when(reportDefinition.getReportSecurity()).thenReturn(reportSecurity); + + wizardProcessor.processWizardStep(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processWizardStep(httpServletRequest); + } + + @Test + public void testProcessImportSemaphore_case1() throws Exception { + mockHttpAttribute(AppConstants.RI_REPORT_ID,REPORT_ID); + Mockito.when(reportRuntime.getSemaphoreList()).thenReturn(null); + wizardProcessor.processImportSemaphorePopup(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processImportSemaphorePopup(httpServletRequest); + } + + @Test + public void testProcessImportSemaphore_case2() throws Exception { + SemaphoreList semaphoreList = new SemaphoreList(); + List<SemaphoreType> listSemaphoreType = semaphoreList.getSemaphore(); + + SemaphoreType st1 = new SemaphoreType(); + SemaphoreType st2 = new SemaphoreType(); + + st1.setSemaphoreName("Name1"); + st1.setSemaphoreId("Id1"); + + st2.setSemaphoreName("Name2"); + st2.setSemaphoreId("Id2"); + + listSemaphoreType.add(st1); + listSemaphoreType.add(st2); + + mockHttpAttribute(AppConstants.RI_REPORT_ID, REPORT_ID); + + Mockito.when(reportRuntime.getSemaphoreList()).thenReturn(semaphoreList); + + Mockito.when(reportDefinition.addSemaphore(Mockito.anyObject(), Mockito.anyObject())).thenReturn(st1); + + wizardProcessor.processImportSemaphorePopup(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processImportSemaphorePopup(httpServletRequest); + } + + /* + + @Test + public void testProcessSemaphorePopup_case1() throws Exception { + SemaphoreList semaphoreList = new SemaphoreList(); + List<SemaphoreType> listSemaphoreType = semaphoreList.getSemaphore(); + + SemaphoreType st1 = new SemaphoreType(); + SemaphoreType st2 = new SemaphoreType(); + + st1.setSemaphoreName("Name1"); + st1.setSemaphoreId("Id1"); + + st2.setSemaphoreName("Name2"); + st2.setSemaphoreId("Id2"); + + listSemaphoreType.add(st1); + listSemaphoreType.add(st2); + + mockHttpAttribute(AppConstants.RI_REPORT_ID, REPORT_ID); + + Mockito.when(reportRuntime.getSemaphoreList()).thenReturn(semaphoreList); + + Mockito.when(reportDefinition.addSemaphore(Mockito.anyObject(), Mockito.anyObject())).thenReturn(st1); + + wizardProcessor.processSemaphorePopup(httpServletRequest); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processImportSemaphorePopup(httpServletRequest); + } + +*/ + + /* + + private void mockHttpAttribute(String attributeName, String attributeValue) { + mockHttpAttribute(attributeName)).thenReturn(attributeValue); + } + + private void mockHttpParameterValues(String parameterName, String[] parameterValue) { + Mockito.when(httpServletRequest.getParameterValues(parameterName)).thenReturn(parameterValue); + }*/ + + + /* + @Test + public void testProcessWizardStep_processTableAdd_case1() throws Exception { + //ReportSecurity reportSecurity = new ReportSecurity("10001"); + + String reportUserAccessSql= Globals.getReportUserAccess(); + reportUserAccessSql = reportUserAccessSql.replace("[reportID]", "1001"); + + PowerMockito.when(DbUtils.executeQuery(reportUserAccessSql)).thenReturn(dataSet1); + + String dataMock[][] = { {"Role1", "User1"},{"Role2", "User2"},{"Role3", "User3"} }; + + + Mockito.when (dataSet1.getRowCount()).thenReturn(3); + + PowerMockito.when(dataSet1.getString(Mockito.anyInt(), Mockito.anyInt())).thenAnswer(new Answer<String>() { + + @Override + public String answer(InvocationOnMock invocation) throws Throwable { + Object[] args = invocation.getArguments(); + int row = (int) args[0]; + int col = (int) args[1]; + + if (col < 2) + return dataMock[row][col]; + else + return "Y"; + } + }); + + String newScheduleSql = Globals.getNewScheduleData(); + PowerMockito.when(DbUtils.executeQuery(newScheduleSql)).thenReturn(dataSet2); + + Mockito.when(dataSet2.getString(0,0)).thenReturn("4001"); + + + CustomReportType customReportType = new CustomReportType(); + + customReportType.setReportName("ONAP Portal users"); + customReportType.setReportDescr("Report for ONAP Portal users"); + customReportType.setChartType("Bar Chart"); + customReportType.setCreateId("2001"); + customReportType.setReportType("User Type"); + + GregorianCalendar gregorianCalendar = new GregorianCalendar(); + gregorianCalendar.setTime(Calendar.getInstance().getTime()); + + customReportType.setCreateDate(DatatypeFactory.newInstance().newXMLGregorianCalendar(gregorianCalendar)); + + ReportWrapper rw = new ReportWrapper(customReportType,"1001", "ONAP PORTAL", "2001", "", "", "", "", false); + + //ReportWrapper(CustomReportType cr, String reportID, String ownerID, String createID, String createDate, String updateID, String updateDate, String menuID, boolean menuApproved) + + ReportDefinition localReportDefinition = new ReportDefinition(rw, httpServletRequest); + + Mockito.when(httpServletRequest.getParameter(AppConstants.RI_WIZARD_ACTION)).thenReturn(AppConstants.WA_VALIDATE); + mockHttpAttribute(AppConstants.RI_REPORT_ID)).thenReturn("1001"); + mockHttpAttribute("showDashboardOptions")).thenReturn(""); + mockHttpAttribute("folder_id")).thenReturn("2001"); + + Mockito.when(reportHandler.loadReportDefinition(httpServletRequest, "1001")).thenReturn(localReportDefinition); + Mockito.when(reportDefinition.getWizardSequence()).thenReturn(wizardSequence); - Mockito.when(wizardSequence.getCurrentStep()).thenReturn("NA"); - Mockito.when(wizardSequence.getCurrentSubStep()).thenReturn("NA"); + Mockito.when(wizardSequence.getCurrentStep()).thenReturn(AppConstants.WS_TABLES); + Mockito.when(wizardSequence.getCurrentSubStep()).thenReturn(AppConstants.WSS_ADD); + + Mockito.when(reportDefinition.getReportID()).thenReturn("10001"); + mockHttpAttribute("reportSQL")).thenReturn("SELECT [colNames.toString()] FROM ( [reportSQL]"); + + + mockHttpAttribute("tableName")).thenReturn("cr_report_access crc"); + mockHttpAttribute("joinTableName")).thenReturn("cr_report cr"); + mockHttpAttribute("joinExpr")).thenReturn("crc.rep_id = cr.rep_id"); + mockHttpAttribute("tablePK")).thenReturn("crc.rep_id"); + mockHttpAttribute("displayName")).thenReturn("Report Access"); + + String columnNames[] = {"ID", "COL1", "COL2", "COL3"}; + String columnType[] = {"Integer", "VARCHAR2", "VARCHAR2", "VARCHAR2"}; + //String columnVal[] = {"1", "Val1", "Val2", "Val3"}; + + + + Mockito.when(resultSet.next()).thenReturn(true); + Mockito.when(resultSet.getMetaData()).thenReturn(resultSetMetaData); + + Mockito.when(resultSetMetaData.getColumnCount()).thenReturn(columnNames.length); + + Mockito.when(resultSetMetaData.getColumnLabel(Mockito.anyInt())).thenAnswer(new Answer<String>() { + + @Override + public String answer(InvocationOnMock invocation) throws Throwable { + Object[] args = invocation.getArguments(); + int columnIndex = Integer.parseInt((String) args[0]); + return columnNames[columnIndex+1]; + } + }); + + Mockito.when(resultSetMetaData.getColumnType(Mockito.anyInt())).thenAnswer(new Answer<String>() { + + @Override + public String answer(InvocationOnMock invocation) throws Throwable { + Object[] args = invocation.getArguments(); + int columnIndex = Integer.parseInt((String) args[0]); + return columnType[columnIndex+1]; + } + }); + + //DataSet localDataSet = new DataSet(resultSet); + //PowerMockito.when(DbUtils.executeQuery(reportUserAccessSql)).thenReturn(localDataSet); + wizardProcessor.processWizardStep(httpServletRequest); } + @Test - public void testProcessWizardStep_not_null_arguments_case5() throws Exception { + public void testProcessWizardStep_not_null_arguments_crosstab() throws Exception { PowerMockito.whenNew(ReportHandler.class).withNoArguments().thenReturn(reportHandler); - Mockito.when(AppUtils.getRequestValue(httpServletRequest, AppConstants.RI_REPORT_ID)).thenReturn("Report#1"); + Mockito.when(AppUtils.getRequestValue(httpServletRequest, AppConstants.RI_REPORT_ID)).thenReturn("1000"); Mockito.when(AppUtils.getRequestNvlValue(httpServletRequest, "showDashboardOptions")).thenReturn(""); - Mockito.when(AppUtils.getRequestNvlValue(httpServletRequest, "reportType")).thenReturn(AppConstants.RT_DASHBOARD); - Mockito.when(reportHandler.loadReportDefinition(httpServletRequest,"Report#1")).thenReturn(reportDefinition); + Mockito.when(AppUtils.getRequestNvlValue(httpServletRequest, "reportType")).thenReturn(AppConstants.RT_CROSSTAB); + Mockito.when(reportHandler.loadReportDefinition(httpServletRequest,"1000")).thenReturn(reportDefinition); Mockito.when(httpServletRequest.getParameter(AppConstants.RI_WIZARD_ACTION)).thenReturn("NA"); Mockito.when(reportDefinition.getWizardSequence()).thenReturn(wizardSequence); @@ -254,14 +3142,28 @@ public class WizardProcessorTest { Mockito.when(wizardSequence.getCurrentSubStep()).thenReturn("NA"); Mockito.when(reportDefinition.getReportID()).thenReturn("1"); + Mockito.when(reportDefinition.getReportType()).thenReturn(AppConstants.RT_CROSSTAB); + mockHttpAttribute("reportName")).thenReturn("Report 1"); + mockHttpAttribute("reportDescr")).thenReturn("Report One help for testing..."); + wizardProcessor.processWizardStep(httpServletRequest); + + + //Mockito.when(AppUtils.getRequestNvlValue(httpServletRequest, "widthNo")).thenReturn("500px"); + + //wizardProcessor.processWizardStep(httpServletRequest); + + + } + ***/ /*** - @Test + @throws Exception + * @Test public void testProcessImportSemaphorePopup() { fail("Not yet implemented"); } @@ -270,10 +3172,182 @@ public class WizardProcessorTest { public void testProcessSemaphorePopup() { fail("Not yet implemented"); } +*/ + + @Test + public void testProcessAdhocSchedule_Add_User_case1() throws Exception { + + mockHttpAttribute("pdfAttachmentKey", "PdfKey"); + mockHttpAttribute("log_id", "Log#1234"); + mockHttpAttribute("user_id", "demo"); + + mockHttpAttribute("schedEnabled", "N"); + mockHttpAttribute("schedStartDate", "03/12/2018"); + mockHttpAttribute("schedEndDate", "03/12/2999"); + mockHttpAttribute("schedEndHour", "9"); + mockHttpAttribute("schedMin", "30"); + mockHttpAttribute("schedEndMin", "10"); + mockHttpAttribute("schedEndAMPM", "AM"); + mockHttpAttribute("schedRunDate", "N"); + mockHttpAttribute("schedHour", "10"); + mockHttpAttribute("schedAMPM", "AM"); + + mockHttpAttribute("schedRecurrence", "Y"); + + mockHttpAttribute("conditional", "Y"); + + mockHttpAttribute("conditionSQL", "REPORT_ID=1001"); + mockHttpAttribute("notify_type", "QUEUE"); + mockHttpAttribute("downloadLimit", "1024mb"); + mockHttpAttribute("formFields", "REPORT_ID"); + + mockHttpAttribute("sendAttachment", "Y"); + + mockHttpAttribute("schedEmailAdd", "Y"); + mockHttpAttribute("schedEmailAddRole", "Y"); + + Mockito.when(httpServletRequest.getSession(false)).thenReturn(httpSession); + Mockito.when(httpSession.getAttribute("user_attribute_name") ).thenReturn(user); + + PowerMockito.when(Globals.getUseLoginIdInSchedYN()).thenReturn("Y"); + + wizardProcessor.processAdhocSchedule(httpServletRequest, AppConstants.WA_ADD_USER); + + Mockito.verify(wizardProcessor, Mockito.times(1)).processAdhocSchedule(httpServletRequest, AppConstants.WA_ADD_USER); + } @Test - public void testProcessAdhocSchedule() { - fail("Not yet implemented"); + public void testProcessAdhocSchedule_Delete_User_case1() throws Exception { + + mockHttpAttribute(AppConstants.RI_DETAIL_ID, "2001"); + mockHttpAttribute("pdfAttachmentKey", "PdfKey"); + mockHttpAttribute("log_id", "Log#1234"); + mockHttpAttribute("user_id", "demo"); + + mockHttpAttribute("schedEnabled", "N"); + mockHttpAttribute("schedStartDate", "03/12/2018"); + mockHttpAttribute("schedEndDate", "03/12/2999"); + mockHttpAttribute("schedEndHour", "9"); + mockHttpAttribute("schedMin", "30"); + mockHttpAttribute("schedEndMin", "10"); + mockHttpAttribute("schedEndAMPM", "AM"); + mockHttpAttribute("schedRunDate", "N"); + mockHttpAttribute("schedHour", "10"); + mockHttpAttribute("schedAMPM", "AM"); + + mockHttpAttribute("schedRecurrence", "Y"); + mockHttpAttribute("conditional", "Y"); + + mockHttpAttribute("conditionSQL", "REPORT_ID=1001"); + mockHttpAttribute("notify_type", "QUEUE"); + mockHttpAttribute("downloadLimit", "1024mb"); + mockHttpAttribute("formFields", "REPORT_ID"); + + mockHttpAttribute("sendAttachment", "Y"); + mockHttpAttribute("schedEmailAdd", "Y"); + mockHttpAttribute("schedEmailAddRole", "Y"); + + Mockito.when(httpServletRequest.getSession(false)).thenReturn(httpSession); + Mockito.when(httpSession.getAttribute("user_attribute_name") ).thenReturn(user); + + wizardProcessor.processAdhocSchedule(httpServletRequest, AppConstants.WA_DELETE_USER); + Mockito.verify(wizardProcessor, Mockito.times(1)).processAdhocSchedule(httpServletRequest, AppConstants.WA_DELETE_USER); } + + + @Test + public void testProcessAdhocSchedule_Add_Role_case1() throws Exception { + + mockHttpAttribute(AppConstants.RI_DETAIL_ID, "2001"); + mockHttpAttribute("pdfAttachmentKey", "PdfKey"); + mockHttpAttribute("log_id", "Log#1234"); + mockHttpAttribute("user_id", "demo"); + + mockHttpAttribute("schedEnabled", "N"); + mockHttpAttribute("schedStartDate", "03/12/2018"); + mockHttpAttribute("schedEndDate", "03/12/2999"); + mockHttpAttribute("schedEndHour", "9"); + mockHttpAttribute("schedMin", "30"); + mockHttpAttribute("schedEndMin", "10"); + mockHttpAttribute("schedEndAMPM", "AM"); + mockHttpAttribute("schedRunDate", "N"); + mockHttpAttribute("schedHour", "10"); + mockHttpAttribute("schedAMPM", "AM"); + + mockHttpAttribute("schedRecurrence", "Y"); + + mockHttpAttribute("conditional", "Y"); + + mockHttpAttribute("conditionSQL", "REPORT_ID=1001"); + mockHttpAttribute("notify_type", "QUEUE"); + mockHttpAttribute("downloadLimit", "1024mb"); + mockHttpAttribute("formFields", "REPORT_ID"); + + mockHttpAttribute("sendAttachment", "Y"); + + mockHttpAttribute("schedEmailAdd", "Y"); + mockHttpAttribute("schedEmailAddRole", "Y"); + + Mockito.when(httpServletRequest.getSession(false)).thenReturn(httpSession); + + Mockito.when(httpSession.getAttribute("user_attribute_name") ).thenReturn(user); + + PowerMockito.when(Globals.getUseLoginIdInSchedYN()).thenReturn("Y"); + + wizardProcessor.processAdhocSchedule(httpServletRequest, AppConstants.WA_ADD_ROLE); + Mockito.verify(wizardProcessor, Mockito.times(1)).processAdhocSchedule(httpServletRequest, AppConstants.WA_ADD_ROLE); + } + + + @Test + public void testProcessAdhocSchedule_Delete_Role_case1() throws Exception { + + mockHttpAttribute(AppConstants.RI_DETAIL_ID, "2001"); + mockHttpAttribute("pdfAttachmentKey", "PdfKey"); + mockHttpAttribute("log_id", "Log#1234"); + mockHttpAttribute("user_id", "demo"); + + mockHttpAttribute("schedEnabled", "N"); + mockHttpAttribute("schedStartDate", "03/12/2018"); + mockHttpAttribute("schedEndDate", "03/12/2999"); + mockHttpAttribute("schedEndHour", "9"); + mockHttpAttribute("schedMin", "30"); + mockHttpAttribute("schedEndMin", "10"); + mockHttpAttribute("schedEndAMPM", "AM"); + mockHttpAttribute("schedRunDate", "N"); + mockHttpAttribute("schedHour", "10"); + mockHttpAttribute("schedAMPM", "AM"); + + mockHttpAttribute("schedRecurrence", "Y"); + + mockHttpAttribute("conditional", "Y"); + + mockHttpAttribute("conditionSQL", "REPORT_ID=1001"); + mockHttpAttribute("notify_type", "QUEUE"); + mockHttpAttribute("downloadLimit", "1024mb"); + mockHttpAttribute("formFields", "REPORT_ID"); + + mockHttpAttribute("sendAttachment", "Y"); + + mockHttpAttribute("schedEmailAdd", "Y"); + mockHttpAttribute("schedEmailAddRole", "Y"); + Mockito.when(httpServletRequest.getSession(false)).thenReturn(httpSession); + Mockito.when(httpSession.getAttribute("user_attribute_name") ).thenReturn(user); + wizardProcessor.processAdhocSchedule(httpServletRequest, AppConstants.WA_DELETE_ROLE); + + } + + + private void mockHttpAttribute(String attributeName, String attributeValue) { + Mockito.when(httpServletRequest.getAttribute(attributeName)).thenReturn(attributeValue); + } + + private void mockHttpParameter(String parameterName, String parameterValue) { + Mockito.when(httpServletRequest.getParameter(parameterName)).thenReturn(parameterValue); + } + + private void mockHttpParameterValues(String parameterName, String[] parameterValue) { + Mockito.when(httpServletRequest.getParameterValues(parameterName)).thenReturn(parameterValue); + } -*/} +} diff --git a/ecomp-sdk/epsdk-analytics/src/test/java/org/onap/portalsdk/analytics/gmap/node/NodeTest.java b/ecomp-sdk/epsdk-analytics/src/test/java/org/onap/portalsdk/analytics/gmap/node/NodeTest.java new file mode 100644 index 00000000..3a5a4477 --- /dev/null +++ b/ecomp-sdk/epsdk-analytics/src/test/java/org/onap/portalsdk/analytics/gmap/node/NodeTest.java @@ -0,0 +1,173 @@ +/* + * ============LICENSE_START========================================== + * ONAP Portal SDK + * =================================================================== + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * =================================================================== + * + * Unless otherwise specified, all software contained herein is licensed + * under the Apache License, Version 2.0 (the "License"); + * you may not use this software except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Unless otherwise specified, all documentation contained herein is licensed + * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); + * you may not use this documentation except in compliance with the License. + * You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ============LICENSE_END============================================ + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ +package org.onap.portalsdk.analytics.gmap.node; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +import org.junit.Test; +import org.onap.portalsdk.analytics.gmap.map.NovaMap; +import org.onap.portalsdk.analytics.gmap.node.Node; + + +public class NodeTest { + + @Test + public void testNode_null_argument() { + Node nodeObj = new Node(null); + assertNotNull(nodeObj); + } + + @Test + public void testNode_not_null_argument() { + Node nodeObj = new Node(new NovaMap()); + assertNotNull(nodeObj); + } + + @Test + public void testAddNode() { + Node nodeObj = new Node(new NovaMap()); + Double longitude = 13.13d; + Double latitude =28.28d; + NodeInfo nodeINfo = nodeObj.addNode(longitude, latitude, "nodeType", "nodeID", "nodeAttributes", 13, true, true); + assertNotNull(nodeINfo); + + assertEquals((Double)longitude,(Double)nodeINfo.geoCoordinate.longitude); + assertEquals((Double)latitude,(Double)nodeINfo.geoCoordinate.latitude); + assertEquals("nodeType",nodeINfo.getNodeType()); + + } + + @Test + public void testUpdateNumberCase1() { + + Node nodeObj = new Node(new NovaMap()); + + nodeObj.addNode(13.13d, 10.10d, "nodeType", "nodeID", "type=domestic|year=2018", 13, true, true); + nodeObj.addNode(13.14d, 10.11d, "nodeType", "nodeID", "type=international|year=2018", 13, true, true); + nodeObj.addNode(13.15d, 10.12d, "nodeType", "nodeID", "type=local|year=2018", 13, true, true); + + nodeObj.updateNumberT1("year"); + + HashMap<String,NodeInfo> hashMap = nodeObj.getNodeCollection().getNodeCollection(); + + assertNotNull(hashMap); + + Set set = hashMap.entrySet(); + + for (Iterator iterator = set.iterator(); iterator.hasNext();) { + Map.Entry entry = (Map.Entry) iterator.next(); + NodeInfo nodeInfo = (NodeInfo) entry.getValue(); + + assertEquals("2018", nodeInfo.getAttribute(NodeInfo.NUMBER_OF_T1_KEY)); + + } + + } + + @Test + public void testUpdateNumberCase2() { + Node nodeObj = new Node(new NovaMap()); + nodeObj.updateNumberT1("year"); + + HashMap<String,NodeInfo> hashMap = nodeObj.getNodeCollection().getNodeCollection(); + + assertNotNull(hashMap); + + Set set = hashMap.entrySet(); + + for (Iterator iterator = set.iterator(); iterator.hasNext();) { + Map.Entry entry = (Map.Entry) iterator.next(); + NodeInfo nodeInfo = (NodeInfo) entry.getValue(); + assertEquals("2018", nodeInfo.getAttribute(NodeInfo.NUMBER_OF_T1_KEY)); + } + } + + @Test + public void testGetUniqueNumberTcase1() { + + Node nodeObj = new Node(new NovaMap()); + nodeObj.getUniqueNumberT1(""); + } + + + /** + @Test + public void testGetUniqueNumberTcase2() { + + Node nodeObj = new Node(new NovaMap()); + + nodeObj.addNode(13.13d, 10.10d, "nodeType", "nodeID", "type=domestic|year=2018", 13, true, true); + nodeObj.addNode(13.14d, 10.11d, "nodeType", "nodeID", "type=international|year=2018", 13, true, true); + nodeObj.addNode(13.15d, 10.12d, "nodeType", "nodeID", "type=local|year=2018", 13, true, true); + + Set<Integer> set = (Set<Integer>)nodeObj.getUniqueNumberT1("year"); + + for (Iterator iterator = set.iterator(); iterator.hasNext();) { + + } + + + } +***/ + + + @Test + public void testNodeExist() { + Node nodeObj = new Node(new NovaMap()); + //nodeObj.nodeExist(); + } + + @Test + public void testGetNodeCollection() { + } + + @Test + public void testClearNodeIDSet() { + } + + @Test + public void testClearSelectionList() { + } + +} |