Make URIParser code more readable
[aai/aai-common.git] / aai-core / src / test / java / org / onap / aai / parsers / uri / URIParserTest.java
index 111772d..74914cc 100644 (file)
@@ -22,23 +22,42 @@ package org.onap.aai.parsers.uri;
 
 import static org.hamcrest.Matchers.hasProperty;
 import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.inOrder;
+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 java.io.UnsupportedEncodingException;
 import java.net.URI;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
 
 import javax.annotation.PostConstruct;
+import javax.ws.rs.core.MultivaluedHashMap;
 import javax.ws.rs.core.UriBuilder;
 import javax.xml.bind.JAXBException;
 
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
+import org.mockito.ArgumentCaptor;
+import org.mockito.InOrder;
 import org.onap.aai.AAISetup;
+import org.onap.aai.edges.enums.EdgeType;
 import org.onap.aai.exceptions.AAIException;
+import org.onap.aai.introspection.Introspector;
 import org.onap.aai.introspection.Loader;
 import org.onap.aai.introspection.ModelType;
+import org.onap.aai.introspection.exceptions.AAIUnknownObjectException;
 import org.onap.aai.setup.SchemaVersion;
 
+
 public class URIParserTest extends AAISetup {
 
     private Loader loader;
@@ -112,4 +131,26 @@ public class URIParserTest extends AAISetup {
 
         new URIToDBKey(loader, uri);
     }
+
+    @Test
+    public void verifyParsableInvokation() throws UnsupportedEncodingException, AAIException {
+        ArgumentCaptor<Introspector> cloudInfrastructureArgument = ArgumentCaptor.forClass(Introspector.class);
+        ArgumentCaptor<Introspector> containersArgument = ArgumentCaptor.forClass(Introspector.class);
+        ArgumentCaptor<Introspector> objectArgument = ArgumentCaptor.forClass(Introspector.class);
+        URI uri = UriBuilder.fromPath("cloud-infrastructure/complexes/complex/key1/ctag-pools/ctag-pool/key2/key3")
+        .build();
+        Parsable parsable = mock(Parsable.class);
+
+        URIParser uriParser = new URIParser(loader, uri);
+        uriParser.parse(parsable);
+
+        verify(parsable).processNamespace(cloudInfrastructureArgument.capture());
+        verify(parsable, times(2)).processContainer(containersArgument.capture(),eq(EdgeType.TREE),eq(new MultivaluedHashMap<>()),eq(false));
+        verify(parsable, times(2)).processObject(objectArgument.capture(),eq(EdgeType.TREE),eq(new MultivaluedHashMap<>()));
+        assertEquals("cloud-infrastructure", cloudInfrastructureArgument.getValue().getName());
+        assertEquals("complexes", containersArgument.getAllValues().get(0).getName());
+        assertEquals("ctag-pools", containersArgument.getAllValues().get(1).getName());
+        assertEquals("complex", objectArgument.getAllValues().get(0).getName());
+        assertEquals("ctag-pool", objectArgument.getAllValues().get(1).getName());
+    }
 }