@Test public void testBadPersist() { final Quad testQuad = createQuad(badId, testResourceId1, testResourceId1, badId); final Resource testResource = new TestResource(badId, testQuad); assertThrows(CompletionException.class, () -> testable.create(Metadata.builder(testResource).build(), testResource.dataset()).toCompletableFuture() .join(), "Could create a resource when underlying services should reject it!"); }
@Test public void testAppendSemantics() { final Quad testFirstQuad = createQuad(testResourceId3, testResourceId2, testResourceId1, badId); final Quad testSecondQuad = createQuad(testResourceId3, testResourceId2, testResourceId1, badId); // store some data in mutable and immutable sides under the same resource ID final Resource testFirstResource = new TestResource(testResourceId3, testFirstQuad); assertNull(testable.add(testResourceId3, testFirstResource.dataset()).toCompletableFuture().join(), "Couldn't create an immutable resource!"); final Resource testSecondResource = new TestResource(testResourceId3, testSecondQuad); assertNull(testable.add(testResourceId3, testSecondResource.dataset()).toCompletableFuture().join(), "Couldn't add to an immutable resource!"); final Resource retrieved = testable.get(testResourceId3).toCompletableFuture().join(); assertEquals(testResourceId3, retrieved.getIdentifier(), "Resource was retrieved with wrong ID!"); final Dataset quads = retrieved.dataset(); assertTrue(quads.contains(testFirstQuad), "Resource was retrieved without its immutable data!"); assertTrue(quads.contains(testSecondQuad), "Resource was retrieved without its mutable data!"); quads.remove(testFirstQuad); quads.remove(testSecondQuad); assertEquals(0, quads.size(), "Resource was retrieved with too much data!"); }
@Test public void testRoundtripping() { final Quad testQuad = createQuad(testResourceId1, testResourceId1, testResourceId1, badId); final Resource testResource = new TestResource(testResourceId1, testQuad); assertNull(testable.create(Metadata.builder(testResourceId1).interactionModel(LDP.RDFSource).build(), testResource.dataset()).toCompletableFuture().join(), "Couldn't create a resource!"); Resource retrieved = testable.get(testResourceId1).toCompletableFuture().join(); assertEquals(testResource.getIdentifier(), retrieved.getIdentifier(), "Resource was retrieved with wrong ID!"); assertEquals(testResource.stream().findFirst().get(), retrieved.stream().findFirst().get(), "Resource was retrieved with wrong data!"); final Quad testQuad2 = createQuad(testResourceId1, badId, testResourceId1, badId); final Resource testResource2 = new TestResource(testResourceId1, testQuad2); assertNull(testable.replace(Metadata.builder(testResource2).interactionModel(LDP.RDFSource).build(), testResource2.dataset()).toCompletableFuture().join(), "Couldn't replace resource!"); retrieved = testable.get(testResourceId1).toCompletableFuture().join(); assertEquals(testResource2.getIdentifier(), retrieved.getIdentifier(), "Resource was retrieved with wrong ID!"); assertEquals(testResource2.stream().findFirst().get(), retrieved.stream().findFirst().get(), "Resource was retrieved with wrong data!"); assertNull(testable.delete(Metadata.builder(testResourceId1).interactionModel(LDP.RDFSource).build()) .toCompletableFuture().join(), "Couldn't delete resource!"); assertEquals(MISSING_RESOURCE, testable.get(testResourceId1).toCompletableFuture().join(), "Found resource after deleting it!"); }
@Test public void testMergingBehavior() { final Quad testMutableQuad = createQuad(testResourceId2, testResourceId2, testResourceId1, badId); final Quad testImmutableQuad = createQuad(testResourceId2, testResourceId2, testResourceId1, badId); // store some data in mutable and immutable sides under the same resource ID final Resource testMutableResource = new TestResource(testResourceId2, testMutableQuad); assertNull(testable.create(Metadata.builder(testMutableResource).build(), testMutableResource.dataset()) .toCompletableFuture().join(), "Couldn't create a resource!"); final Resource testImmutableResource = new TestResource(testResourceId2, testImmutableQuad); assertNull(testable.add(testResourceId2, testImmutableResource.dataset()).toCompletableFuture().join(), "Couldn't create an immutable resource!"); final Resource retrieved = testable.get(testResourceId2).toCompletableFuture().join(); assertEquals(testMutableResource.getIdentifier(), retrieved.getIdentifier(), "Resource was retrieved with wrong ID!"); final Dataset quads = retrieved.dataset(); assertTrue(quads.contains(testImmutableQuad), "Resource was retrieved without its immutable data!"); assertTrue(quads.contains(testMutableQuad), "Resource was retrieved without its mutable data!"); quads.remove(testImmutableQuad); quads.remove(testMutableQuad); assertEquals(0, quads.size(), "Resource was retrieved with too much data!"); }