Skip to content

Commit

Permalink
[BACKLOG-14131] Part 1- Return false when cancel button pressed, solu…
Browse files Browse the repository at this point in the history
…tion for Cancel button when prompted for save doesn't cancel the operation
  • Loading branch information
Francisco Câmara committed Jan 20, 2017
1 parent 6bc9a08 commit d0f755e
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 1 deletion.
5 changes: 4 additions & 1 deletion ui/src/org/pentaho/di/ui/spoon/Spoon.java
Expand Up @@ -4885,7 +4885,7 @@ public void loadRepositoryObjects( TransMeta transMeta ) {
} }
} }


public void promptForSave() throws KettleException { public boolean promptForSave() throws KettleException {
List<TabMapEntry> list = delegates.tabs.getTabs(); List<TabMapEntry> list = delegates.tabs.getTabs();


for ( TabMapEntry mapEntry : list ) { for ( TabMapEntry mapEntry : list ) {
Expand All @@ -4900,9 +4900,12 @@ public void promptForSave() throws KettleException {
int reply = itemInterface.showChangedWarning(); int reply = itemInterface.showChangedWarning();
if ( reply == SWT.YES ) { if ( reply == SWT.YES ) {
itemInterface.applyChanges(); itemInterface.applyChanges();
} else if ( reply == SWT.CANCEL ) {
return false;
} }
} }
} }
return true;
} }


public boolean quitFile( boolean canCancel ) throws KettleException { public boolean quitFile( boolean canCancel ) throws KettleException {
Expand Down
50 changes: 50 additions & 0 deletions ui/test-src/org/pentaho/di/ui/spoon/SpoonTest.java
Expand Up @@ -29,6 +29,7 @@
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;


import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Shell;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
Expand Down Expand Up @@ -61,6 +62,7 @@
import org.pentaho.di.ui.spoon.delegates.SpoonTabsDelegate; import org.pentaho.di.ui.spoon.delegates.SpoonTabsDelegate;
import org.pentaho.metastore.stores.delegate.DelegatingMetaStore; import org.pentaho.metastore.stores.delegate.DelegatingMetaStore;
import org.pentaho.xul.swt.tab.TabItem; import org.pentaho.xul.swt.tab.TabItem;
import org.pentaho.xul.swt.tab.TabSet;


/** /**
* Spoon tests * Spoon tests
Expand Down Expand Up @@ -724,4 +726,52 @@ private void setLoadLastUsedJobLocalWithRepository( boolean isSourceRepository,
doCallRealMethod().when( spoon ).loadLastUsedFile( mockLastUsedFile, repositoryName ); doCallRealMethod().when( spoon ).loadLastUsedFile( mockLastUsedFile, repositoryName );
spoon.loadLastUsedFile( mockLastUsedFile, repositoryName ); spoon.loadLastUsedFile( mockLastUsedFile, repositoryName );
} }

@Test
public void testCancelPromptToSave() throws Exception {
setPromptToSave( SWT.CANCEL, false );
assertFalse( spoon.promptForSave() );
}

@Test
public void testNoPromptToSave() throws Exception {
SpoonBrowser mockBrowser = setPromptToSave( SWT.NO, false );
assertTrue( spoon.promptForSave() );
verify( mockBrowser, never() ).applyChanges();
}

@Test
public void testYesPromptToSave() throws Exception {
SpoonBrowser mockBrowser = setPromptToSave( SWT.YES, false );
assertTrue( spoon.promptForSave() );
verify( mockBrowser ).applyChanges();
}

@Test
public void testCanClosePromptToSave() throws Exception {
setPromptToSave( SWT.YES, true );
assertTrue( spoon.promptForSave() );
}

private SpoonBrowser setPromptToSave( int buttonPressed, boolean canbeClosed ) throws Exception {
TabMapEntry mockTabMapEntry = mock( TabMapEntry.class );
TabSet mockTabSet = mock( TabSet.class );
ArrayList<TabMapEntry> lTabs = new ArrayList<>();
lTabs.add( mockTabMapEntry );

SpoonBrowser mockSpoonBrowser = mock( SpoonBrowser.class );

spoon.delegates = mock( SpoonDelegates.class );
spoon.delegates.tabs = mock( SpoonTabsDelegate.class );
spoon.tabfolder = mockTabSet;

doReturn( lTabs ).when( spoon.delegates.tabs ).getTabs();
doReturn( mockSpoonBrowser ).when( mockTabMapEntry ).getObject();
doReturn( canbeClosed ).when( mockSpoonBrowser ).canBeClosed();
doReturn( buttonPressed ).when( mockSpoonBrowser ).showChangedWarning();

doCallRealMethod().when( spoon ).promptForSave();

return mockSpoonBrowser;
}
} }

0 comments on commit d0f755e

Please sign in to comment.