1 package io.github.magwas.inez.storage; 2 3 import static org.junit.jupiter.api.Assertions.assertEquals; 4 5 import java.util.List; 6 import java.util.Set; 7 import java.util.stream.Stream; 8 9 import org.junit.jupiter.api.Tag; 10 import org.junit.jupiter.api.Test; 11 import org.junit.jupiter.api.extension.ExtendWith; 12 import org.springframework.beans.factory.annotation.Autowired; 13 import org.springframework.test.context.ContextConfiguration; 14 import org.springframework.test.context.junit.jupiter.SpringExtension; 15 16 import io.github.magwas.inez.Bridi; 17 import io.github.magwas.inez.BridiTestData; 18 import io.github.magwas.inez.InezImpl; 19 import io.github.magwas.inez.TestConfig; 20 import io.github.magwas.inez.query.QueryProcessorTestData; 21 import io.github.magwas.runtime.LogUtil; 22 import io.github.magwas.testing.TestUtil; 23 24 @Tag("end-to-end") 25 @ExtendWith(SpringExtension.class) 26 @ContextConfiguration(classes = TestConfig.class) 27 class BridiStoreEndToEndTest implements QueryProcessorTestData, BridiTestData { 28 29 @Autowired 30 InezImpl inez; 31 32 @Test 33 void test() { 34 inez.create(TEST_TEXT).toArray(); 35 assertEquals(List.of(ALICE), inez.findAllByRepresentation("alice").toList()); 36 37 inez.save(Set.of(GO, GO2)); 38 inez.findAllByRepresentation(GO_REPR).forEach(x -> LogUtil.debug("go", x)); 39 String CECILE_EATS_BANANA_REPR = "{cecile} {{eats} {banana}}"; 40 String CECILE_LOOKS_AT_BANANA_REPR = "{cecile} {{looks at} {banana}}"; 41 Bridi cecile_eats_banana = assertGotTheBridi(CECILE_EATS_BANANA_REPR, inez.query(CECILE_EATS_BANANA_REPR)); 42 Bridi ceclie_looks_at_banana = 43 assertGotTheBridi(CECILE_LOOKS_AT_BANANA_REPR, inez.query(CECILE_LOOKS_AT_BANANA_REPR)); 44 TestUtil.assertStreamEquals( 45 Set.of(cecile_eats_banana, ceclie_looks_at_banana), inez.query("{cecile} {{$?} {banana}}")); 46 47 Bridi looks_at_banana = 48 inez.findById(ceclie_looks_at_banana.references().get(2)).get(); 49 Bridi looks_at = inez.findById(looks_at_banana.references().get(1)).get(); 50 assertEquals("looks at", looks_at.representation()); 51 } 52 53 private Bridi assertGotTheBridi(final String expected, final Stream<Bridi> actual) { 54 List<Bridi> actualList = actual.toList(); 55 assertEquals(1, actualList.size()); 56 Bridi bridi = actualList.get(0); 57 assertEquals(expected, bridi.representation()); 58 return bridi; 59 } 60 }