package com.github.anno4j.transaction; import com.github.anno4j.Anno4j; import com.github.anno4j.Transaction; import com.github.anno4j.model.Annotation; import com.github.anno4j.querying.GraphContextQueryTest; import com.github.anno4j.querying.QueryService; import org.junit.Before; import org.junit.Test; import org.openrdf.model.URI; import org.openrdf.model.impl.URIImpl; import org.openrdf.repository.RepositoryException; import java.util.List; import static org.junit.Assert.*; public class TransactionTest { private Anno4j anno4j; private URI subgraph = new URIImpl("http://www.example.com/TESTGRAPH"); @Before public void setUp() throws Exception { this.anno4j = new Anno4j(); } @Test public void beginCommitTest() throws RepositoryException, InstantiationException, IllegalAccessException { Transaction transaction = anno4j.createTransaction(); assertFalse(transaction.isActive()); transaction.begin(); assertTrue(transaction.isActive()); Annotation annotation = transaction.createObject(Annotation.class); // annotation shouldn't be created yet assertEquals(0, anno4j.findAll(Annotation.class).size()); transaction.commit(); transaction.close(); assertEquals(1, anno4j.findAll(Annotation.class).size()); } @Test public void queryDuringTransactionTest() throws Exception { // Create test annotation Transaction transaction = anno4j.createTransaction(); transaction.begin(); transaction.createObject(Annotation.class); assertEquals(1, transaction.findAll(Annotation.class).size()); transaction.commit(); assertEquals(1, transaction.findAll(Annotation.class).size()); } @Test public void roolbackTest() throws Exception { Transaction transaction = anno4j.createTransaction(); transaction.begin(); transaction.createObject(Annotation.class); assertEquals(1, transaction.findAll(Annotation.class).size()); transaction.rollback(); assertEquals(0, transaction.findAll(Annotation.class).size()); } @Test public void insertSubgraphTest() throws Exception { Transaction transaction = anno4j.createTransaction(); transaction.begin(); transaction.setAllContexts(subgraph); transaction.createObject(Annotation.class); assertEquals(1, transaction.findAll(Annotation.class).size()); transaction.commit(); // check with new connection assertEquals(1, anno4j.findAll(Annotation.class).size()); } @Test public void querySubgraphTest() throws Exception { Transaction transaction = anno4j.createTransaction(); transaction.begin(); transaction.createObject(Annotation.class); transaction.commit(); // check with new connection in subgraph assertEquals(0, anno4j.findAll(Annotation.class, subgraph).size()); // check with new connection in global graph assertEquals(1, anno4j.findAll(Annotation.class).size()); } }