Skip to content

Package: MergeWithViewHandler_Test

MergeWithViewHandler_Test

nameinstructionbranchcomplexitylinemethod
MergeWithViewHandler_Test()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
setUp()
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
testExtractViewAndRepository()
M: 0 C: 69
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 15
100%
M: 0 C: 1
100%
testProviderUsage()
M: 0 C: 122
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 28
100%
M: 0 C: 1
100%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2018 EclipseSource Muenchen GmbH and others.
3: *
4: * All rights reserved. This program and the accompanying materials
5: * are made available under the terms of the Eclipse Public License 2.0
6: * which accompanies this distribution, and is available at
7: * https://www.eclipse.org/legal/epl-2.0/
8: *
9: * SPDX-License-Identifier: EPL-2.0
10: *
11: * Contributors:
12: * Lucas Koehler - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emfforms.internal.rulerepository.tooling.merge;
15:
16: import static org.junit.Assert.assertEquals;
17: import static org.mockito.Matchers.any;
18: import static org.mockito.Matchers.eq;
19: import static org.mockito.Mockito.mock;
20: import static org.mockito.Mockito.verify;
21: import static org.mockito.Mockito.when;
22:
23: import org.eclipse.emf.common.util.URI;
24: import org.eclipse.emf.ecore.resource.Resource;
25: import org.eclipse.emf.ecore.resource.ResourceSet;
26: import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
27: import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
28: import org.eclipse.emf.ecp.view.spi.model.VView;
29: import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
30: import org.eclipse.emfforms.internal.rulerepository.tooling.merge.MergeWithViewHandler.MergeProvider;
31: import org.eclipse.emfforms.internal.rulerepository.tooling.merge.MergeWithViewHandler.MergedViewPathProvider;
32: import org.eclipse.emfforms.internal.rulerepository.tooling.merge.MergeWithViewHandler.OperationProvider;
33: import org.eclipse.emfforms.internal.rulerepository.tooling.merge.MergeWithViewHandler.ViewAndRepository;
34: import org.eclipse.emfforms.internal.rulerepository.tooling.merge.MergeWithViewHandler.ViewAndRepositoryProvider;
35: import org.eclipse.emfforms.spi.rulerepository.model.VRuleRepository;
36: import org.eclipse.emfforms.spi.rulerepository.model.VRulerepositoryFactory;
37: import org.eclipse.swt.widgets.Shell;
38: import org.junit.Before;
39: import org.junit.Test;
40:
41: /**
42: * JUnit test cases for {@link MergeWithViewHandler}.
43: *
44: * @author Lucas Koehler
45: *
46: */
47: public class MergeWithViewHandler_Test {
48:
49:         private MergeWithViewHandler handler;
50:
51:         /**
52:          * @throws java.lang.Exception
53:          */
54:         @Before
55:         public void setUp() throws Exception {
56:                 handler = new MergeWithViewHandler();
57:         }
58:
59:         /** Test that all given providers are used with the correct parameters. */
60:         @Test
61:         public void testProviderUsage() {
62:                 final ResourceSet rs = mock(ResourceSet.class);
63:                 final VRuleRepository repository = mock(VRuleRepository.class);
64:                 final VView view = mock(VView.class);
65:                 final VView mergedView = mock(VView.class);
66:                 final ViewAndRepository viewAndRepository = new ViewAndRepository();
67:                 final String mergedViewPath = "mergedviewpath";
68:                 viewAndRepository.setRuleRepository(repository);
69:                 viewAndRepository.setView(view);
70:                 final ViewAndRepositoryProvider viewAndRepositoryProvider = mock(ViewAndRepositoryProvider.class);
71:                 when(viewAndRepositoryProvider.getViewAndRepository(any(ResourceSet.class))).thenReturn(viewAndRepository);
72:
73:                 final OperationProvider operationProvider = mock(OperationProvider.class);
74:                 final MergedViewPathProvider viewPathProvider = mock(MergedViewPathProvider.class);
75:                 when(viewPathProvider.getPath(any(Shell.class), any(VView.class))).thenReturn(mergedViewPath);
76:                 final MergeProvider mergeProvider = mock(MergeProvider.class);
77:                 when(mergeProvider.merge(repository, view)).thenReturn(mergedView);
78:
79:                 final Shell shell = new Shell();
80:                 handler.mergeRuleRepoWithView(
81:                         shell,
82:                         rs,
83:                         viewAndRepositoryProvider,
84:                         viewPathProvider,
85:                         operationProvider,
86:                         mergeProvider);
87:
88:                 verify(viewAndRepositoryProvider).getViewAndRepository(rs);
89:                 verify(viewPathProvider).getPath(shell, view);
90:                 verify(mergeProvider).merge(repository, view);
91:                 verify(operationProvider).getOperation(eq(shell), eq(mergedViewPath), eq(mergedView));
92:         }
93:
94:         /**
95:          * Test that the VView and VRuleRepository are correctly read from a resource set and that the algorithm can deal
96:          * with empty resources without causing an exception.
97:          */
98:         @Test
99:         public void testExtractViewAndRepository() {
100:                 final ResourceSet resourceSet = new ResourceSetImpl();
101:                 resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
102:                 final Resource resource1 = resourceSet.createResource(URI.createURI("virtual-1"));
103:                 final VRuleRepository repository = VRulerepositoryFactory.eINSTANCE.createRuleRepository();
104:                 final VView view = VViewFactory.eINSTANCE.createView();
105:
106:                 final Resource resource2 = resourceSet.createResource(URI.createURI("virtual-2"));
107:                 // Leave the fourth resource empty to check that this does not cause an exception
108:                 resourceSet.createResource(URI.createURI("empty-resource"));
109:
110:                 resource1.getContents().add(repository);
111:                 resource2.getContents().add(view);
112:                 // Add unfitting EObject to resource
113:                 final Resource resource3 = resourceSet.createResource(URI.createURI("virtual-3"));
114:                 // Cannot mock any EObject here because the adding to the EList fails
115:                 resource3.getContents().add(VViewFactory.eINSTANCE.createControl());
116:
117:                 final ViewAndRepository viewAndRepository = handler.extractViewAndRepository(resourceSet);
118:                 assertEquals(view, viewAndRepository.getView());
119:                 assertEquals(repository, viewAndRepository.getRuleRepository());
120:
121:         }
122: }