/**
* Copyright (C) Intersect 2012.
*
* This module contains Proprietary Information of Intersect,
* and should be treated as Confidential.
*/
package au.org.intersect.exsite9.domain.utils;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.Set;
import org.junit.Test;
import au.org.intersect.exsite9.domain.Group;
import au.org.intersect.exsite9.domain.MetadataAssociation;
import au.org.intersect.exsite9.domain.MetadataAttributeValue;
import au.org.intersect.exsite9.domain.MetadataCategory;
import au.org.intersect.exsite9.domain.MetadataCategoryType;
import au.org.intersect.exsite9.domain.MetadataCategoryUse;
import au.org.intersect.exsite9.domain.MetadataValue;
import au.org.intersect.exsite9.util.Triplet;
/**
* Tests {@link MetadataAssignableUtils}
*/
public final class GroupUtilsUnitTest
{
@Test
public void testGetCategoryToValueMapping()
{
final Group group = new Group("group");
final MetadataCategory cat1 = new MetadataCategory("cat1", MetadataCategoryType.CONTROLLED_VOCABULARY, MetadataCategoryUse.optional);
cat1.setId(12l);
final MetadataCategory cat2 = new MetadataCategory("cat2", MetadataCategoryType.CONTROLLED_VOCABULARY, MetadataCategoryUse.optional);
cat2.setId(32l);
final MetadataValue val1 = new MetadataValue("val1");
final MetadataValue val2 = new MetadataValue("val2");
final MetadataAttributeValue mdav1 = new MetadataAttributeValue("mdav1");
final MetadataAttributeValue mdav2 = new MetadataAttributeValue("mdav1");
mdav1.setId(1l);
mdav2.setId(2l);
final MetadataAssociation mda1 = new MetadataAssociation(cat1);
mda1.setId(1l);
mda1.getMetadataValues().add(val1);
mda1.setMetadataAttributeValue(mdav1);
final MetadataAssociation mda2 = new MetadataAssociation(cat2);
mda2.setId(2l);
mda2.getMetadataValues().add(val2);
mda2.setMetadataAttributeValue(mdav2);
group.getMetadataAssociations().add(mda1);
group.getMetadataAssociations().add(mda2);
final Set<Triplet<MetadataCategory, MetadataValue, MetadataAttributeValue>> out = MetadataAssignableUtils.getCategoryToValueMapping(group);
assertNotNull(out);
assertEquals(2, out.size());
assertTrue(out.contains(new Triplet<MetadataCategory, MetadataValue, MetadataAttributeValue>(cat1, val1, mdav1)));
assertTrue(out.contains(new Triplet<MetadataCategory, MetadataValue, MetadataAttributeValue>(cat2, val2, mdav2)));
}
}