From 3ba614577f14c95a2492c919cb50f5c1699b8de4 Mon Sep 17 00:00:00 2001 From: Steffen Nitschke Date: Tue, 2 Feb 2021 23:34:53 +0100 Subject: [PATCH] new GameRepository with findRunningGamesOfPlayer-Method and Tests --- .../de/fd/fh/server/game/GameRepository.java | 17 +++++++++++++++- .../java/de/fd/fh/server/game/FieldTest.java | 20 +++++++++++++++++++ .../java/de/fd/fh/server/game/FigureTest.java | 19 ++++++++++++++++++ .../fd/fh/server/game/GameRepositoryTest.java | 17 ++++++++++++++++ 4 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 fh.fd.ci.server/src/test/java/de/fd/fh/server/game/FieldTest.java create mode 100644 fh.fd.ci.server/src/test/java/de/fd/fh/server/game/FigureTest.java diff --git a/fh.fd.ci.server/src/main/java/de/fd/fh/server/game/GameRepository.java b/fh.fd.ci.server/src/main/java/de/fd/fh/server/game/GameRepository.java index 977ae8c..5fb3d05 100644 --- a/fh.fd.ci.server/src/main/java/de/fd/fh/server/game/GameRepository.java +++ b/fh.fd.ci.server/src/main/java/de/fd/fh/server/game/GameRepository.java @@ -1,9 +1,13 @@ package de.fd.fh.server.game; import com.mongodb.MongoClient; +import de.fd.fh.server.user.UserId; import dev.morphia.Datastore; import dev.morphia.Key; import dev.morphia.Morphia; +import dev.morphia.query.Query; + +import java.util.List; public class GameRepository { @@ -11,7 +15,7 @@ public class GameRepository public GameRepository() { - System.out.println("AccessRepo"); + System.out.println("GameRepo"); final Morphia morphia = new Morphia(); morphia.mapPackage("de.fd.fh.server.game"); @@ -35,4 +39,15 @@ public class GameRepository return datastore.createQuery(Game.class) .field("id.identifier").equal(gameId.getIdentifier()).first(); } + + List findRunningGamesOfPlayer(final UserId userId) + { + final Query query = datastore.createQuery(Game.class); + query.or( + query.criteria("whitePlayer.identifier").equal(userId.getIdentifier()), + query.criteria("blackPlayer.identifier").equal(userId.getIdentifier())); + query.and(query.criteria("winner").doesNotExist()); + + return query.find().toList(); + } } diff --git a/fh.fd.ci.server/src/test/java/de/fd/fh/server/game/FieldTest.java b/fh.fd.ci.server/src/test/java/de/fd/fh/server/game/FieldTest.java new file mode 100644 index 0000000..43fbea1 --- /dev/null +++ b/fh.fd.ci.server/src/test/java/de/fd/fh/server/game/FieldTest.java @@ -0,0 +1,20 @@ +package de.fd.fh.server.game; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class FieldTest +{ + @Test + void fieldInitTest() + { + final Field field = new Field(1, 2, Field.Color.WHITE, new Figure()); + + assertEquals(1, field.getX()); + assertEquals(2, field.getY()); + assertEquals(Field.Color.WHITE, field.getColor()); + assertEquals("WHITE", field.getColor().name()); + assertNotNull(field.getFigure()); + } +} \ No newline at end of file diff --git a/fh.fd.ci.server/src/test/java/de/fd/fh/server/game/FigureTest.java b/fh.fd.ci.server/src/test/java/de/fd/fh/server/game/FigureTest.java new file mode 100644 index 0000000..74c6cfd --- /dev/null +++ b/fh.fd.ci.server/src/test/java/de/fd/fh/server/game/FigureTest.java @@ -0,0 +1,19 @@ +package de.fd.fh.server.game; + +import de.fd.fh.server.user.UserId; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class FigureTest +{ + @Test + void figureInitTest() + { + final Figure figure = new Figure(Figure.Type.KING, UserId.of("12345")); + + assertEquals(UserId.of("12345"), figure.getPlayer()); + assertEquals(Figure.Type.KING, figure.getType()); + assertEquals("KING", figure.getType().name()); + } +} \ No newline at end of file diff --git a/fh.fd.ci.server/src/test/java/de/fd/fh/server/game/GameRepositoryTest.java b/fh.fd.ci.server/src/test/java/de/fd/fh/server/game/GameRepositoryTest.java index fec9db6..4eb2fd1 100644 --- a/fh.fd.ci.server/src/test/java/de/fd/fh/server/game/GameRepositoryTest.java +++ b/fh.fd.ci.server/src/test/java/de/fd/fh/server/game/GameRepositoryTest.java @@ -12,6 +12,7 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import java.util.HashSet; +import java.util.List; import java.util.Set; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -94,4 +95,20 @@ class GameRepositoryTest assertEquals(2, result.getFields().size()); } + @Test + void getRunningGamesOfPlayerTest() + { + final Set fields = new HashSet<>(); + fields.add(new Field(0, 0, Field.Color.BLACK, new Figure(Figure.Type.BISHOP, UserId.of("12345")))); + fields.add(new Field(0, 2, Field.Color.WHITE, new Figure(Figure.Type.BISHOP, UserId.of("98765")))); + + final Game game = new Game(GameId.of("4242"), UserId.of("12345"), UserId.of("98765"), UserId.of("12345"), fields, null); + + ds.save(game); + + final List result = repository.findRunningGamesOfPlayer(UserId.of("98765")); + + assertNotNull(result); + assertEquals(1, result.size()); + } } \ No newline at end of file