Modify Actors to use properties when provided
[policy/models.git] / models-interactions / model-actors / actor.vfc / src / test / java / org / onap / policy / controlloop / actor / vfc / VfcOperationTest.java
index 4fe0cd4..6f8956f 100644 (file)
 
 package org.onap.policy.controlloop.actor.vfc;
 
-import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
-import java.util.concurrent.CompletableFuture;
+import java.util.Map;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
-import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
-import org.onap.policy.controlloop.policy.PolicyResult;
+import org.onap.policy.controlloop.actorserviceprovider.controlloop.ControlLoopEventContext;
 import org.onap.policy.vfc.VfcResponse;
 import org.onap.policy.vfc.VfcResponseDescriptor;
 
@@ -44,8 +41,8 @@ public class VfcOperationTest extends BasicVfcOperation {
     /**
      * setUp.
      */
-    @Override
     @Before
+    @Override
     public void setUp() throws Exception {
         super.setUp();
 
@@ -55,11 +52,11 @@ public class VfcOperationTest extends BasicVfcOperation {
     }
 
     @Test
-    public void testConstructor_testGetWaitMsGet() {
+    public void testConstructor() {
         assertEquals(DEFAULT_ACTOR, oper.getActorName());
         assertEquals(DEFAULT_OPERATION, oper.getName());
         assertSame(config, oper.getConfig());
-        assertEquals(1000 * WAIT_SEC_GETS, oper.getWaitMsGet());
+        assertTrue(oper.isUsePolling());
     }
 
     @Test
@@ -68,43 +65,9 @@ public class VfcOperationTest extends BasicVfcOperation {
     }
 
     @Test
-    public void testResetGetCount() {
-        oper.resetGetCount();
-        assertEquals(0, oper.getGetCount());
-    }
-
-    @Test
-    public void testPostProcess() throws Exception {
-
-        assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> {
-            oper.postProcessResponse(outcome, PATH, rawResponse, response);
-        });
-
-        response.setResponseDescriptor(new VfcResponseDescriptor());
-        response.setJobId("sampleJobId");
-        CompletableFuture<OperationOutcome> future2 = oper.postProcessResponse(outcome, PATH, rawResponse, response);
-        assertFalse(future2.isDone());
-        //assertSame(outcome, future2.get()); TODO Hanging
-        assertEquals(PolicyResult.SUCCESS, outcome.getResult());
-
-        response.getResponseDescriptor().setStatus("FinisHeD");
-        future2 = oper.postProcessResponse(outcome, PATH, rawResponse, response);
-        assertTrue(future2.isDone());
-        assertSame(outcome, future2.get());
-        assertEquals(PolicyResult.SUCCESS, outcome.getResult());
-
-        response.getResponseDescriptor().setStatus("eRRor");
-        future2 = oper.postProcessResponse(outcome, PATH, rawResponse, response);
-        assertTrue(future2.isDone());
-        assertSame(outcome, future2.get());
-        assertEquals(PolicyResult.FAILURE, outcome.getResult());
-
-        // failed
-        /*response.getResponseDescriptor().setStatus("anything but finished");
-        future2 = oper.postProcessResponse(outcome, PATH, rawResponse, response);
-        assertTrue(future2.isDone());
-        assertSame(outcome, future2.get());
-        assertEquals(PolicyResult.FAILURE, outcome.getResult());*/
+    public void testResetPollCount() {
+        oper.resetPollCount();
+        assertEquals(0, oper.getPollCount());
     }
 
     @Test
@@ -115,7 +78,9 @@ public class VfcOperationTest extends BasicVfcOperation {
 
         VfcResponseDescriptor mockDescriptor = Mockito.mock(VfcResponseDescriptor.class);
         Mockito.when(mockResponse.getResponseDescriptor()).thenReturn(mockDescriptor);
-        Mockito.when(mockDescriptor.getStatus()).thenReturn("COMPLETE"); // TODO use actual request state value
+
+        // TODO use actual request state value
+        Mockito.when(mockDescriptor.getStatus()).thenReturn("COMPLETE");
         assertNotNull(oper.getRequestState(mockResponse));
     }
 
@@ -124,4 +89,36 @@ public class VfcOperationTest extends BasicVfcOperation {
         assertTrue(oper.isSuccess(rawResponse, response));
     }
 
+    @Test
+    public void testGetOptProperty() {
+        // in neither property nor enrichment
+        assertNull(oper.getOptProperty("propA", "propA2"));
+
+        // both - should choose the property
+        remakeOper(Map.of("propB2", "valueB2"));
+        oper.setProperty("propB", "valueB");
+        assertEquals("valueB", oper.getOptProperty("propB", "propB2"));
+
+        // both - should choose the property, even if it's null
+        remakeOper(Map.of("propC2", "valueC2"));
+        oper.setProperty("propC", null);
+        assertNull(oper.getOptProperty("propC", "propC2"));
+
+        // only in enrichment data
+        remakeOper(Map.of("propD2", "valueD2"));
+        assertEquals("valueD2", oper.getOptProperty("propD", "propD2"));
+    }
+
+    /**
+     * Remakes the operation, with the specified A&AI enrichment data.
+     *
+     * @param aai A&AI enrichment data
+     */
+    private void remakeOper(Map<String, String> aai) {
+        event.setAai(aai);
+        context = new ControlLoopEventContext(event);
+        params = params.toBuilder().context(context).build();
+
+        oper = new VfcOperation(params, config) {};
+    }
 }