View Javadoc
1   package io.github.magwas.inez.element.tests;
2   
3   import static org.junit.jupiter.api.Assertions.assertEquals;
4   import static org.junit.jupiter.api.Assertions.assertSame;
5   import static org.junit.jupiter.api.Assertions.assertTrue;
6   
7   import java.io.IOException;
8   import java.io.InputStream;
9   import java.util.List;
10  import java.util.stream.Collectors;
11  
12  import org.junit.jupiter.api.BeforeEach;
13  import org.junit.jupiter.api.Tag;
14  import org.junit.jupiter.api.Test;
15  import org.junit.jupiter.api.extension.ExtendWith;
16  import org.springframework.beans.factory.annotation.Autowired;
17  import org.springframework.test.context.ContextConfiguration;
18  import org.springframework.test.context.junit.jupiter.SpringExtension;
19  
20  import io.github.magwas.inez.InezImpl;
21  import io.github.magwas.inez.element.BridiElement;
22  import io.github.magwas.inez.element.BridiElementFactory;
23  import io.github.magwas.inez.element.BridiElementSystemInitializationService;
24  import io.github.magwas.inez.element.ElementConstants;
25  import io.github.magwas.inez.storage.repository.BridiReferenceRepository;
26  import io.github.magwas.inez.storage.repository.SumtiRepository;
27  import io.github.magwas.inez.tests.BridiTestData;
28  import io.github.magwas.inez.tests.TestConfig;
29  
30  @Tag("end-to-end")
31  @ExtendWith(SpringExtension.class)
32  @ContextConfiguration(classes = TestConfig.class)
33  class BridiElementEndToEndTest implements BridiTestData, BridiElementTestData {
34  
35  	@Autowired
36  	SumtiRepository sumtiRepository;
37  
38  	@Autowired
39  	BridiReferenceRepository bridiReferenceRepository;
40  
41  	@Autowired
42  	BridiElementSystemInitializationService bridiElementSystemInitialization;
43  
44  	@Autowired
45  	InezImpl inez;
46  
47  	@Autowired
48  	BridiElementFactory bridiElementFactory;
49  
50  	@BeforeEach
51  	void setUp() {
52  		sumtiRepository.findAll().forEach(x -> sumtiRepository.delete(x));
53  		bridiReferenceRepository.findAll().forEach(x -> bridiReferenceRepository.delete(x));
54  	}
55  
56  	@Test
57  	void test() throws IOException {
58  		assertSame(inez.getBridiReferenceRepository(), bridiReferenceRepository);
59  		bridiElementSystemInitialization.apply();
60  		BridiElement elementModel = bridiElementFactory.apply(ELEMENT_MODEL_ID);
61  		assertTrue(elementModel
62  				.getChildren()
63  				.anyMatch(
64  						x -> x.getReferences().map(y -> y.id).toList().contains(ElementConstants.IS_FUNCTION_FOR_ID)));
65  		BridiElement root = bridiElementFactory.apply(ROOT_ID);
66  		String rootXml = loadResourceAsString("root.xml");
67  		String theXml = root.toXml();
68  		assertEquals(rootXml, theXml);
69  		inez.createFromdefinitions("mymodel.definition").toArray();
70  
71  		BridiElement element = bridiElementFactory.apply(CONTAINS_ELEMENT_ID);
72  
73  		assertEquals(CONTAINS_ELEMENT_ID, element.id);
74  		assertEquals(CONTAINS_ELEMENT_REPR, element.getRepresentation());
75  
76  		assertEquals(THING_ID, element.getType().id);
77  		assertEquals(
78  				CONTAINS_ELEMENT_REFERENCES,
79  				element.getReferences().map(x -> x.id).toList());
80  		assertEquals(List.of(), element.getChildren().toList());
81  		assertEquals(MY_MODEL_ID, element.getParent().id);
82  
83  		element = bridiElementFactory.apply(MY_MODEL_ID);
84  
85  		assertEquals(MY_MODEL_ID, element.id);
86  		assertEquals(MY_MODEL_REPR, element.getRepresentation());
87  		assertEquals(FOLDER_ID, element.getType().id);
88  		assertEquals(List.of(), element.getReferences().toList());
89  		assertEquals(MY_FOLDER_CHILDREN, element.getChildren().map(x -> x.id).collect(Collectors.toSet()));
90  		assertEquals(ROOT_ID, element.getParent().id);
91  		String xml = loadResourceAsString("mymodel.xml");
92  		assertEquals(xml, element.toXml());
93  		assertTrue(element.isInstance(CONTAINER_ID));
94  		assertTrue(element.isInstance(FOLDER_ID));
95  		assertTrue(element.isInstance(THING_ID));
96  	}
97  
98  	private String loadResourceAsString(final String definitionName) throws IOException {
99  		ClassLoader classloader = Thread.currentThread().getContextClassLoader();
100 		try (InputStream inputStream = classloader.getResourceAsStream(definitionName)) {
101 			return new String(inputStream.readAllBytes());
102 		}
103 	}
104 }