From 405f8068c30a5e76b35744492ca33474249aab9c Mon Sep 17 00:00:00 2001
From: jobulcke <127748878+jobulcke@users.noreply.github.com>
Date: Thu, 21 Sep 2023 16:51:43 +0200
Subject: [PATCH] Feat/increase coverage (#11)
* feat: first tests added
* feat: all missing tests added
* feat: last fixes added
* feat: last small increase
---
spring-boot-backend/pom.xml | 8 ++
.../application/valueobjects/Triple.java | 20 ++++
.../triple/infra/TripleRepositoryImpl.java | 11 +--
.../triple/rest/TripleExceptionHandler.java | 23 +++++
.../triple/rest/TriplesController.java | 3 +-
.../src/main/resources/application.yaml | 22 +++++
.../services/TripleServiceImplTest.java | 91 +++++++++++++++++++
.../application/valueobjects/TripleTest.java | 52 +++++++++++
.../infra/TripleRepositoryImplTest.java | 76 ++++++++++++++++
.../triple/rest/TriplesControllerTest.java | 73 +++++++++++++++
vue-frontend/src/components/map/useMarkers.js | 7 --
vue-frontend/vite.config.js | 1 -
12 files changed, 370 insertions(+), 17 deletions(-)
create mode 100644 spring-boot-backend/src/main/java/be/informatievlaanderen/vsds/demonstrator/triple/rest/TripleExceptionHandler.java
create mode 100644 spring-boot-backend/src/main/resources/application.yaml
create mode 100644 spring-boot-backend/src/test/java/be/informatievlaanderen/vsds/demonstrator/triple/application/services/TripleServiceImplTest.java
create mode 100644 spring-boot-backend/src/test/java/be/informatievlaanderen/vsds/demonstrator/triple/application/valueobjects/TripleTest.java
create mode 100644 spring-boot-backend/src/test/java/be/informatievlaanderen/vsds/demonstrator/triple/infra/TripleRepositoryImplTest.java
create mode 100644 spring-boot-backend/src/test/java/be/informatievlaanderen/vsds/demonstrator/triple/rest/TriplesControllerTest.java
diff --git a/spring-boot-backend/pom.xml b/spring-boot-backend/pom.xml
index a132b11..4511e75 100644
--- a/spring-boot-backend/pom.xml
+++ b/spring-boot-backend/pom.xml
@@ -26,6 +26,7 @@
5.10.0
5.4.0
7.13.0
+ 2.35.0
4.3.3
@@ -147,6 +148,13 @@
junit-platform-suite
${junit-platform-suite.version}
+
+ com.github.tomakehurst
+ wiremock-jre8-standalone
+ ${wiremock.version}
+ test
+
+
diff --git a/spring-boot-backend/src/main/java/be/informatievlaanderen/vsds/demonstrator/triple/application/valueobjects/Triple.java b/spring-boot-backend/src/main/java/be/informatievlaanderen/vsds/demonstrator/triple/application/valueobjects/Triple.java
index b0db2ac..ee064c5 100644
--- a/spring-boot-backend/src/main/java/be/informatievlaanderen/vsds/demonstrator/triple/application/valueobjects/Triple.java
+++ b/spring-boot-backend/src/main/java/be/informatievlaanderen/vsds/demonstrator/triple/application/valueobjects/Triple.java
@@ -11,6 +11,26 @@ public Triple(String subject, String predicate, String object) {
this.object = object;
}
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ Triple triple = (Triple) o;
+
+ if (!subject.equals(triple.subject)) return false;
+ if (!predicate.equals(triple.predicate)) return false;
+ return object.equals(triple.object);
+ }
+
+ @Override
+ public int hashCode() {
+ int result = subject.hashCode();
+ result = 31 * result + predicate.hashCode();
+ result = 31 * result + object.hashCode();
+ return result;
+ }
+
public String getSubject() {
return subject;
}
diff --git a/spring-boot-backend/src/main/java/be/informatievlaanderen/vsds/demonstrator/triple/infra/TripleRepositoryImpl.java b/spring-boot-backend/src/main/java/be/informatievlaanderen/vsds/demonstrator/triple/infra/TripleRepositoryImpl.java
index 0a6f4ba..55cf72e 100644
--- a/spring-boot-backend/src/main/java/be/informatievlaanderen/vsds/demonstrator/triple/infra/TripleRepositoryImpl.java
+++ b/spring-boot-backend/src/main/java/be/informatievlaanderen/vsds/demonstrator/triple/infra/TripleRepositoryImpl.java
@@ -12,13 +12,13 @@
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.eclipse.rdf4j.model.Model;
-import org.eclipse.rdf4j.model.impl.TreeModelFactory;
import org.eclipse.rdf4j.rio.RDFFormat;
import org.eclipse.rdf4j.rio.Rio;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
@Repository
public class TripleRepositoryImpl implements TripleRepository {
@@ -42,13 +42,10 @@ public MemberDescription getById(String id) {
//Execute and get the response.
HttpResponse response = httpclient.execute(httppost);
- HttpEntity entity = response.getEntity();
+ HttpEntity entity = Objects.requireNonNull(response.getEntity());
- if (entity != null) {
- Model model = Rio.parse(entity.getContent(), RDFFormat.NTRIPLES);
- return new MemberDescription(id, model);
- }
- return new MemberDescription(id, new TreeModelFactory().createEmptyModel());
+ Model model = Rio.parse(entity.getContent(), RDFFormat.NTRIPLES);
+ return new MemberDescription(id, model);
} catch (Exception e) {
throw new TripleFetchFailedException(id, e);
}
diff --git a/spring-boot-backend/src/main/java/be/informatievlaanderen/vsds/demonstrator/triple/rest/TripleExceptionHandler.java b/spring-boot-backend/src/main/java/be/informatievlaanderen/vsds/demonstrator/triple/rest/TripleExceptionHandler.java
new file mode 100644
index 0000000..36130f7
--- /dev/null
+++ b/spring-boot-backend/src/main/java/be/informatievlaanderen/vsds/demonstrator/triple/rest/TripleExceptionHandler.java
@@ -0,0 +1,23 @@
+package be.informatievlaanderen.vsds.demonstrator.triple.rest;
+
+import be.informatievlaanderen.vsds.demonstrator.triple.infra.exceptions.TripleFetchFailedException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.context.request.WebRequest;
+import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
+
+@ControllerAdvice
+public class TripleExceptionHandler extends ResponseEntityExceptionHandler {
+ private static final Logger log = LoggerFactory.getLogger(TripleExceptionHandler.class);
+
+ @ExceptionHandler(value = TripleFetchFailedException.class)
+ protected ResponseEntity