package org.openlca.ilcd.tests.network;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Assume;
import org.junit.Before;
import org.junit.Test;
import org.openlca.ilcd.descriptors.DescriptorList;
import org.openlca.ilcd.descriptors.UnitGroupDescriptor;
import org.openlca.ilcd.io.SodaClient;
import org.openlca.ilcd.io.XmlBinder;
import org.openlca.ilcd.units.UnitGroup;
import org.openlca.ilcd.util.UnitGroupBag;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
public class DescriptorTest {
private Logger log = LoggerFactory.getLogger(this.getClass());
private String unitUrl = Network.RESOURCE_URL + "/unitgroups";
private Client client = Client.create();
@Before
public void setUp() throws Exception {
if (!Network.isAppAlive())
return;
SodaClient client = Network.createClient();
XmlBinder binder = new XmlBinder();
UnitGroup group = binder.fromStream(UnitGroup.class, getClass()
.getResourceAsStream("unit.xml"));
UnitGroupBag bag = new UnitGroupBag(group, "en");
if (client.contains(UnitGroup.class, bag.getId()))
return;
client.put(group);
}
@Test
public void testGetDescriptors() {
Assume.assumeTrue(Network.isAppAlive());
log.trace("Run testGetDescriptors");
log.trace("Get unit groups: {}", unitUrl);
DescriptorList result = client.resource(unitUrl).get(
DescriptorList.class);
assertTrue(result.descriptors.size() > 0);
iterateAndCompareFirst(result);
}
private void iterateAndCompareFirst(DescriptorList result) {
for (Object obj : result.descriptors) {
assertTrue(obj instanceof UnitGroupDescriptor);
UnitGroupDescriptor descriptor = (UnitGroupDescriptor) obj;
log.trace("Unit group '{}' found.", descriptor.uuid);
}
UnitGroupDescriptor descriptorFromList = (UnitGroupDescriptor) result.descriptors.get(0);
compareFirst(descriptorFromList);
loadFull(descriptorFromList);
}
private void compareFirst(UnitGroupDescriptor descriptorFromList) {
WebResource resource = client.resource(unitUrl)
.path(descriptorFromList.uuid)
.queryParam("view", "overview");
log.trace("Get unit group descriptor: {}", resource.getURI());
UnitGroupDescriptor descriptor = resource
.get(UnitGroupDescriptor.class);
compareDescriptors(descriptorFromList, descriptor);
}
private void compareDescriptors(UnitGroupDescriptor expected,
UnitGroupDescriptor actual) {
assertEquals(expected.name.get(0), actual.name.get(0));
assertEquals(expected.uuid, actual.uuid);
}
private void loadFull(UnitGroupDescriptor descriptor) {
WebResource resource = client.resource(unitUrl)
.path(descriptor.uuid).queryParam("format", "xml");
log.trace("Get full unit group: {}", resource.getURI());
UnitGroup unitGroup = resource.get(UnitGroup.class);
assertEquals(descriptor.name.get(0), unitGroup.unitGroupInfo.dataSetInfo.name
.get(0).value);
assertEquals(descriptor.uuid, unitGroup.unitGroupInfo.dataSetInfo.uuid);
}
}