View Javadoc
1   package io.github.magwas.inez.query.tests;
2   
3   import static org.junit.jupiter.api.Assertions.assertEquals;
4   
5   import java.io.IOException;
6   import java.util.List;
7   import java.util.Set;
8   import java.util.stream.Collectors;
9   
10  import org.junit.jupiter.api.BeforeEach;
11  import org.junit.jupiter.api.Tag;
12  import org.junit.jupiter.api.Test;
13  import org.junit.jupiter.api.extension.ExtendWith;
14  import org.springframework.beans.factory.annotation.Autowired;
15  import org.springframework.test.context.ContextConfiguration;
16  import org.springframework.test.context.junit.jupiter.SpringExtension;
17  
18  import io.github.magwas.inez.Bridi;
19  import io.github.magwas.inez.InezImpl;
20  import io.github.magwas.inez.parse.tests.InputTestData;
21  import io.github.magwas.inez.query.GetServiceByNameService;
22  import io.github.magwas.inez.tests.BridiTestData;
23  import io.github.magwas.inez.tests.TestConfig;
24  import io.github.magwas.konveyor.runtime.LogUtil;
25  import io.github.magwas.konveyor.testing.TestUtil;
26  
27  @Tag("end-to-end")
28  @ExtendWith(SpringExtension.class)
29  @ContextConfiguration(classes = TestConfig.class)
30  class QueryProcessorEndToEndTest implements QueryProcessorTestData, InputTestData, BridiTestData {
31  
32  	@Autowired
33  	InezImpl inez;
34  
35  	@BeforeEach
36  	void setUp() throws IOException {
37  		inez.initialize();
38  	}
39  
40  	@Test
41  	void test1() {
42  		inez.create(TEST_TEXT).peek(x -> LogUtil.debug("created:" + x)).toList();
43  		assertEquals(List.of(ALICE), inez.findAllByRepresentation(ALICE_REPR).toList());
44  		assertQuery(Set.of(ALICE_REPR), ALICE_REPR);
45  		assertQuery(Set.of(ALICE_EATS_BANANA_REPR), ALICE_EATS_BANANA_REPR);
46  		assertQuery(
47  				Set.of(ALICE_EATS_BANANA_REPR, BOB_EATS_BANANA_REPR, CECILE_EATS_BANANA_REPR), WHO_EATS_BANANA_INPUT);
48  		assertQuery(Set.of(CECILE_EATS_BANANA_REPR, CECILE_LOOKS_AT_BANANA_REPR), CECILE_WHAT_BANANA_INPUT);
49  		assertQuery(Set.of(ALICE_EATS_BANANA_REPR, ALICE_EATS_CHIPS_REPR), ALICE_EATS_WHAT_INPUT);
50  		LogUtil.addDebuggedClass(GetServiceByNameService.class);
51  		assertQuery(Set.of(PUTTY_REPR), DO_SAVE_PUTTY_INPUT);
52  		assertEquals(1, inez.findAllByRepresentation(PUTTY_REPR).count());
53  		List<Bridi> putty = inez.findAllByRepresentation(PUTTY_REPR).toList();
54  		assertQuery(Set.of(OSGI_REPR, BITCH_REPR, IS_A_REPR, OSGI_IS_A_BITCH_REPR), DO_SAVE_OSGI_IS_A_BITCH_INPUT);
55  		assertEquals(1, inez.findAllByRepresentation(OSGI_REPR).count());
56  		assertEquals(1, inez.findAllByRepresentation(BITCH_REPR).count());
57  		assertEquals(1, putty.size());
58  	}
59  
60  	private Set<Bridi> assertQuery(final Set<String> expected, final String query) {
61  		Set<Bridi> result = inez.query(query).collect(Collectors.toSet());
62  		Set<String> actual =
63  				result.stream().map(bridi -> bridi.representation()).collect(Collectors.toSet());
64  		if (!expected.equals(actual)) {
65  			System.out.println("actual:");
66  			actual.forEach(System.out::println);
67  			System.out.println("expected:");
68  			expected.forEach(System.out::println);
69  			TestUtil.diffCollections(expected, actual);
70  		}
71  		assertEquals(expected, actual);
72  		return result;
73  	}
74  }