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