/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.uberfire.ext.plugin.client.info;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.uberfire.backend.vfs.Path;
import org.uberfire.backend.vfs.PathFactory;
import org.uberfire.client.mvp.ActivityBeansInfo;
import org.uberfire.client.workbench.type.ClientResourceType;
import org.uberfire.client.workbench.type.ClientTypeRegistry;
import org.uberfire.ext.plugin.client.type.DynamicMenuResourceType;
import org.uberfire.ext.plugin.client.type.EditorPluginResourceType;
import org.uberfire.ext.plugin.client.type.PerspectiveLayoutPluginResourceType;
import org.uberfire.ext.plugin.client.type.ScreenPluginResourceType;
import org.uberfire.ext.plugin.client.type.SplashPluginResourceType;
import org.uberfire.ext.plugin.model.Activity;
import org.uberfire.ext.plugin.model.Plugin;
import org.uberfire.ext.plugin.model.PluginType;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
public class PluginsInfoTest {
private PluginsInfo pluginsInfo;
private EditorPluginResourceType editorPluginResourceType;
private PerspectiveLayoutPluginResourceType perspectiveLayoutPluginResourceType;
private ScreenPluginResourceType screenPluginResourceType;
private SplashPluginResourceType splashPluginResourceType;
private DynamicMenuResourceType dynamicMenuResourceType;
private ActivityBeansInfo activityBeansInfo;
private ClientTypeRegistry clientTypeRegistry;
@Before
public void setup() {
editorPluginResourceType = mock(EditorPluginResourceType.class);
perspectiveLayoutPluginResourceType = mock(PerspectiveLayoutPluginResourceType.class);
screenPluginResourceType = mock(ScreenPluginResourceType.class);
splashPluginResourceType = mock(SplashPluginResourceType.class);
dynamicMenuResourceType = mock(DynamicMenuResourceType.class);
activityBeansInfo = mock(ActivityBeansInfo.class);
clientTypeRegistry = mock(ClientTypeRegistry.class);
when(activityBeansInfo.getAvailableWorkbenchEditorsIds()).thenReturn(Arrays.asList(new String[]{"editorId1"}));
when(activityBeansInfo.getAvailablePerspectivesIds()).thenReturn(Arrays.asList(new String[]{"perspectiveId1", "perspectiveId2"}));
when(activityBeansInfo.getAvailableWorkbenchScreensIds()).thenReturn(Arrays.asList(new String[]{"screenId1", "screenId2", "screenId3"}));
when(activityBeansInfo.getAvailableSplashScreensIds()).thenReturn(Arrays.asList(new String[]{"splashScreenId1", "splashScreenId2", "splashScreenId3", "splashScreenId4"}));
when(clientTypeRegistry.resolve(any(Path.class))).thenReturn(dynamicMenuResourceType);
pluginsInfo = spy(new PluginsInfo(editorPluginResourceType,
perspectiveLayoutPluginResourceType,
screenPluginResourceType,
splashPluginResourceType,
dynamicMenuResourceType,
activityBeansInfo,
clientTypeRegistry));
doReturn(Collections.emptyList()).when(pluginsInfo).lookupBeans(any(Class.class));
}
@Test
public void getAllPluginsTest() {
Set<Activity> allPlugins = pluginsInfo.getAllPlugins(getPlugins());
assertEquals(15,
allPlugins.size());
}
@Test
public void getClassifiedPluginsTest() {
final Map<ClientResourceType, Set<Activity>> classifiedPlugins = pluginsInfo.getClassifiedPlugins(getPlugins());
assertEquals(5,
classifiedPlugins.keySet().size());
assertEquals(1,
classifiedPlugins.get(editorPluginResourceType).size());
assertEquals(2,
classifiedPlugins.get(perspectiveLayoutPluginResourceType).size());
assertEquals(3,
classifiedPlugins.get(screenPluginResourceType).size());
assertEquals(4,
classifiedPlugins.get(splashPluginResourceType).size());
assertEquals(5,
classifiedPlugins.get(dynamicMenuResourceType).size());
}
private Set<Plugin> getPlugins() {
Set<Plugin> plugins = new HashSet<Plugin>();
plugins.add(new Plugin("existingPerspectiveLayout",
PluginType.PERSPECTIVE_LAYOUT,
PathFactory.newPath("test1",
"/tmp/test1")));
plugins.add(new Plugin("existingScreen",
PluginType.SCREEN,
PathFactory.newPath("test2",
"/tmp/test2")));
plugins.add(new Plugin("existingEditor",
PluginType.EDITOR,
PathFactory.newPath("test3",
"/tmp/test3")));
plugins.add(new Plugin("existingSplashScreen",
PluginType.SPLASH,
PathFactory.newPath("test4",
"/tmp/test4")));
plugins.add(new Plugin("existingDynamicMenu",
PluginType.DYNAMIC_MENU,
PathFactory.newPath("test5",
"/tmp/test5")));
return plugins;
}
}