/* * Copyright 2015 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.client.mvp; import java.lang.annotation.Annotation; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; import org.jboss.errai.ioc.client.container.SyncBeanDef; import org.uberfire.commons.data.Pair; import static org.mockito.Mockito.*; @IsSplashScreen public class ActivityBeansCacheUnitTestWrapper extends ActivityBeansCache { private String idMock; private SyncBeanDef mockDef; private SplashScreenActivity splashScreenActivity; private Collection<SyncBeanDef<Activity>> availableActivities = new HashSet<SyncBeanDef<Activity>>(); private List<ActivityAndMetaInfo> activitiesAndMetaInfo = new ArrayList<ActivityAndMetaInfo>(); private Pair<Integer, List<String>> metaInfo; private boolean mockSplashcreen = true; public ActivityBeansCacheUnitTestWrapper() { mockDef = mock(SyncBeanDef.class); idMock = "mockDef1"; when(mockDef.getName()).thenReturn(idMock); when(mockDef.getBeanClass()).thenReturn(this.getClass()); availableActivities.add(mockDef); } public void mockSplashScreenBehaviour() { mockSplashcreen = true; Set<Annotation> annotations = new HashSet<Annotation>(Arrays.asList(ActivityBeansCacheUnitTestWrapper.class.getAnnotations())); when(mockDef.getQualifiers()).thenReturn(annotations); splashScreenActivity = mock(AbstractSplashScreenActivity.class); when(mockDef.getInstance()).thenReturn(splashScreenActivity); } public void createActivitiesAndMetaInfo(int priority1, int priority2) { activitiesAndMetaInfo.add(new ActivityAndMetaInfo(null, priority1, new ArrayList())); activitiesAndMetaInfo.add(new ActivityAndMetaInfo(null, priority2, new ArrayList())); } @Override Collection<SyncBeanDef<Activity>> getAvailableActivities() { return availableActivities; } public SyncBeanDef getMockDef() { return mockDef; } public SplashScreenActivity getSplashScreenActivity() { return splashScreenActivity; } public String getIdMock() { return idMock; } public void duplicateActivity() { SyncBeanDef duplicateMockDef = mock(SyncBeanDef.class); when(duplicateMockDef.getName()).thenReturn(idMock); availableActivities.add(duplicateMockDef); } @Override List<ActivityAndMetaInfo> getResourceActivities() { if (mockSplashcreen) { return activitiesAndMetaInfo; } return super.getResourceActivities(); } @Override Pair<Integer, List<String>> generateActivityMetaInfo(SyncBeanDef<Activity> activityBean) { return metaInfo; } public void mockActivityBehaviour() { mockSplashcreen = false; metaInfo = mock(Pair.class); when(metaInfo.getK1()).thenReturn(new Integer(1)); when(metaInfo.getK2()).thenReturn(new ArrayList<String>()); } }