CCM NG: An additional test.

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4244 8810af33-2d31-482b-a856-94f89814c4df
pull/2/head
jensp 2016-09-01 15:31:40 +00:00
parent 1dccc276d0
commit 0885701a9c
2 changed files with 102 additions and 6 deletions

View File

@ -47,6 +47,8 @@ import org.libreccm.security.Shiro;
import org.libreccm.tests.categories.IntegrationTest;
import java.io.File;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import javax.inject.Inject;
@ -86,6 +88,9 @@ public class CategoryManagerTest {
@Inject
private Subject subject;
@Inject
private TestCategoryController controller;
@PersistenceContext(name = "LibreCCM")
private EntityManager entityManager;
@ -582,7 +587,7 @@ public class CategoryManagerTest {
categoryManager.addSubCategoryToCategory(test, categories);
});
}
@Test
@UsingDataSet(
"datasets/org/libreccm/categorization/CategoryManagerTest/data.yml")
@ -590,11 +595,11 @@ public class CategoryManagerTest {
public void hasIndexObject() {
final Category category1 = categoryRepo.findById(-2100L);
final Category category2 = categoryRepo.findById(-2200L);
assertThat(categoryManager.hasIndexObject(category1), is(false));
assertThat(categoryManager.hasIndexObject(category2), is(true));
}
@Test
@UsingDataSet(
"datasets/org/libreccm/categorization/CategoryManagerTest/data.yml")
@ -602,14 +607,39 @@ public class CategoryManagerTest {
public void getIndexObject() {
final Category category1 = categoryRepo.findById(-2100L);
final Category category2 = categoryRepo.findById(-2200L);
assertThat(categoryManager.getIndexObject(category1).isPresent(),
assertThat(categoryManager.getIndexObject(category1).isPresent(),
is(false));
final Optional<CcmObject> index2 = categoryManager.getIndexObject(
category2);
assertThat(index2.isPresent(), is(true));
assertThat(index2.get().getDisplayName(), is(equalTo("object3")));
}
/**
* This is a test to check if accessing multiple lazy fetched collections in
* a single transaction (provided by
* {@link TestCategoryController#getData(long)}) works.
*/
@Test
@UsingDataSet(
"datasets/org/libreccm/categorization/CategoryManagerTest/data.yml")
@InSequence(7000)
public void retrieveMultipleLazyCollections() {
assertThat(controller, is(not(nullValue())));
final Map<String, List<String>> data = controller.getData(-2100L);
final List<String> subCategories = data.get("subCategories");
final List<String> objects = data.get("objects");
assertThat(subCategories.size(), is(1));
assertThat(subCategories.get(0), is(equalTo("bar")));
assertThat(subCategories, hasItem("bar"));
assertThat(objects.size(), is(1));
assertThat(objects, hasItem("object1"));
}
}

View File

@ -0,0 +1,66 @@
/*
* Copyright (C) 2016 LibreCCM Foundation.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
package org.libreccm.categorization;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.transaction.Transactional;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@RequestScoped
public class TestCategoryController {
@Inject
private CategoryRepository categoryRepo;
@Transactional(Transactional.TxType.REQUIRED)
public Map<String, List<String>> getData(final long categoryId) {
final Category category = categoryRepo.findById(categoryId);
if (category == null) {
throw new IllegalArgumentException(String.format(
"No category for id %d.", categoryId));
}
final Map<String, List<String>> result = new HashMap<>();
final List<String> subCategories = new ArrayList<>();
final List<String> objects = new ArrayList<>();
result.put("subCategories", subCategories);
result.put("objects", objects);
category.getSubCategories().forEach(
subCategory -> subCategories.add(subCategory.getDisplayName()));
category.getObjects().forEach(
object -> objects
.add(object.getCategorizedObject().getDisplayName()));
return result;
}
}