package org.openlca.core.database.usage;
import java.util.List;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.openlca.core.Tests;
import org.openlca.core.database.DQSystemDao;
import org.openlca.core.database.IDatabase;
import org.openlca.core.database.ProcessDao;
import org.openlca.core.database.SourceDao;
import org.openlca.core.model.DQSystem;
import org.openlca.core.model.ModelType;
import org.openlca.core.model.Process;
import org.openlca.core.model.ProcessDocumentation;
import org.openlca.core.model.Source;
import org.openlca.core.model.descriptors.CategorizedDescriptor;
import org.openlca.core.model.descriptors.Descriptors;
import org.openlca.core.model.descriptors.SourceDescriptor;
public class SourceUseSearchTest {
private IDatabase database = Tests.getDb();
private IUseSearch<SourceDescriptor> search;
private Source source;
private Process process;
private ProcessDao processDao;
private DQSystem dqSystem;
private DQSystemDao dqSystemDao;
@Before
public void setUp() {
this.search = IUseSearch.FACTORY.createFor(ModelType.SOURCE, database);
SourceDao sourceDao = new SourceDao(database);
Source source = new Source();
source.setName("test source");
this.source = sourceDao.insert(source);
processDao = new ProcessDao(database);
Process process = new Process();
process.setName("test process");
ProcessDocumentation doc = new ProcessDocumentation();
process.setDocumentation(doc);
this.process = processDao.insert(process);
dqSystemDao = new DQSystemDao(database);
DQSystem system = new DQSystem();
this.dqSystem = dqSystemDao.insert(system);
}
@After
public void tearDown() {
processDao.delete(process);
dqSystemDao.delete(dqSystem);
SourceDao sourceDao = new SourceDao(database);
sourceDao.delete(source);
}
@Test
public void testFindNoUsage() {
List<CategorizedDescriptor> models = search.findUses(Descriptors
.toDescriptor(source));
Assert.assertNotNull(models);
Assert.assertTrue(models.isEmpty());
}
@Test
public void testFindInProcessPublication() {
process.getDocumentation().setPublication(source);
process = processDao.update(process);
List<CategorizedDescriptor> models = search.findUses(Descriptors
.toDescriptor(source));
Assert.assertEquals(1, models.size());
Assert.assertEquals(Descriptors.toDescriptor(process), models.get(0));
}
@Test
public void testFindInProcessSources() {
process.getDocumentation().getSources().add(source);
process = processDao.update(process);
List<CategorizedDescriptor> models = search.findUses(Descriptors
.toDescriptor(source));
Assert.assertEquals(1, models.size());
Assert.assertEquals(Descriptors.toDescriptor(process), models.get(0));
}
@Test
public void testFindInDQSystem() {
dqSystem.source = source;
dqSystem = dqSystemDao.update(dqSystem);
List<CategorizedDescriptor> models = search.findUses(Descriptors
.toDescriptor(source));
Assert.assertEquals(1, models.size());
Assert.assertEquals(Descriptors.toDescriptor(dqSystem), models.get(0));
}
}