// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dataprofiler.core.helper;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import static org.powermock.api.support.membermodification.MemberMatcher.*;
import static org.powermock.api.support.membermodification.MemberModifier.*;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IPath;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.FileEditorInput;
import org.junit.Rule;
import org.junit.Test;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.rule.PowerMockRule;
import org.talend.dataprofiler.core.CorePlugin;
import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl;
import org.talend.dataprofiler.core.ui.utils.MessageUI;
import org.talend.dq.helper.RepositoryNodeHelper;
import org.talend.dq.nodes.SourceFileRepNode;
import org.talend.dq.nodes.SourceFileSubFolderNode;
import org.talend.repository.model.IRepositoryNode;
import org.talend.utils.sugars.ReturnCode;
/**
* DOC xqliu class global comment. Detailled comment
*/
@PrepareForTest({ MessageUI.class, DefaultMessagesImpl.class, CorePlugin.class, WorkspaceResourceHelper.class,
RepositoryNodeHelper.class })
public class WorkspaceResourceHelperTest {
@Rule
public PowerMockRule powerMockRule = new PowerMockRule();
/**
* Test method for
* {@link org.talend.dataprofiler.core.helper.WorkspaceResourceHelper#sourceFileHasBeenOpened(org.talend.repository.model.IRepositoryNode)}
* .
*/
@Test
public void testSourceFileHasBeenOpened() {
SourceFileRepNode fileNode = mock(SourceFileRepNode.class);
CorePlugin cpMock = mock(CorePlugin.class);
PowerMockito.mockStatic(CorePlugin.class);
when(CorePlugin.getDefault()).thenReturn(cpMock);
IWorkbench workbenchMock = mock(IWorkbench.class);
when(cpMock.getWorkbench()).thenReturn(workbenchMock);
IWorkbenchWindow workbenchWindowMock = mock(IWorkbenchWindow.class);
when(workbenchMock.getActiveWorkbenchWindow()).thenReturn(workbenchWindowMock);
IWorkbenchPage workbenchPageMock = mock(IWorkbenchPage.class);
when(workbenchWindowMock.getActivePage()).thenReturn(workbenchPageMock);
IEditorReference editorRefMock = mock(IEditorReference.class);
IEditorReference[] editorRefMocks = new IEditorReference[] { editorRefMock };
when(workbenchPageMock.getEditorReferences()).thenReturn(editorRefMocks);
FileEditorInput fileEditorInputMock = mock(FileEditorInput.class);
try {
when(editorRefMock.getEditorInput()).thenReturn(fileEditorInputMock);
} catch (PartInitException e) {
fail(e.getMessage());
}
IFile nodeFileMock = mock(IFile.class);
stub(method(RepositoryNodeHelper.class, "getIFile", SourceFileRepNode.class)).toReturn(nodeFileMock); //$NON-NLS-1$
IPath nodeFilePathMock = mock(IPath.class);
when(nodeFileMock.getFullPath()).thenReturn(nodeFilePathMock);
String path = "/abc"; //$NON-NLS-1$
when(nodeFilePathMock.toString()).thenReturn(path);
IFile inputFileMock = mock(IFile.class);
when(fileEditorInputMock.getFile()).thenReturn(inputFileMock);
IPath inputFilePathMock = mock(IPath.class);
when(inputFileMock.getFullPath()).thenReturn(inputFilePathMock);
when(inputFilePathMock.toString()).thenReturn(path);
assertTrue(WorkspaceResourceHelper.sourceFileHasBeenOpened(fileNode));
}
/**
* Test method for
* {@link org.talend.dataprofiler.core.helper.WorkspaceResourceHelper#checkSourceFileNodeOpening(org.talend.dq.nodes.SourceFileRepNode)}
* .
*/
@Test
public void testCheckSourceFileNodeOpening() {
SourceFileRepNode fileNodeMock = mock(SourceFileRepNode.class);
String nodeLabel = "nodeLabel"; //$NON-NLS-1$
when(fileNodeMock.getLabel()).thenReturn(nodeLabel);
stub(method(WorkspaceResourceHelper.class, "sourceFileHasBeenOpened", SourceFileRepNode.class)).toReturn(Boolean.TRUE); //$NON-NLS-1$
ReturnCode rc = WorkspaceResourceHelper.checkSourceFileNodeOpening(fileNodeMock);
assertTrue(rc.isOk());
assertTrue(rc.getMessage().startsWith(nodeLabel));
}
/**
* Test method for
* {@link org.talend.dataprofiler.core.helper.WorkspaceResourceHelper#checkSourceFileSubFolderNodeOpening(org.talend.dq.nodes.SourceFileSubFolderNode)}
* .
*/
@Test
public void testCheckSourceFileSubFolderNodeOpening() {
SourceFileSubFolderNode folderNodeMock = mock(SourceFileSubFolderNode.class);
SourceFileRepNode nodeMock = mock(SourceFileRepNode.class);
List<IRepositoryNode> nodeList = new ArrayList<IRepositoryNode>();
nodeList.add(nodeMock);
when(folderNodeMock.getChildren()).thenReturn(nodeList);
boolean ok = Boolean.TRUE;
String msg = "msg"; //$NON-NLS-1$
ReturnCode rc = new ReturnCode(msg, ok);
stub(method(WorkspaceResourceHelper.class, "checkSourceFileNodeOpening", SourceFileRepNode.class)).toReturn(rc); //$NON-NLS-1$
ReturnCode rc2 = WorkspaceResourceHelper.checkSourceFileSubFolderNodeOpening(folderNodeMock);
assertEquals(rc.isOk(), rc2.isOk());
assertEquals(rc.getMessage(), rc2.getMessage());
}
}