Topology tree: test fetchCustomizationIdsFromToscaModelsWhileNeeded 84/102184/1
authorIttay Stern <ittay.stern@att.com>
Sun, 23 Feb 2020 11:24:47 +0000 (13:24 +0200)
committerIttay Stern <ittay.stern@att.com>
Sun, 23 Feb 2020 11:24:47 +0000 (13:24 +0200)
Issue-ID: VID-771

Change-Id: I5c1bf1f4eba8b5f53702ae2192b8ac9a962f1344
Signed-off-by: Ittay Stern <ittay.stern@att.com>
vid-app-common/src/main/java/org/onap/vid/services/AAITreeNodesEnricher.java
vid-app-common/src/test/java/org/onap/vid/services/AAITreeNodesEnricherTest.java

index 97bc423..5956eac 100644 (file)
@@ -130,8 +130,10 @@ public class AAITreeNodesEnricher {
      * @param modelVersions Iterable of model-version-ids to load
      * @param yieldCustomizationId The key to stop loading on
      */
-    private void fetchCustomizationIdsFromToscaModelsWhileNeeded(
-        Map<String, Names> inOutMutableNamesByCustomizationId, ListIterator<ModelVer> modelVersions, String yieldCustomizationId
+    void fetchCustomizationIdsFromToscaModelsWhileNeeded(
+        Map<String, Names> inOutMutableNamesByCustomizationId,
+        ListIterator<ModelVer> modelVersions,
+        String yieldCustomizationId
     ) {
         while (modelVersions.hasNext() && !inOutMutableNamesByCustomizationId.containsKey(yieldCustomizationId)) {
             inOutMutableNamesByCustomizationId.putAll(
index 2972256..1766162 100644 (file)
@@ -22,19 +22,28 @@ package org.onap.vid.services;
 
 import static java.util.Collections.emptyList;
 import static java.util.Collections.emptyMap;
+import static java.util.Collections.singletonMap;
 import static java.util.stream.Collectors.toList;
 import static net.javacrumbs.jsonunit.JsonMatchers.jsonEquals;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.allOf;
 import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder;
+import static org.hamcrest.collection.IsMapContaining.hasKey;
+import static org.hamcrest.core.IsNot.not;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Streams;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
 import net.javacrumbs.jsonunit.core.Option;
 import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
@@ -189,6 +198,48 @@ public class AAITreeNodesEnricherTest {
         aaiTreeNodesEnricher.enrichVfModulesWithModelCustomizationNameFromOtherVersions(nodes, "modelInvariantId");
     }
 
+    @Test
+    public void enrichVfModulesWithModelCustomizationNameFromOtherVersions_givenMissingKeysFoundInFirstSdcModels_sdcRequestsNotExhausted() {
+        when(featureManager.isActive(Features.FLAG_EXP_TOPOLOGY_TREE_VFMODULE_NAMES_FROM_OTHER_TOSCA_VERSIONS))
+            .thenReturn(true);
+
+        final ListIterator<ModelVer> manyVersionsIterator = manyModelVerIteratorMock();
+
+        String customizationIdToFind = "please-find-me";
+        Names anyNames = mock(Names.class);
+
+        when(serviceModelInflator.toNamesByCustomizationId(any()))
+            .thenReturn(singletonMap("uuidBefore", anyNames))
+            .thenReturn(singletonMap(customizationIdToFind, anyNames))
+            .thenReturn(singletonMap("uuidAfter", anyNames))
+        ;
+
+
+        final Map<String, Names> inOutMutableNamesByCustomizationId = new HashMap<>();
+        aaiTreeNodesEnricher.fetchCustomizationIdsFromToscaModelsWhileNeeded(
+            inOutMutableNamesByCustomizationId, manyVersionsIterator, customizationIdToFind);
+
+        assertThat(inOutMutableNamesByCustomizationId, allOf(
+            hasKey(customizationIdToFind),
+            hasKey("uuidBefore"),
+            not(hasKey("uuidAfter")))
+        );
+
+        verify(manyVersionsIterator, times(2)).next();
+        verify(sdcService, times(2)).getServiceModelOrThrow(any());
+    }
+
+    private ListIterator<ModelVer> manyModelVerIteratorMock() {
+        final ModelVer modelVerMock = mock(ModelVer.class);
+        final ListIterator<ModelVer> result = mock(ListIterator.class);
+
+        when(result.next()).thenReturn(modelVerMock);
+        when(result.hasNext())
+            .thenReturn(true, true, true, true, true, true, false);
+
+        return result;
+    }
+
     @FunctionalInterface
     public interface Creator<T, R> {
         R by(T t);