@Test
  public void testNonVirtualCollectionList() throws Exception {
    List<StorageItem> result = new ArrayList<StorageItem>();

    expect(repository.getId()).andReturn("dummy").anyTimes();
    expect(repository.createUid("/a/some/dir/coll"))
        .andAnswer(
            new IAnswer<RepositoryItemUid>() {
              @Override
              public RepositoryItemUid answer() throws Throwable {
                return getRepositoryItemUidFactory().createUid(repository, "/a/some/dir/coll");
              }
            });
    expect(repository.createUid("/a/some/dir/coll/A"))
        .andAnswer(
            new IAnswer<RepositoryItemUid>() {
              @Override
              public RepositoryItemUid answer() throws Throwable {
                return getRepositoryItemUidFactory().createUid(repository, "/a/some/dir/coll/A");
              }
            });
    expect(repository.createUid("/a/some/dir/coll/B"))
        .andAnswer(
            new IAnswer<RepositoryItemUid>() {
              @Override
              public RepositoryItemUid answer() throws Throwable {
                return getRepositoryItemUidFactory().createUid(repository, "/a/some/dir/coll/B");
              }
            });
    expect(repository.createUid("/a/some/dir/coll/C"))
        .andAnswer(
            new IAnswer<RepositoryItemUid>() {
              @Override
              public RepositoryItemUid answer() throws Throwable {
                return getRepositoryItemUidFactory().createUid(repository, "/a/some/dir/coll/C");
              }
            });
    expect(repository.list(anyBoolean(), isA(StorageCollectionItem.class))).andReturn(result);

    replay(repository);

    // and now fill in result, since repo is active
    result.add(
        new DefaultStorageFileItem(
            repository, "/a/some/dir/coll/A", true, true, new StringContentLocator("A")));
    result.add(
        new DefaultStorageFileItem(
            repository, "/a/some/dir/coll/B", true, true, new StringContentLocator("B")));
    result.add(
        new DefaultStorageFileItem(
            repository, "/a/some/dir/coll/C", true, true, new StringContentLocator("C")));

    DefaultStorageCollectionItem coll =
        new DefaultStorageCollectionItem(repository, "/a/some/dir/coll", true, true);
    checkAbstractStorageItem(repository, coll, false, "coll", "/a/some/dir/coll", "/a/some/dir");

    Collection<StorageItem> items = coll.list();
    assertEquals(3, items.size());
  }
  @Test
  public void testVirtualCollectionList() throws Exception {
    List<StorageItem> result = new ArrayList<StorageItem>();

    expect(router.list(isA(ResourceStoreRequest.class))).andReturn(result);

    replay(router);

    // and now fill in result, since repo is active
    result.add(
        new DefaultStorageFileItem(
            router, "/a/some/dir/coll/A", true, true, new StringContentLocator("A")));
    result.add(
        new DefaultStorageFileItem(
            router, "/a/some/dir/coll/B", true, true, new StringContentLocator("B")));

    DefaultStorageCollectionItem coll =
        new DefaultStorageCollectionItem(router, "/and/another/coll", true, true);
    checkAbstractStorageItem(router, coll, true, "coll", "/and/another/coll", "/and/another");

    Collection<StorageItem> items = coll.list();
    assertEquals(2, items.size());
  }