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 }