Improved delete VC tests.

Change-Id: I729def71deb700118c1bd0cfd5c82c10a42ab471
diff --git a/Changes b/Changes
index 0049d3c..4f55980 100644
--- a/Changes
+++ b/Changes
@@ -12,6 +12,7 @@
 - Setup creating marlin-vc and published-vc in VirtualCorpusTestBase 
   instead of using SQL for testing 
 - Fixed request URI at OAuth2 token request API.  
+- Improved delete VC tests.
 
 # version 0.76
 
diff --git a/src/test/java/de/ids_mannheim/korap/rewrite/VirtualCorpusReferenceRewriteTest.java b/src/test/java/de/ids_mannheim/korap/rewrite/VirtualCorpusReferenceRewriteTest.java
index c5ae661..188dbcd 100644
--- a/src/test/java/de/ids_mannheim/korap/rewrite/VirtualCorpusReferenceRewriteTest.java
+++ b/src/test/java/de/ids_mannheim/korap/rewrite/VirtualCorpusReferenceRewriteTest.java
@@ -1,23 +1,19 @@
 package de.ids_mannheim.korap.rewrite;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
 
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
+
 import com.fasterxml.jackson.databind.JsonNode;
 import com.google.common.net.HttpHeaders;
 
 import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
 import de.ids_mannheim.korap.cache.VirtualCorpusCache;
 import de.ids_mannheim.korap.config.Attributes;
-import de.ids_mannheim.korap.config.SpringJerseyTest;
-import de.ids_mannheim.korap.dao.QueryDao;
-import de.ids_mannheim.korap.entity.QueryDO;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.init.NamedVCLoader;
 import de.ids_mannheim.korap.util.QueryException;
@@ -33,9 +29,6 @@
     @Autowired
     private NamedVCLoader vcLoader;
 
-    @Autowired
-    private QueryDao dao;
-
     @Test
     public void testRefCachedVC ()
             throws KustvaktException, IOException, QueryException {
@@ -46,20 +39,14 @@
                 .queryParam("cq", "referTo named-vc1").request().get();
         String ent = response.readEntity(String.class);
         JsonNode node = JsonUtils.readTree(ent);
-        node = node.at("/collection");
-        assertEquals("koral:docGroup", node.at("/@type").asText());
+        assertEquals("koral:docGroup", node.at("/collection/@type").asText());
         assertTrue(node.at("/operands/1/rewrites").isMissingNode());
         
         testRefCachedVCWithUsername();
-        QueryDO vc = dao.retrieveQueryByName("named-vc1", "system");
-        dao.deleteQuery(vc);
-        vc = dao.retrieveQueryByName("named-vc1", "system");
-        assertNull(vc);
-        VirtualCorpusCache.delete("named-vc1");
-        assertFalse(VirtualCorpusCache.contains("named-vc1"));
+        testDeleteVC("named-vc1","system",admin);
     }
 
-    private void testRefCachedVCWithUsername ()
+	private void testRefCachedVCWithUsername ()
             throws KustvaktException, IOException, QueryException {
         Response response = target().path(API_VERSION).path("search")
                 .queryParam("q", "[orth=der]").queryParam("ql", "poliqarp")
@@ -67,8 +54,9 @@
                 .get();
         String ent = response.readEntity(String.class);
         JsonNode node = JsonUtils.readTree(ent);
+        assertTrue(node.at("/matches").size()>0);
         node = node.at("/collection");
-        assertEquals(node.at("/@type").asText(), "koral:docGroup");
+        assertEquals("koral:docGroup", node.at("/@type").asText());
         node = node.at("/operands/1/rewrites");
         
         assertEquals(1, node.size());
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusFieldTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusFieldTest.java
index a56c34d..48e9c6b 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusFieldTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusFieldTest.java
@@ -7,14 +7,11 @@
 import org.apache.http.entity.ContentType;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
+
 import com.fasterxml.jackson.databind.JsonNode;
 import com.google.common.net.HttpHeaders;
-import jakarta.ws.rs.ProcessingException;
-import jakarta.ws.rs.core.Response;
-import jakarta.ws.rs.core.Response.Status;
 
 import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
-import de.ids_mannheim.korap.cache.VirtualCorpusCache;
 import de.ids_mannheim.korap.config.Attributes;
 import de.ids_mannheim.korap.dao.QueryDao;
 import de.ids_mannheim.korap.entity.QueryDO;
@@ -23,6 +20,9 @@
 import de.ids_mannheim.korap.init.NamedVCLoader;
 import de.ids_mannheim.korap.util.QueryException;
 import de.ids_mannheim.korap.utils.JsonUtils;
+import jakarta.ws.rs.ProcessingException;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response.Status;
 
 public class VirtualCorpusFieldTest extends VirtualCorpusTestBase {
 
@@ -85,9 +85,7 @@
         testRetrieveUnknownTokens();
         testRetrieveProhibitedField("system", "named-vc1", "tokens");
         testRetrieveProhibitedField("system", "named-vc1", "base");
-        VirtualCorpusCache.delete("named-vc1");
-        
-        deleteVC("named-vc1", "system", "admin");
+        testDeleteVC("named-vc1", "system", "admin");
     }
 
     private void testRetrieveUnknownTokens ()
@@ -103,8 +101,7 @@
         vcLoader.loadVCToCache("named-vc2", "/vc/named-vc2.jsonld");
         JsonNode n = testRetrieveField("system", "named-vc2", "textSigle");
         assertEquals(2, n.at("/corpus/value").size());
-        VirtualCorpusCache.delete("named-vc2");
-        deleteVcFromDB("named-vc2");
+        testDeleteVC("named-vc2", "system", admin);
     }
 
     @Test
@@ -115,8 +112,7 @@
         n = n.at("/corpus/value");
         assertEquals(1, n.size());
         assertEquals(n.get(0).asText(), "GOE/AGI/00000");
-        VirtualCorpusCache.delete("named-vc3");
-        deleteVcFromDB("named-vc3");
+        testDeleteVC("named-vc3", "system", admin);
     }
 
     @Test
@@ -137,7 +133,6 @@
                 node.at("/errors/0/0").asInt());
         assertEquals(node.at("/errors/0/1").asText(),
                 "Unauthorized operation for user: dory");
-        VirtualCorpusCache.delete("named-vc3");
-        deleteVcFromDB("named-vc3");
+        testDeleteVC("named-vc3", "system", admin);
     }
 }
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusReferenceTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusReferenceTest.java
index 21833c6..c7a3eec 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusReferenceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusReferenceTest.java
@@ -1,8 +1,6 @@
 package de.ids_mannheim.korap.web.controller.vc;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.IOException;
@@ -16,8 +14,6 @@
 import de.ids_mannheim.korap.cache.VirtualCorpusCache;
 import de.ids_mannheim.korap.config.Attributes;
 import de.ids_mannheim.korap.constant.UserGroupStatus;
-import de.ids_mannheim.korap.dao.QueryDao;
-import de.ids_mannheim.korap.entity.QueryDO;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.exceptions.StatusCodes;
 import de.ids_mannheim.korap.init.NamedVCLoader;
@@ -31,9 +27,6 @@
     @Autowired
     private NamedVCLoader vcLoader;
 
-    @Autowired
-    private QueryDao dao;
-
     /**
      * VC data exists, but it has not been cached, so it is not found
      * in the DB.
@@ -64,19 +57,9 @@
         assertTrue(VirtualCorpusCache.contains("named-vc2"));
         node = testSearchWithRef_VC2();
         assertEquals(numOfMatches, node.at("/matches").size());
-        VirtualCorpusCache.delete("named-vc2");
-        assertFalse(VirtualCorpusCache.contains("named-vc2"));
-        QueryDO vc = dao.retrieveQueryByName("named-vc1", "system");
-        dao.deleteQuery(vc);
-        vc = dao.retrieveQueryByName("named-vc1", "system");
-        assertNull(vc);
-        vc = dao.retrieveQueryByName("named-vc2", "system");
-        dao.deleteQuery(vc);
-        vc = dao.retrieveQueryByName("named-vc2", "system");
-        assertNull(vc);
         
-        VirtualCorpusCache.delete("named-vc1");
-        assertFalse(VirtualCorpusCache.contains("named-vc1"));
+        testDeleteVC("named-vc1", "system", admin);
+        testDeleteVC("named-vc2", "system", admin);
     }
 
     private int testSearchWithoutRef_VC1 () throws KustvaktException {
@@ -122,16 +105,13 @@
         return JsonUtils.readTree(ent);
     }
 
-    @Test
-    public void testStatisticsWithRef () throws KustvaktException {
+    private void testStatisticsWithRef () throws KustvaktException {
         String corpusQuery = "availability = /CC.*/ & referTo named-vc1";
         Response response = target().path(API_VERSION).path("statistics")
                 .queryParam("cq", corpusQuery).request().get();
         String ent = response.readEntity(String.class);
         JsonNode node = JsonUtils.readTree(ent);
         assertEquals(2, node.at("/documents").asInt());
-        VirtualCorpusCache.delete("named-vc1");
-        assertFalse(VirtualCorpusCache.contains("named-vc1"));
     }
 
     @Test
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusTestBase.java b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusTestBase.java
index 8843e51..f3d92de 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusTestBase.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusTestBase.java
@@ -4,6 +4,7 @@
 import static org.hamcrest.CoreMatchers.not;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import java.util.List;
 import java.util.Map.Entry;
@@ -16,6 +17,7 @@
 import com.google.common.net.HttpHeaders;
 
 import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
+import de.ids_mannheim.korap.cache.VirtualCorpusCache;
 import de.ids_mannheim.korap.config.Attributes;
 import de.ids_mannheim.korap.constant.ResourceType;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
@@ -244,6 +246,24 @@
 //        assertEquals(Status.OK.getStatusCode(), response.getStatus());
         return response;
     }
+    
+	protected void testDeleteVC (String vcName, String vcCreator,
+			String deletedBy) throws KustvaktException {
+		deleteVC(vcName, vcCreator, deletedBy);
+		
+		Response response = target().path(API_VERSION).path("search")
+                .queryParam("q", "[orth=der]").queryParam("ql", "poliqarp")
+                .queryParam("cq", "referTo "+vcName).request().get();
+        
+        String ent = response.readEntity(String.class);
+        JsonNode node = JsonUtils.readTree(ent);
+		assertEquals(StatusCodes.NO_RESOURCE_FOUND,
+				node.at("/errors/0/0").asInt());
+		assertEquals("Virtual corpus "+vcCreator+"/"+vcName+" is not found.",
+				node.at("/errors/0/1").asText());
+        assertFalse(VirtualCorpusCache.contains(vcName));
+		
+	}
 
     protected void testResponseUnauthorized (Response response, String username)
             throws KustvaktException {