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