From 3aeb4eb4f8880f7e5799364c7b2f0ade44ccde25 Mon Sep 17 00:00:00 2001
From: Leonard <Leonard@Leonard.Leo>
Date: Tue, 16 Jun 2020 12:49:45 +0300
Subject: [PATCH] more testttttttttttttttt

---
 core/database.mv.db                           | Bin 122880 -> 167936 bytes
 .../Model/Map/Overworld.java                  |  21 +++--
 .../Test/Server/Persistence/CrewDAOTest.java  |   1 +
 .../Server/Persistence/OverworldDAOTest.java  |  54 +++++++++++++
 .../Server/Persistence/PlanetDAOTest.java     |  73 ++++++++++++++++++
 .../Server/Persistence/TraderDAOTest.java     |   2 +-
 6 files changed, 138 insertions(+), 13 deletions(-)
 create mode 100644 core/src/com/galaxytrucker/galaxytruckerreloaded/Test/Server/Persistence/OverworldDAOTest.java
 create mode 100644 core/src/com/galaxytrucker/galaxytruckerreloaded/Test/Server/Persistence/PlanetDAOTest.java

diff --git a/core/database.mv.db b/core/database.mv.db
index ca641dab7b3779b5718bac20e7526a27f31ae4fa..6a79fd6fa0459afb5b4d59b08e63d215d31e2170 100644
GIT binary patch
literal 167936
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
YKL4K<@c)@Gu$!v386n8K{;$XWe^j~I7XSbN

delta 12788
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
Q!gPhlrUS(K`F{6b0LULoA^-pY

diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Map/Overworld.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Map/Overworld.java
index ebde8497..1462415c 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Map/Overworld.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Model/Map/Overworld.java
@@ -1,10 +1,7 @@
 package com.galaxytrucker.galaxytruckerreloaded.Model.Map;
 
 
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import lombok.NonNull;
-import lombok.RequiredArgsConstructor;
+import lombok.*;
 
 import javax.persistence.*;
 import java.io.Serializable;
@@ -17,6 +14,8 @@ import java.util.Map;
 @NamedQueries({
         @NamedQuery(name = "Overworld.getByUsername", query = "select o from Overworld o where o.associatedUser =: name")
 })
+@Getter
+@Setter
 public class Overworld implements Serializable {
 
     /** ID */
@@ -24,21 +23,19 @@ public class Overworld implements Serializable {
     @Id
     private int id;
 
+    /** Seed */
+    @NonNull
+    private int seed;
+
     /** Username used as ID */
     @NonNull
     private String associatedUser;
 
     /** Stores planet and their location on the map */
-    @OneToMany
+    @OneToMany(cascade = CascadeType.ALL)
     private Map<String,Planet> planetMap;
 
     /** The start planet */
-    @NonNull
-    @OneToOne
+    @OneToOne(cascade = CascadeType.ALL)
     private Planet startPlanet;
-
-    /** Constructor */
-    public Overworld(int seed) {
-        planetMap = new HashMap<>();
-    }
 }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Test/Server/Persistence/CrewDAOTest.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Test/Server/Persistence/CrewDAOTest.java
index 4d91f5c2..943f53ae 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Test/Server/Persistence/CrewDAOTest.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Test/Server/Persistence/CrewDAOTest.java
@@ -12,6 +12,7 @@ import javax.persistence.EntityManager;
 import javax.xml.crypto.Data;
 import java.util.UUID;
 
+/** Test the crew database access object */
 public class CrewDAOTest {
 
 
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Test/Server/Persistence/OverworldDAOTest.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Test/Server/Persistence/OverworldDAOTest.java
new file mode 100644
index 00000000..f0688aa0
--- /dev/null
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Test/Server/Persistence/OverworldDAOTest.java
@@ -0,0 +1,54 @@
+package com.galaxytrucker.galaxytruckerreloaded.Test.Server.Persistence;
+
+import com.galaxytrucker.galaxytruckerreloaded.Model.Map.Overworld;
+import com.galaxytrucker.galaxytruckerreloaded.Server.Database.Database;
+import com.galaxytrucker.galaxytruckerreloaded.Server.Persistence.OverworldDAO;
+import org.junit.Assert;
+import org.junit.Test;
+
+import javax.persistence.EntityManager;
+import java.util.UUID;
+
+/** Test the overworld database access object */
+public class OverworldDAOTest {
+
+    /** EntityManager */
+    private EntityManager entityManager = Database.getEntityManager();
+
+    /** OverworldDAO */
+    private OverworldDAO overworldDAO = new OverworldDAO();
+
+    /** Test adding a new overworld to the database */
+    @Test
+    public void testPersist() {
+        try {
+            Overworld overworld = new Overworld(UUID.randomUUID().hashCode(), UUID.randomUUID().hashCode(), "test");
+            overworldDAO.persist(overworld);
+            entityManager.getTransaction().begin();
+            Overworld o2 = entityManager.find(Overworld.class,overworld.getId());
+            entityManager.getTransaction().commit();
+            Assert.assertEquals(overworld.getSeed(),o2.getSeed());
+        }
+        catch (Exception e){
+            e.printStackTrace();
+            throw new IllegalArgumentException(e.getMessage());
+        }
+    }
+
+    /** Test removing an existing overworld from the database */
+    @Test
+    public void testRemove(){
+        try {
+            Overworld overworld = new Overworld(UUID.randomUUID().hashCode(),UUID.randomUUID().hashCode(),"test");
+            overworldDAO.persist(overworld);
+            overworldDAO.remove(overworld);
+            entityManager.getTransaction().begin();
+            Assert.assertNull(entityManager.find(Overworld.class,overworld.getId()));
+            entityManager.getTransaction().commit();
+        }
+        catch (Exception e){
+            e.printStackTrace();
+            throw new IllegalArgumentException(e.getMessage());
+        }
+    }
+}
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Test/Server/Persistence/PlanetDAOTest.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Test/Server/Persistence/PlanetDAOTest.java
new file mode 100644
index 00000000..bd51e4fb
--- /dev/null
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Test/Server/Persistence/PlanetDAOTest.java
@@ -0,0 +1,73 @@
+package com.galaxytrucker.galaxytruckerreloaded.Test.Server.Persistence;
+
+import com.galaxytrucker.galaxytruckerreloaded.Model.Map.Planet;
+import com.galaxytrucker.galaxytruckerreloaded.Model.Map.PlanetEvent;
+import com.galaxytrucker.galaxytruckerreloaded.Model.Ship;
+import com.galaxytrucker.galaxytruckerreloaded.Server.Database.Database;
+import com.galaxytrucker.galaxytruckerreloaded.Server.Persistence.PlanetDAO;
+import org.junit.Assert;
+import org.junit.Test;
+
+import javax.persistence.EntityManager;
+import java.util.ArrayList;
+
+/** Test the planet database access object */
+public class PlanetDAOTest {
+
+    /** Entity manager */
+    private EntityManager entityManager = Database.getEntityManager();
+
+    /** Planet DAO */
+    private PlanetDAO planetDAO = new PlanetDAO();
+
+    /** Test adding a new planet to the database */
+    @Test
+    public void testPersist(){
+        Planet planet = new Planet(TraderDAOTest.planetNameGenerator(),0,0, PlanetEvent.VOID,new ArrayList<Ship>());
+        try {
+            planetDAO.persist(planet);
+            entityManager.getTransaction().begin();
+            Assert.assertEquals(planet.getName(),entityManager.find(Planet.class,planet.getName()).getName());
+            entityManager.getTransaction().commit();
+        }
+        catch (Exception e){
+            e.printStackTrace();
+            throw new IllegalArgumentException(e.getMessage());
+        }
+    }
+
+    /** Test editing a planet in the database */
+    @Test
+    public void testEdit(){
+        Planet planet = new Planet(TraderDAOTest.planetNameGenerator(),0,0, PlanetEvent.VOID,new ArrayList<Ship>());
+        try {
+            planetDAO.persist(planet);
+            planet.setEvent(PlanetEvent.SHOP);
+            planetDAO.update(planet);
+            entityManager.getTransaction().begin();
+            Assert.assertEquals(PlanetEvent.SHOP,entityManager.find(Planet.class,planet.getName()).getEvent());
+            entityManager.getTransaction().commit();
+        }
+        catch (Exception e){
+            e.printStackTrace();
+            throw new IllegalArgumentException(e.getMessage());
+        }
+    }
+
+    /** Test removing a planet from the database */
+    @Test
+    public void testRemove(){
+        Planet planet = new Planet(TraderDAOTest.planetNameGenerator(),0,0, PlanetEvent.VOID,new ArrayList<Ship>());
+        try {
+            planetDAO.persist(planet);
+            planetDAO.remove(planet);
+            entityManager.getTransaction().begin();
+            Assert.assertNull(entityManager.find(Planet.class,planet.getName()));
+            entityManager.getTransaction().commit();
+        }
+        catch (Exception e){
+            e.printStackTrace();
+            throw new IllegalArgumentException(e.getMessage());
+        }
+    }
+}
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Test/Server/Persistence/TraderDAOTest.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Test/Server/Persistence/TraderDAOTest.java
index de577e1b..72f50bfc 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Test/Server/Persistence/TraderDAOTest.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Test/Server/Persistence/TraderDAOTest.java
@@ -97,7 +97,7 @@ public class TraderDAOTest {
 
     /** Random planet name generator
      * @return a random planet name */
-    private String planetNameGenerator(){
+    public static String planetNameGenerator(){
         Random random = new Random();
         String alphabet = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
         alphabet = alphabet.replace(',',' ');
-- 
GitLab