From 4d4f6d735ba018af12ec2e75608d2c401b9faeb9 Mon Sep 17 00:00:00 2001
From: "michael.breu" <michael.breu@uibk.ac.at>
Date: Fri, 9 Apr 2021 14:58:18 +0200
Subject: [PATCH] More Tests

---
 .../gitsearch/service/SearchServiceIT.java    |  2 +
 .../service/ShoppingBasketServiceIT.java      | 53 ++++++++++++++++++-
 2 files changed, 54 insertions(+), 1 deletion(-)

diff --git a/src/test/java/at/ac/uibk/gitsearch/service/SearchServiceIT.java b/src/test/java/at/ac/uibk/gitsearch/service/SearchServiceIT.java
index 38c7dcb44..e5b1e24a1 100644
--- a/src/test/java/at/ac/uibk/gitsearch/service/SearchServiceIT.java
+++ b/src/test/java/at/ac/uibk/gitsearch/service/SearchServiceIT.java
@@ -20,6 +20,7 @@ import java.util.List;
 import org.codeability.sharing.plugins.api.SharingPluginConfig;
 import org.elasticsearch.client.RestHighLevelClient;
 import org.elasticsearch.node.NodeValidationException;
+import org.junit.Assert;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -75,6 +76,7 @@ public class SearchServiceIT {
 		SearchInputDTO searchQuery = new SearchInputDTO(null, searchMetadata, null, null, null, 0);
 		SearchResultsDTO searchResultPage = searchService.searchResultPage(searchQuery, 0, SearchInputDTO.PAGE_SIZE);
 		
+		Assert.assertTrue("At least one hit?", searchResultPage.getSearchResult().size() >= 1);
 		LOGGER.info("found {} hits for all", searchResultPage.getHitCount());
 	}
 
diff --git a/src/test/java/at/ac/uibk/gitsearch/service/ShoppingBasketServiceIT.java b/src/test/java/at/ac/uibk/gitsearch/service/ShoppingBasketServiceIT.java
index a7e618b34..d1d39710e 100644
--- a/src/test/java/at/ac/uibk/gitsearch/service/ShoppingBasketServiceIT.java
+++ b/src/test/java/at/ac/uibk/gitsearch/service/ShoppingBasketServiceIT.java
@@ -1,28 +1,52 @@
 package at.ac.uibk.gitsearch.service;
 
+import static at.ac.uibk.gitsearch.web.rest.AccountResourceIT.TEST_USER_LOGIN;
+
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.codeability.sharing.plugins.api.ShoppingBasket;
+import org.elasticsearch.node.NodeValidationException;
 import org.junit.Assert;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.security.test.context.support.WithMockUser;
 
 import at.ac.uibk.gitsearch.GitsearchApp;
+import at.ac.uibk.gitsearch.repository.search.testESService.ElasticSearchTestServerConfiguration;
+import at.ac.uibk.gitsearch.service.ShoppingBasketService.ShoppingBasketInfoDTO;
+import at.ac.uibk.gitsearch.service.ShoppingBasketService.ShoppingBasketRedirectInfoDTO;
+import at.ac.uibk.gitsearch.service.dto.SearchInputDTO;
+import at.ac.uibk.gitsearch.service.dto.SearchInputMetadataDTO;
+import at.ac.uibk.gitsearch.service.dto.SearchResultDTO;
+import at.ac.uibk.gitsearch.service.dto.SearchResultsDTO;
 
 @SpringBootTest(classes = GitsearchApp.class)
+@WithMockUser(value = TEST_USER_LOGIN, authorities = "sharing")
 public class ShoppingBasketServiceIT {
 	
 	private static final String TEST_ZIP_LOCATION = "./testData/junit-quality-tests-exercise-master.zip";
 	@Autowired
 	protected ShoppingBasketService shoppingBasketService;
+	@Autowired
+	private SearchService searchService;
+
 	
 	private static final Logger log = LoggerFactory.getLogger(ShoppingBasketServiceIT.class);
-	
+
+	@BeforeAll
+	public static void setUpESServer() throws IOException, NodeValidationException {
+		ElasticSearchTestServerConfiguration.getTestInstance().startTestNode();
+	}
+
     @Test
 	public void testRepackage() throws IOException {
 		
@@ -45,6 +69,33 @@ public class ShoppingBasketServiceIT {
 		
 		testRepackagedZip.close();
 	}
+    
+    @Test
+    public void testGetBasket() throws IOException {
+    	
+    	// just load everything from index :-)
+		final SearchInputMetadataDTO searchMetadata = new SearchInputMetadataDTO(null, null, null, null, null);
+		SearchInputDTO searchQuery = new SearchInputDTO(null, searchMetadata, null, null, null, 0);
+		SearchResultsDTO searchResultPage = searchService.searchResultPage(searchQuery, 0, SearchInputDTO.PAGE_SIZE);
+		Assert.assertTrue("At least one hit?", searchResultPage.getSearchResult().size() >= 1);
+    	
+    	ShoppingBasketInfoDTO sbi = new ShoppingBasketInfoDTO(searchResultPage.getSearchResult().toArray(new SearchResultDTO[] {}));
+    	
+    	ShoppingBasketRedirectInfoDTO redInfo = shoppingBasketService.getRedirectInfo(sbi, "http://unused/unused");
+    	
+    	Pattern tokenParser = Pattern.compile("/([^/?]*)\\?");
+    	final Matcher matcher = tokenParser.matcher(redInfo.getRedirectURL());
+    	Assert.assertTrue(matcher.find());
+    	String token=matcher.group(1);
+    	final ShoppingBasket basket = shoppingBasketService.getBasket(token);
+    	
+    	int count=0;
+    	for(SearchResultDTO hitResult: searchResultPage.getSearchResult()) {
+    		// we assume same sequence
+    		Assert.assertEquals(basket.exerciseInfo[count].title, hitResult.getMetadata().getTitle());
+    		count++;
+    	}
+    }
 	
 
 }
-- 
GitLab