// ============================================================================ // // 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.service; 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.junit.Before; 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.core.repository.model.IRepositoryFactory; import org.talend.core.repository.model.ProxyRepositoryFactory; import org.talend.core.repository.utils.XmiResourceManager; import org.talend.dq.helper.EObjectHelper; import org.talend.dq.helper.RepositoryNodeHelper; import org.talend.repository.model.IRepositoryNode; import org.talend.repository.model.IRepositoryNode.ENodeType; import orgomg.cwm.objectmodel.core.ModelElement; /** * DOC qiongli class global comment. Detailled comment */ @PrepareForTest({ RepositoryNodeHelper.class, EObjectHelper.class, ProxyRepositoryFactory.class }) public class TDQResourceChangeHandlerTest { @Rule public PowerMockRule powerMockRule = new PowerMockRule(); private TDQResourceChangeHandler tdqResourceChangeHandler = null; @Before public void setUp() throws Exception { if (tdqResourceChangeHandler == null) { ProxyRepositoryFactory proxFactory = mock(ProxyRepositoryFactory.class); stub(method(ProxyRepositoryFactory.class, "getInstance")).toReturn(proxFactory);//$NON-NLS-1$ IRepositoryFactory repFactory = mock(IRepositoryFactory.class); when(proxFactory.getRepositoryFactoryFromProvider()).thenReturn(repFactory); XmiResourceManager resManager = mock(XmiResourceManager.class); when(repFactory.getResourceManager()).thenReturn(resManager); tdqResourceChangeHandler = new TDQResourceChangeHandler(); } } /** * * test for a folde node and its children has depnedences. */ @Test public void testGetDependentNodes_folderNode() { IRepositoryNode currentNode = mock(IRepositoryNode.class); IRepositoryNode child1 = mock(IRepositoryNode.class); IRepositoryNode child2 = mock(IRepositoryNode.class); List<IRepositoryNode> children = new ArrayList<IRepositoryNode>(); children.add(child1); children.add(child2); when(currentNode.getChildren()).thenReturn(children); PowerMockito.mockStatic(RepositoryNodeHelper.class); ModelElement con1 = mock(ModelElement.class); ModelElement con2 = mock(ModelElement.class); when(RepositoryNodeHelper.getModelElementFromRepositoryNode(child1)).thenReturn(con1); when(RepositoryNodeHelper.getModelElementFromRepositoryNode(child2)).thenReturn(con2); ModelElement clientDenMod = mock(ModelElement.class); ModelElement clientDenMod2 = mock(ModelElement.class); List<ModelElement> clientLs = new ArrayList<ModelElement>(); List<ModelElement> clientLs2 = new ArrayList<ModelElement>(); clientLs.add(clientDenMod); clientLs2.add(clientDenMod2); PowerMockito.mockStatic(EObjectHelper.class); when(EObjectHelper.getDependencyClients(child1)).thenReturn(clientLs); when(EObjectHelper.getDependencyClients(child2)).thenReturn(clientLs2); when(currentNode.getType()).thenReturn(ENodeType.SIMPLE_FOLDER); List<IRepositoryNode> dependentNodes = tdqResourceChangeHandler.getDependentNodes(currentNode); assertFalse(dependentNodes.isEmpty()); assertTrue(dependentNodes.size() == 2); } /** * * test for a node(not folder) with client dependences. */ @Test public void testGetDependentNodes_node1() { IRepositoryNode currentNode = mock(IRepositoryNode.class); PowerMockito.mockStatic(RepositoryNodeHelper.class); ModelElement mod = mock(ModelElement.class); when(RepositoryNodeHelper.getModelElementFromRepositoryNode(currentNode)).thenReturn(mod); ModelElement clientDenMod = mock(ModelElement.class); List<ModelElement> clientLs = new ArrayList<ModelElement>(); clientLs.add(clientDenMod); PowerMockito.mockStatic(EObjectHelper.class); when(EObjectHelper.getDependencyClients(currentNode)).thenReturn(clientLs); List<IRepositoryNode> dependentNodes = tdqResourceChangeHandler.getDependentNodes(currentNode); assertFalse(dependentNodes.isEmpty()); } /** * * test for a node(not folder) without client dependences.. */ @Test public void testGetDependentNodes_node2() { IRepositoryNode currentNode = mock(IRepositoryNode.class); PowerMockito.mockStatic(RepositoryNodeHelper.class); ModelElement mod = mock(ModelElement.class); List<ModelElement> clientLs = new ArrayList<ModelElement>(); PowerMockito.mockStatic(EObjectHelper.class); when(EObjectHelper.getDependencyClients(mod)).thenReturn(clientLs); List<IRepositoryNode> dependentNodes = tdqResourceChangeHandler.getDependentNodes(currentNode); assertTrue(dependentNodes.isEmpty()); } }