Test case for SLING-9213
diff --git a/src/test/java/org/apache/sling/feature/extension/apiregions/APIRegionMergeHandlerTest.java b/src/test/java/org/apache/sling/feature/extension/apiregions/APIRegionMergeHandlerTest.java
index 15c0bc6..6a20185 100644
--- a/src/test/java/org/apache/sling/feature/extension/apiregions/APIRegionMergeHandlerTest.java
+++ b/src/test/java/org/apache/sling/feature/extension/apiregions/APIRegionMergeHandlerTest.java
@@ -16,12 +16,17 @@
*/
package org.apache.sling.feature.extension.apiregions;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Comparator;
+
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonReader;
@@ -39,9 +44,6 @@
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
public class APIRegionMergeHandlerTest {
private Path tempDir;
@@ -151,4 +153,43 @@
assertEquals(ea, aa);
}
+
+ @Test
+ public void testAPIRegioOrdering() throws Exception {
+ APIRegionMergeHandler armh = new APIRegionMergeHandler();
+
+ Feature f1 = new Feature(ArtifactId.fromMvnId("x:t:1"));
+ Feature f2 = new Feature(ArtifactId.fromMvnId("y:s:2"));
+
+ final ApiRegions regionsF1 = new ApiRegions();
+ final ApiRegion middleF1 = new ApiRegion("middle");
+ regionsF1.add(middleF1);
+
+ final Extension extF1 = new Extension(ExtensionType.JSON, ApiRegions.EXTENSION_NAME, ExtensionState.OPTIONAL);
+ extF1.setJSONStructure(regionsF1.toJSONArray());
+ f1.getExtensions().add(extF1);
+
+ final ApiRegions regionsF2 = new ApiRegions();
+ final ApiRegion topF2 = new ApiRegion("top");
+ final ApiRegion middleF2 = new ApiRegion("middle");
+ final ApiRegion bottomF2 = new ApiRegion("bottom");
+ regionsF2.add(topF2);
+ regionsF2.add(middleF2);
+ regionsF2.add(bottomF2);
+
+ final Extension extF2 = new Extension(ExtensionType.JSON, ApiRegions.EXTENSION_NAME, ExtensionState.OPTIONAL);
+ extF2.setJSONStructure(regionsF2.toJSONArray());
+ f2.getExtensions().add(extF2);
+
+
+ HandlerContext hc = Mockito.mock(HandlerContext.class);
+ armh.merge(hc, f1, f2, extF1, extF2);
+
+ // order must be top - middle - bottom
+ final ApiRegions result = ApiRegions.parse((JsonArray)extF1.getJSONStructure());
+ assertEquals(3, result.getRegionNames().size());
+ assertEquals("top", result.getRegionNames().get(0));
+ assertEquals("middle", result.getRegionNames().get(1));
+ assertEquals("bottom", result.getRegionNames().get(2));
+ }
}