@Before
  public void setup() {
    when(authzManager.authorize(any(Resource.class), any(User.class))).thenReturn(true);

    activatedActivity = mock(Activity.class);
    when(activatedActivity.getIdentifier()).thenReturn("activated activity");

    when(activatedActivityBean.getInstance()).thenReturn(activatedActivity);
    when(activatedActivityBean.isActivated()).thenReturn(true);

    when(nonActivatedActivityBean.isActivated()).thenReturn(false);

    Collection<SyncBeanDef<Activity>> activityList = new ArrayList<SyncBeanDef<Activity>>();
    activityList.add(activatedActivityBean);
    activityList.add(nonActivatedActivityBean);

    // This covers the case where the activity manager goes directly to the Errai bean manager.
    // The list includes all beans, active or otherwise, and the activity manager has to filter
    // them.
    when(iocManager.lookupBeans(Activity.class)).thenReturn(activityList);

    // And this covers the case where the activity manager does the lookup via the
    // ActivityBeansCache.
    // We set this up assuming ActivityBeansCache is well-behaved, and hides the existence of
    // inactive beans.
    // (of course this assumption is verified in a separate test)
    ActivityAndMetaInfo activatedActivityAndMetaInfo =
        activityBeansCache
        .new ActivityAndMetaInfo(activatedActivityBean, 0, Collections.<String>emptyList());
    when(activityBeansCache.getResourceActivities())
        .thenReturn(singletonList(activatedActivityAndMetaInfo));
    when(activityBeansCache.getActivity("activated activity")).thenReturn(activatedActivityBean);
  }
  @Test
  public void getAvaliableWorkbenchScreensIdsTest() {
    when(syncBeanManager.lookupBeans(WorkbenchScreenActivity.class))
        .thenReturn(generateBeansList());

    assertEquals(4, activityBeansInfo.getAvailableWorkbenchScreensIds().size());
    // assert bean order
    assertEquals("A", activityBeansInfo.getAvailableWorkbenchScreensIds().get(0));
    assertEquals("a", activityBeansInfo.getAvailableWorkbenchScreensIds().get(1));
    assertEquals("Z", activityBeansInfo.getAvailableWorkbenchScreensIds().get(2));
    assertEquals("z", activityBeansInfo.getAvailableWorkbenchScreensIds().get(3));
  }
 private AbstractWorkbenchPerspectiveActivity getDefaultPerspectiveActivity() {
   AbstractWorkbenchPerspectiveActivity defaultPerspective = null;
   final Collection<IOCBeanDef<AbstractWorkbenchPerspectiveActivity>> perspectives =
       iocManager.lookupBeans(AbstractWorkbenchPerspectiveActivity.class);
   final Iterator<IOCBeanDef<AbstractWorkbenchPerspectiveActivity>> perspectivesIterator =
       perspectives.iterator();
   outer_loop:
   while (perspectivesIterator.hasNext()) {
     final IOCBeanDef<AbstractWorkbenchPerspectiveActivity> perspective =
         perspectivesIterator.next();
     final AbstractWorkbenchPerspectiveActivity instance = perspective.getInstance();
     if (instance.isDefault()) {
       defaultPerspective = instance;
       break outer_loop;
     } else {
       iocManager.destroyBean(instance);
     }
   }
   return defaultPerspective;
 }
  public void testProgrammaticlyRegisteredBeansAreLookedUp() {
    final SyncBeanManager bm = IOC.getBeanManager();
    assertEquals(
        "The disabled alternative must not be in the bean manager before being programmatically added.",
        0,
        bm.lookupBeans(DisabledAlternativeBean.class).size());

    bm.registerBean(
        new SyncBeanDef<DisabledAlternativeBean>() {

          @Override
          public Class<DisabledAlternativeBean> getType() {
            return DisabledAlternativeBean.class;
          }

          @Override
          public Class<?> getBeanClass() {
            return DisabledAlternativeBean.class;
          }

          @Override
          public Class<? extends Annotation> getScope() {
            return Dependent.class;
          }

          @Override
          public DisabledAlternativeBean getInstance() {
            return new DisabledAlternativeBean();
          }

          @Override
          public DisabledAlternativeBean newInstance() {
            return new DisabledAlternativeBean();
          }

          @Override
          public Set<Annotation> getQualifiers() {
            return Collections.emptySet();
          }

          @Override
          public boolean matches(Set<Annotation> annotations) {
            return true;
          }

          @Override
          public String getName() {
            return "Name of DisabledAlternative";
          }

          @Override
          public boolean isConcrete() {
            return true;
          }

          @Override
          public boolean isActivated() {
            return true;
          }
        });

    assertEquals(
        "Failed to lookup programmatically added bean by type.",
        1,
        bm.lookupBeans(DisabledAlternativeBean.class).size());
    assertEquals(
        "Failed to lookup programmatically added bean by name.",
        1,
        bm.lookupBeans("Name of DisabledAlternative").size());
  }