You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
4.0 KiB

  1. package de.fd.fh.server.game;
  2. import com.mongodb.MongoClient;
  3. import com.mongodb.client.MongoDatabase;
  4. import de.fd.fh.server.user.UserId;
  5. import dev.morphia.Datastore;
  6. import dev.morphia.Key;
  7. import dev.morphia.Morphia;
  8. import dev.morphia.mapping.MappedClass;
  9. import org.junit.jupiter.api.AfterAll;
  10. import org.junit.jupiter.api.BeforeAll;
  11. import org.junit.jupiter.api.Test;
  12. import java.util.HashSet;
  13. import java.util.List;
  14. import java.util.Set;
  15. import static org.junit.jupiter.api.Assertions.assertEquals;
  16. import static org.junit.jupiter.api.Assertions.assertNotNull;
  17. class GameRepositoryTest
  18. {
  19. public static final String DB_NAME = "db_for_morphia";
  20. private static MongoClient mongo;
  21. private static MongoDatabase db;
  22. private static Datastore ds;
  23. private static final Morphia morphia = new Morphia();
  24. private static GameRepository repository;
  25. // @BeforeAll
  26. public static void beforeClass() {
  27. mongo = new MongoClient();
  28. db = mongo.getDatabase(DB_NAME);
  29. ds = morphia.createDatastore(mongo, db.getName());
  30. repository = new GameRepository(ds);
  31. }
  32. // @AfterAll
  33. public static void afterClass() {
  34. cleanup();
  35. mongo.close();
  36. }
  37. private static void cleanup() {
  38. for (final MappedClass mc : morphia.getMapper().getMappedClasses()) {
  39. db.getCollection(mc.getCollectionName()).drop();
  40. }
  41. }
  42. // @Test
  43. void saveTest()
  44. {
  45. final Set<Field> fields = new HashSet<>();
  46. fields.add(new Field(0, 0, Field.Color.BLACK, new Figure(Figure.Type.BISHOP, UserId.of("12345"))));
  47. fields.add(new Field(0, 2, Field.Color.WHITE, new Figure(Figure.Type.BISHOP, UserId.of("98765"))));
  48. final Game game = new Game(GameId.random(), UserId.of("12345"), UserId.of("98765"), UserId.of("12345"), fields, UserId.of("12345"));
  49. final Key<Game> key = repository.save(game);
  50. assertEquals(Game.class, key.getType());
  51. final Game result = ds.find(key.getType()).filter("id", key.getId()).first();
  52. assertNotNull(result);
  53. assertEquals("12345", result.getWhitePlayer().getIdentifier());
  54. assertEquals("12345", result.getCurrentPlayer().getIdentifier());
  55. assertEquals("98765", result.getBlackPlayer().getIdentifier());
  56. assertEquals("12345", result.getWinner().getIdentifier());
  57. assertNotNull(result.getId());
  58. assertEquals(2, result.getFields().size());
  59. }
  60. // @Test
  61. void findByGameIdTest()
  62. {
  63. final Set<Field> fields = new HashSet<>();
  64. fields.add(new Field(0, 0, Field.Color.BLACK, new Figure(Figure.Type.BISHOP, UserId.of("12345"))));
  65. fields.add(new Field(0, 2, Field.Color.WHITE, new Figure(Figure.Type.BISHOP, UserId.of("98765"))));
  66. final Game game = new Game(GameId.of("4242"), UserId.of("12345"), UserId.of("98765"), UserId.of("12345"), fields, UserId.of("12345"));
  67. ds.save(game);
  68. final Game result = repository.findByGameId(GameId.of("4242"));
  69. assertNotNull(result);
  70. assertEquals("12345", result.getWhitePlayer().getIdentifier());
  71. assertEquals("12345", result.getCurrentPlayer().getIdentifier());
  72. assertEquals("98765", result.getBlackPlayer().getIdentifier());
  73. assertEquals("12345", result.getWinner().getIdentifier());
  74. assertNotNull(result.getId());
  75. assertEquals(2, result.getFields().size());
  76. }
  77. // @Test
  78. void getRunningGamesOfPlayerTest()
  79. {
  80. final Set<Field> fields = new HashSet<>();
  81. fields.add(new Field(0, 0, Field.Color.BLACK, new Figure(Figure.Type.BISHOP, UserId.of("12345"))));
  82. fields.add(new Field(0, 2, Field.Color.WHITE, new Figure(Figure.Type.BISHOP, UserId.of("98765"))));
  83. final Game game = new Game(GameId.of("4242"), UserId.of("12345"), UserId.of("98765"), UserId.of("12345"), fields, null);
  84. ds.save(game);
  85. final List<Game> result = repository.findRunningGamesOfPlayer(UserId.of("98765"));
  86. assertNotNull(result);
  87. assertEquals(1, result.size());
  88. }
  89. }