View Javadoc
1   package io.github.magwas.inez.storage.tests;
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.InezImpl;
18  import io.github.magwas.inez.query.tests.QueryProcessorTestData;
19  import io.github.magwas.inez.tests.BridiTestData;
20  import io.github.magwas.inez.tests.TestConfig;
21  import io.github.magwas.konveyor.runtime.LogUtil;
22  import io.github.magwas.konveyor.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  }