package org.xenei.jdbc4sparql.impl.rdf;
import java.util.List;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.xenei.jdbc4sparql.iface.Column;
import org.xenei.jdbc4sparql.iface.NameFilter;
import org.xenei.jdbc4sparql.iface.name.SchemaName;
import org.xenei.jena.entities.EntityManagerFactory;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.RDFList;
import com.hp.hpl.jena.rdf.model.RDFNode;
public class TableBuilderTest {
private Model model;
private RdfTableDef tableDef;
private RdfSchema mockSchema;
@Before
public void setUp() throws Exception {
model = ModelFactory.createDefaultModel();
final RdfTableDef.Builder builder = new RdfTableDef.Builder()
.addColumnDef(
RdfColumnDef.Builder.getStringBuilder().build(model))
.addColumnDef(
RdfColumnDef.Builder.getIntegerBuilder().build(model));
tableDef = builder.build(model);
mockSchema = Mockito.mock(RdfSchema.class);
Mockito.when(mockSchema.getResource()).thenReturn(
model.createResource("http://example.com/mockSchema"));
Mockito.when(mockSchema.getName()).thenReturn(
new SchemaName("catalog", "schema"));
}
@After
public void tearDown() throws Exception {
model.close();
}
@Test
public void testDefaultBuilder() throws Exception {
final RdfTable.Builder builder = new RdfTable.Builder()
.setTableDef(tableDef).setName("table")
.setColumn(0, "StringCol").setColumn(1, "IntCol")
.setSchema(mockSchema).setType("testing Table");
final RdfTable table = builder.build(model);
Assert.assertEquals(2, table.getColumnCount());
Assert.assertEquals("table", table.getName().getShortName());
final NameFilter<Column> nf = table.findColumns("StringCol");
Assert.assertTrue(nf.hasNext());
final Column c = nf.next();
Assert.assertEquals("StringCol", c.getName().getShortName());
Assert.assertFalse(nf.hasNext());
EntityManagerFactory.getEntityManager();
final Property p = model.createProperty(
ResourceBuilder.getNamespace(RdfTable.class), "column");
final List<RDFNode> columns = table.getResource()
.getRequiredProperty(p).getResource().as(RDFList.class)
.asJavaList();
Assert.assertEquals(2, columns.size());
}
}