From e6c00db523e7cea71ded2d48be77341bcad3d438 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Gro=C3=9F?= Date: Mon, 18 Jun 2018 13:41:57 +0200 Subject: [PATCH] added test cases for the registration of ResultsPresenter and their correct call mechanism --- .../com.sap.sse.datamining.ui.test/.classpath | 7 +- .../META-INF/MANIFEST.MF | 2 + .../ui/test/TestSSEDataMiningUi.gwt.xml | 1 + .../presentation/DummyQueryResultDTO.java | 16 ++++ .../presentation/DummyResultsPresenter.java | 85 +++++++++++++++++++ .../ui/test/client/TestSSEDataMiningUi.java | 52 +++++++++++- 6 files changed, 156 insertions(+), 7 deletions(-) create mode 100644 java/com.sap.sse.datamining.ui.test/src/com/sap/sse/datamining/ui/test/client/presentation/DummyQueryResultDTO.java create mode 100644 java/com.sap.sse.datamining.ui.test/src/com/sap/sse/datamining/ui/test/client/presentation/DummyResultsPresenter.java diff --git a/java/com.sap.sse.datamining.ui.test/.classpath b/java/com.sap.sse.datamining.ui.test/.classpath index b8a36e0305f..341ee4d6e0b 100644 --- a/java/com.sap.sse.datamining.ui.test/.classpath +++ b/java/com.sap.sse.datamining.ui.test/.classpath @@ -2,11 +2,8 @@ - - - - - + + diff --git a/java/com.sap.sse.datamining.ui.test/META-INF/MANIFEST.MF b/java/com.sap.sse.datamining.ui.test/META-INF/MANIFEST.MF index ab8c4463c76..fa71dc3af04 100644 --- a/java/com.sap.sse.datamining.ui.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.datamining.ui.test/META-INF/MANIFEST.MF @@ -7,7 +7,9 @@ Bundle-Vendor: SAP Automatic-Module-Name: com.sap.sse.datamining.ui.test Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.junit, + com.google.gwt.user;bundle-version="2.8.2", com.sap.sse.datamining.ui, com.sap.sse.gwt;bundle-version="1.0.0", + slf4j.api;bundle-version="1.6.4", com.sap.sse.common, com.sap.sse.datamining.shared diff --git a/java/com.sap.sse.datamining.ui.test/src/com/sap/sse/datamining/ui/test/TestSSEDataMiningUi.gwt.xml b/java/com.sap.sse.datamining.ui.test/src/com/sap/sse/datamining/ui/test/TestSSEDataMiningUi.gwt.xml index 55f40c1c01d..50bbcf4d464 100644 --- a/java/com.sap.sse.datamining.ui.test/src/com/sap/sse/datamining/ui/test/TestSSEDataMiningUi.gwt.xml +++ b/java/com.sap.sse.datamining.ui.test/src/com/sap/sse/datamining/ui/test/TestSSEDataMiningUi.gwt.xml @@ -10,6 +10,7 @@ + diff --git a/java/com.sap.sse.datamining.ui.test/src/com/sap/sse/datamining/ui/test/client/presentation/DummyQueryResultDTO.java b/java/com.sap.sse.datamining.ui.test/src/com/sap/sse/datamining/ui/test/client/presentation/DummyQueryResultDTO.java new file mode 100644 index 00000000000..1cb0945ee63 --- /dev/null +++ b/java/com.sap.sse.datamining.ui.test/src/com/sap/sse/datamining/ui/test/client/presentation/DummyQueryResultDTO.java @@ -0,0 +1,16 @@ +package com.sap.sse.datamining.ui.test.client.presentation; + +import java.io.Serializable; +import java.util.HashMap; + +import com.sap.sse.datamining.shared.data.QueryResultState; +import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; + +public class DummyQueryResultDTO extends QueryResultDTO { + + private static final long serialVersionUID = 4163808455941696613L; + + public DummyQueryResultDTO(Class resultType) { + super(QueryResultState.NORMAL, resultType, new HashMap<>()); + } +} diff --git a/java/com.sap.sse.datamining.ui.test/src/com/sap/sse/datamining/ui/test/client/presentation/DummyResultsPresenter.java b/java/com.sap.sse.datamining.ui.test/src/com/sap/sse/datamining/ui/test/client/presentation/DummyResultsPresenter.java new file mode 100644 index 00000000000..be4f619a22d --- /dev/null +++ b/java/com.sap.sse.datamining.ui.test/src/com/sap/sse/datamining/ui/test/client/presentation/DummyResultsPresenter.java @@ -0,0 +1,85 @@ +package com.sap.sse.datamining.ui.test.client.presentation; + +import java.util.List; + +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.user.client.ui.DockLayoutPanel; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sse.common.settings.Settings; +import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; +import com.sap.sse.datamining.ui.client.presentation.AbstractResultsPresenter; +import com.sap.sse.datamining.ui.client.presentation.TabbedResultsPresenter; +import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; + +/** + * Dummy class for testing the + * {@link TabbedResultsPresenter#registerResultPresenter(Class, com.sap.sse.datamining.ui.client.ResultsPresenter)} + * method. Therefore its {@link #showResult(QueryResultDTO)} method is overridden and simply stores a reference of this + * presenter instance. + * + * @author D064866 + * + */ +public class DummyResultsPresenter extends AbstractResultsPresenter { + + private final DockLayoutPanel layoutPanel; + private final List executedResultsPresenter; + + public DummyResultsPresenter(List executeResultsPresenter) { + super(null, null); + this.executedResultsPresenter = executeResultsPresenter; + layoutPanel = new DockLayoutPanel(Unit.PCT); + } + + /** + * Stores this ResultsPresenter for test purposes. + */ + @Override + public void showResult(QueryResultDTO result) { + executedResultsPresenter.add(this); + } + + @Override + public String getId() { + return null; + } + + @Override + public String getLocalizedShortName() { + return null; + } + + @Override + public boolean hasSettings() { + return false; + } + + @Override + public SettingsDialogComponent getSettingsDialogComponent(Settings useTheseSettings) { + return null; + } + + @Override + public Settings getSettings() { + return null; + } + + @Override + public void updateSettings(Settings newSettings) { + } + + @Override + public String getDependentCssClassName() { + return null; + } + + @Override + protected Widget getPresentationWidget() { + return layoutPanel; + } + + @Override + protected void internalShowResults(QueryResultDTO result) { + } + +} diff --git a/java/com.sap.sse.datamining.ui.test/test/com/sap/sse/datamining/ui/test/client/TestSSEDataMiningUi.java b/java/com.sap.sse.datamining.ui.test/test/com/sap/sse/datamining/ui/test/client/TestSSEDataMiningUi.java index 0b6aa4f7d2c..c17bf0663a5 100644 --- a/java/com.sap.sse.datamining.ui.test/test/com/sap/sse/datamining/ui/test/client/TestSSEDataMiningUi.java +++ b/java/com.sap.sse.datamining.ui.test/test/com/sap/sse/datamining/ui/test/client/TestSSEDataMiningUi.java @@ -1,6 +1,15 @@ package com.sap.sse.datamining.ui.test.client; +import java.util.ArrayList; +import java.util.List; + import com.google.gwt.junit.client.GWTTestCase; +import com.sap.sse.datamining.ui.client.presentation.MultiResultsPresenter; +import com.sap.sse.datamining.ui.client.presentation.PlainResultsPresenter; +import com.sap.sse.datamining.ui.client.presentation.ResultsChart; +import com.sap.sse.datamining.ui.client.presentation.TabbedResultsPresenter; +import com.sap.sse.datamining.ui.test.client.presentation.DummyQueryResultDTO; +import com.sap.sse.datamining.ui.test.client.presentation.DummyResultsPresenter; /** * GWT JUnit tests must extend GWTTestCase. @@ -14,7 +23,46 @@ public class TestSSEDataMiningUi extends GWTTestCase { return "com.sap.sse.datamining.ui.test.TestSSEDataMiningUiJUnit"; } - public void testRegisterResultsPresenter() { - assertTrue(true); + /** + * Tests the mechanism {@link TabbedResultsPresenter#registerResultPresenter(Class, ResultsPresenter)}. + */ + public void testAvoidDuplicateResultTypeRegistration() { + TabbedResultsPresenter presenter = new TabbedResultsPresenter(null, null, null); + + presenter.registerResultPresenter(String.class, new PlainResultsPresenter(null, null)); + presenter.registerResultPresenter(Double.class, new MultiResultsPresenter(null, null, null)); + try { + presenter.registerResultPresenter(String.class, new ResultsChart(null, null, true, null)); + fail(); + } catch (IllegalStateException e) { + assertTrue(true); + } + } + + /** + * Tests the mechanism {@link TabbedResultsPresenter#showResult(QueryResultDTO)}. + */ + public void testShowResultWithCorrectResultsPresenter() { + TabbedResultsPresenter presenter = new TabbedResultsPresenter(null, null, null); + List executedPresenter = new ArrayList<>(); + + DummyResultsPresenter stringResultsPresenter = new DummyResultsPresenter(executedPresenter); + DummyResultsPresenter doubleResultsPresenter = new DummyResultsPresenter(executedPresenter); + + presenter.registerResultPresenter(String.class, stringResultsPresenter); + presenter.registerResultPresenter(Double.class, doubleResultsPresenter); + + presenter.showResult(new DummyQueryResultDTO<>(String.class)); + assertTrue(executedPresenter.size() == 1); + assertEquals(executedPresenter.get(0), stringResultsPresenter); + + presenter.showResult(new DummyQueryResultDTO<>(Double.class)); + assertTrue(executedPresenter.size() == 2); + assertEquals(executedPresenter.get(1), doubleResultsPresenter); + + presenter.showResult(new DummyQueryResultDTO<>(Number.class)); + assertTrue(executedPresenter.size() == 2); + assertEquals(executedPresenter.get(0), stringResultsPresenter); + assertEquals(executedPresenter.get(1), doubleResultsPresenter); } }