package at.punkt.lod2.local; import at.punkt.lod2.util.Helper; import eu.lod2.rsine.registrationservice.RegistrationService; import eu.lod2.rsine.registrationservice.Subscription; import eu.lod2.rsine.registrationservice.SubscriptionExistsException; import eu.lod2.rsine.registrationservice.SubscriptionNotFoundException; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.openrdf.model.Model; import org.openrdf.model.impl.URIImpl; import org.openrdf.rio.RDFFormat; import org.openrdf.rio.RDFHandlerException; import org.openrdf.rio.RDFParseException; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.io.IOException; import java.util.Iterator; public class RegistrationServiceTest { private RegistrationService registrationService; @Before public void setUp() { registrationService = new RegistrationService(); } @Test public void registerSingleSubscription() throws RDFParseException, IOException, RDFHandlerException { int subscriptionsBeforeRegister = countSubscriptions(); Model rdfSubscription = Helper.createModelFromResourceFile("/internal/emailNotifierSubscription.ttl", RDFFormat.TURTLE); registrationService.register(rdfSubscription); int subscriptionsAfterRegister = countSubscriptions(); Assert.assertEquals(subscriptionsBeforeRegister + 1, subscriptionsAfterRegister); } private int countSubscriptions() { int count = 0; Iterator<Subscription> subscriptionIt = registrationService.getSubscriptionIterator(); while (subscriptionIt.hasNext()) { subscriptionIt.next(); count++; } return count; } @Test public void multipleSubscriptionsWithDifferentId() throws RDFParseException, IOException, RDFHandlerException { int subscriptionsBeforeRegister = countSubscriptions(); int subscriptionCount = 5; for (int i = 0; i < subscriptionCount; i++) { Model rdfSubscription = Helper.createModelFromResourceFile("/internal/emailNotifierSubscription.ttl", RDFFormat.TURTLE); registrationService.register(rdfSubscription); } Assert.assertEquals(subscriptionsBeforeRegister + subscriptionCount, countSubscriptions()); } @Test(expected = SubscriptionExistsException.class) public void multipleSubscriptionWithSameId() throws RDFParseException, IOException, RDFHandlerException { Model subscription = Helper.createModelFromResourceFile("/internal/subscriptionWithUri.ttl", RDFFormat.TURTLE); Model identicalSubscription = Helper.createModelFromResourceFile("/internal/subscriptionWithUri.ttl", RDFFormat.TURTLE); registrationService.register(subscription); registrationService.register(identicalSubscription); } @Test public void unregister() throws RDFParseException, IOException, RDFHandlerException { int subscriptionsBeforeRegister = countSubscriptions(); Model subscription = Helper.createModelFromResourceFile("/internal/subscriptionWithUri.ttl", RDFFormat.TURTLE); registrationService.register(subscription); int subscriptionsAfterRegister = countSubscriptions(); registrationService.unregister(new URIImpl("http://example.org/someSubscription")); int subscriptionsAfterUnregister = countSubscriptions(); Assert.assertEquals(subscriptionsBeforeRegister + 1, subscriptionsAfterRegister); Assert.assertEquals(subscriptionsBeforeRegister, subscriptionsAfterUnregister); } @Test(expected = SubscriptionNotFoundException.class) public void unregisterNonExistingSubscription() throws RDFParseException, IOException, RDFHandlerException { Model subscription = Helper.createModelFromResourceFile("/internal/emailNotifierSubscription.ttl", RDFFormat.TURTLE); registrationService.register(subscription); registrationService.unregister(new URIImpl("http://example.org/someSubscription")); } }