3030package org .hisp .dhis .metadata .export ;
3131
3232import static org .junit .jupiter .api .Assertions .assertEquals ;
33+ import static org .junit .jupiter .api .Assertions .assertNotNull ;
3334import static org .junit .jupiter .api .Assertions .assertNull ;
3435
36+ import com .fasterxml .jackson .databind .ObjectMapper ;
37+ import com .fasterxml .jackson .databind .node .ObjectNode ;
38+ import java .io .ByteArrayInputStream ;
39+ import java .io .IOException ;
40+ import java .util .List ;
3541import java .util .Map ;
3642import java .util .Set ;
3743import org .hisp .dhis .common .IdentifiableObject ;
44+ import org .hisp .dhis .common .IdentifiableObjectManager ;
3845import org .hisp .dhis .common .ValueType ;
3946import org .hisp .dhis .dataelement .DataElement ;
47+ import org .hisp .dhis .dxf2 .metadata .MetadataExportParams ;
4048import org .hisp .dhis .dxf2 .metadata .MetadataExportService ;
49+ import org .hisp .dhis .dxf2 .metadata .MetadataImportService ;
50+ import org .hisp .dhis .mapping .MapView ;
4151import org .hisp .dhis .program .Program ;
4252import org .hisp .dhis .program .ProgramSection ;
4353import org .hisp .dhis .program .ProgramStage ;
4454import org .hisp .dhis .program .ProgramStageDataElement ;
4555import org .hisp .dhis .program .ProgramTrackedEntityAttribute ;
56+ import org .hisp .dhis .render .RenderFormat ;
57+ import org .hisp .dhis .render .RenderService ;
4658import org .hisp .dhis .test .integration .PostgresIntegrationTestBase ;
4759import org .hisp .dhis .trackedentity .TrackedEntityAttribute ;
4860import org .junit .jupiter .api .DisplayName ;
@@ -58,6 +70,14 @@ class MetadataExportWithDependenciesTest extends PostgresIntegrationTestBase {
5870
5971 @ Autowired private MetadataExportService metadataExportService ;
6072
73+ @ Autowired private MetadataImportService metadataImportService ;
74+
75+ @ Autowired private IdentifiableObjectManager manager ;
76+
77+ @ Autowired private RenderService renderService ;
78+
79+ @ Autowired private ObjectMapper jsonMapper ;
80+
6181 @ Test
6282 void testExportProgramWithProgramSection () {
6383 Program program = createProgram ('A' );
@@ -121,4 +141,28 @@ private Program setUpProgramAndDependencies() {
121141 entityManager .merge (programStage );
122142 return program ;
123143 }
144+
145+ @ Test
146+ @ DisplayName ("MapView should not be exported at root level when exporting Map with dependencies" )
147+ void exportMetadataShouldNotContainMapView () throws IOException {
148+ MapView mapView = createMapView ("A" );
149+ org .hisp .dhis .mapping .Map map = new org .hisp .dhis .mapping .Map ();
150+ map .setName ("MapA" );
151+ map .setMapViews (List .of (mapView ));
152+ map .setAutoFields ();
153+ manager .save (map );
154+
155+ MetadataExportParams exportParams = new MetadataExportParams ();
156+ exportParams .addClass (org .hisp .dhis .mapping .Map .class );
157+ exportParams .addClass (MapView .class );
158+ ObjectNode exported = metadataExportService .getMetadataAsObjectNode (exportParams );
159+
160+ Map <Class <? extends IdentifiableObject >, List <IdentifiableObject >> metadata =
161+ renderService .fromMetadata (
162+ new ByteArrayInputStream (jsonMapper .writeValueAsBytes (exported )), RenderFormat .JSON );
163+ assertNull (metadata .get (org .hisp .dhis .mapping .MapView .class ));
164+ org .hisp .dhis .mapping .Map exportMap =
165+ (org .hisp .dhis .mapping .Map ) metadata .get (org .hisp .dhis .mapping .Map .class ).get (0 );
166+ assertNotNull (exportMap .getMapViews ());
167+ }
124168}
0 commit comments