From 4c406d121fe2b6c1960ddebd2e9c1658be03ebe3 Mon Sep 17 00:00:00 2001 From: Michael Anstis Date: Tue, 17 Oct 2017 09:07:07 +0100 Subject: [PATCH] GUVNOR-3486: [Guided Decision Table Graph] Refresh after removal of table (#656) * GUVNOR-3486: [Guided Decision Table Graph] Refresh after removal of table * GUVNOR-3486: [Guided Decision Table Graph] Refresh after removal of table. Updates following peer review. --- ...aseGuidedDecisionTableEditorPresenter.java | 6 +-- .../GuidedDecisionTableModellerPresenter.java | 5 +- .../GuidedDecisionTableModellerViewImpl.java | 15 +----- ...uidedDecisionTableEditorPresenterTest.java | 29 ++++++++---- ...dedDecisionTableModellerPresenterTest.java | 46 ++++++++++++++++++- 5 files changed, 73 insertions(+), 28 deletions(-) diff --git a/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/main/java/org/drools/workbench/screens/guided/dtable/client/editor/BaseGuidedDecisionTableEditorPresenter.java b/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/main/java/org/drools/workbench/screens/guided/dtable/client/editor/BaseGuidedDecisionTableEditorPresenter.java index ef94325a76c..bbc42e886dd 100644 --- a/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/main/java/org/drools/workbench/screens/guided/dtable/client/editor/BaseGuidedDecisionTableEditorPresenter.java +++ b/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/main/java/org/drools/workbench/screens/guided/dtable/client/editor/BaseGuidedDecisionTableEditorPresenter.java @@ -19,6 +19,7 @@ import java.util.List; import java.util.Optional; import java.util.Set; + import javax.enterprise.event.Event; import com.google.gwt.user.client.ui.IsWidget; @@ -318,10 +319,9 @@ public void removeDocument(final GuidedDecisionTableView.Presenter dtPresenter) } void openOtherDecisionTable() { + decisionTableSelectedEvent.fire(DecisionTableSelectedEvent.NONE); final Set availableDecisionTables = modeller.getAvailableDecisionTables(); - if (availableDecisionTables == null || availableDecisionTables.isEmpty()) { - decisionTableSelectedEvent.fire(DecisionTableSelectedEvent.NONE); - } else { + if (!(availableDecisionTables == null || availableDecisionTables.isEmpty())) { final GuidedDecisionTableView.Presenter dtPresenter = availableDecisionTables.iterator().next(); decisionTableSelectedEvent.fire(new DecisionTableSelectedEvent(dtPresenter)); } diff --git a/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/main/java/org/drools/workbench/screens/guided/dtable/client/widget/table/GuidedDecisionTableModellerPresenter.java b/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/main/java/org/drools/workbench/screens/guided/dtable/client/widget/table/GuidedDecisionTableModellerPresenter.java index d0bf3986804..53b72c8dbde 100644 --- a/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/main/java/org/drools/workbench/screens/guided/dtable/client/widget/table/GuidedDecisionTableModellerPresenter.java +++ b/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/main/java/org/drools/workbench/screens/guided/dtable/client/widget/table/GuidedDecisionTableModellerPresenter.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.Optional; import java.util.Set; + import javax.enterprise.context.Dependent; import javax.enterprise.event.Event; import javax.enterprise.event.Observes; @@ -364,10 +365,12 @@ public void addOnExitPinnedModeCommand(final Command command) { public void onDecisionTableSelected(final @Observes DecisionTableSelectedEvent event) { final Optional dtPresenter = event.getPresenter(); if (!dtPresenter.isPresent()) { + activeDecisionTable = null; return; } final GuidedDecisionTableView.Presenter presenter = dtPresenter.get(); if (!isDecisionTableAvailable(presenter)) { + activeDecisionTable = null; return; } if (presenter.equals(getActiveDecisionTable())) { @@ -384,7 +387,7 @@ public void openNewGuidedDecisionTableColumnWizard() { wizard.start(); } - private void doDecisionTableSelected(final GuidedDecisionTableView.Presenter dtPresenter) { + void doDecisionTableSelected(final GuidedDecisionTableView.Presenter dtPresenter) { //Store selected decision table activeDecisionTable = dtPresenter; diff --git a/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/main/java/org/drools/workbench/screens/guided/dtable/client/widget/table/GuidedDecisionTableModellerViewImpl.java b/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/main/java/org/drools/workbench/screens/guided/dtable/client/widget/table/GuidedDecisionTableModellerViewImpl.java index 631fc940fa1..51d7a17ddd2 100644 --- a/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/main/java/org/drools/workbench/screens/guided/dtable/client/widget/table/GuidedDecisionTableModellerViewImpl.java +++ b/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/main/java/org/drools/workbench/screens/guided/dtable/client/widget/table/GuidedDecisionTableModellerViewImpl.java @@ -6,6 +6,7 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; + import javax.annotation.PostConstruct; import javax.inject.Inject; @@ -27,7 +28,6 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.Command; -import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HasVerticalAlignment; @@ -508,19 +508,6 @@ public void refreshConditionsWidget(final List actionColumns) { getActionsConfigWidget().clear(); diff --git a/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/test/java/org/drools/workbench/screens/guided/dtable/client/editor/BaseGuidedDecisionTableEditorPresenterTest.java b/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/test/java/org/drools/workbench/screens/guided/dtable/client/editor/BaseGuidedDecisionTableEditorPresenterTest.java index 5bca9a0071e..38beeb49921 100644 --- a/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/test/java/org/drools/workbench/screens/guided/dtable/client/editor/BaseGuidedDecisionTableEditorPresenterTest.java +++ b/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/test/java/org/drools/workbench/screens/guided/dtable/client/editor/BaseGuidedDecisionTableEditorPresenterTest.java @@ -39,9 +39,19 @@ import org.uberfire.workbench.events.NotificationEvent; import org.uberfire.workbench.model.menu.Menus; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.atLeast; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; @RunWith(GwtMockitoTestRunner.class) public class BaseGuidedDecisionTableEditorPresenterTest extends BaseGuidedDecisionTablePresenterTest { @@ -394,12 +404,15 @@ public void checkOpenOtherDecisionTableIsNotLastDecisionTable() { verify(placeManager, never()).forceClosePlace(any(PlaceRequest.class)); verify(decisionTableSelectedEvent, - times(1)).fire(dtSelectedEventCaptor.capture()); - - final DecisionTableSelectedEvent dtSelectedEvent = dtSelectedEventCaptor.getValue(); - assertNotNull(dtSelectedEvent); - assertTrue(dtSelectedEvent.getPresenter().isPresent()); - assertEquals(dtSelectedEvent.getPresenter().get(), + times(2)).fire(dtSelectedEventCaptor.capture()); + + final List dtSelectedEvents = dtSelectedEventCaptor.getAllValues(); + assertNotNull(dtSelectedEvents); + assertEquals(2, + dtSelectedEvents.size()); + assertFalse(dtSelectedEvents.get(0).getPresenter().isPresent()); + assertTrue(dtSelectedEvents.get(1).getPresenter().isPresent()); + assertEquals(dtSelectedEvents.get(1).getPresenter().get(), remainingDtPresenter); } diff --git a/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/test/java/org/drools/workbench/screens/guided/dtable/client/widget/table/GuidedDecisionTableModellerPresenterTest.java b/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/test/java/org/drools/workbench/screens/guided/dtable/client/widget/table/GuidedDecisionTableModellerPresenterTest.java index 7745d9bac56..a2ef1e2f5c2 100644 --- a/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/test/java/org/drools/workbench/screens/guided/dtable/client/widget/table/GuidedDecisionTableModellerPresenterTest.java +++ b/drools-wb-screens/drools-wb-guided-dtable-editor/drools-wb-guided-dtable-editor-client/src/test/java/org/drools/workbench/screens/guided/dtable/client/widget/table/GuidedDecisionTableModellerPresenterTest.java @@ -20,6 +20,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; + import javax.enterprise.event.Event; import com.ait.lienzo.client.core.event.NodeMouseMoveHandler; @@ -70,8 +71,21 @@ import org.uberfire.mvp.ParameterizedCommand; import org.uberfire.mvp.PlaceRequest; -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; @RunWith(LienzoMockitoTestRunner.class) public class GuidedDecisionTableModellerPresenterTest { @@ -559,6 +573,34 @@ public void onDecisionTableSelectedWhenNotInPinnedMode() { never()).flipToGridWidget(any(GuidedDecisionTableView.class)); } + @Test + public void onDecisionTableSelectedNoneSelected() { + final DecisionTableSelectedEvent event = DecisionTableSelectedEvent.NONE; + + presenter.onDecisionTableSelected(event); + + assertNull(presenter.getActiveDecisionTable()); + + verify(presenter, + never()).doDecisionTableSelected(any(GuidedDecisionTableView.Presenter.class)); + } + + @Test + public void onDecisionTableSelectedNotAvailable() { + final GuidedDecisionTableView.Presenter dtPresenter1 = makeDecisionTable(); + final GuidedDecisionTableView.Presenter dtPresenter2 = makeDecisionTable(); + final DecisionTableSelectedEvent event = new DecisionTableSelectedEvent(dtPresenter1); + + when(presenter.getAvailableDecisionTables()).thenReturn(Collections.singleton(dtPresenter2)); + + presenter.onDecisionTableSelected(event); + + assertNull(presenter.getActiveDecisionTable()); + + verify(presenter, + never()).doDecisionTableSelected(any(GuidedDecisionTableView.Presenter.class)); + } + @Test public void onDecisionTableLinkedColumnSelected() { final GridColumn gridColumn = mock(GridColumn.class);