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.
114 lines
4.0 KiB
114 lines
4.0 KiB
package de.fd.fh.server.game;
|
|
|
|
import com.mongodb.MongoClient;
|
|
import com.mongodb.client.MongoDatabase;
|
|
import de.fd.fh.server.user.UserId;
|
|
import dev.morphia.Datastore;
|
|
import dev.morphia.Key;
|
|
import dev.morphia.Morphia;
|
|
import dev.morphia.mapping.MappedClass;
|
|
import org.junit.jupiter.api.AfterAll;
|
|
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;
|
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
|
|
class GameRepositoryTest
|
|
{
|
|
public static final String DB_NAME = "db_for_morphia";
|
|
|
|
private static MongoClient mongo;
|
|
private static MongoDatabase db;
|
|
private static Datastore ds;
|
|
private static final Morphia morphia = new Morphia();
|
|
|
|
private static GameRepository repository;
|
|
|
|
// @BeforeAll
|
|
public static void beforeClass() {
|
|
mongo = new MongoClient();
|
|
db = mongo.getDatabase(DB_NAME);
|
|
ds = morphia.createDatastore(mongo, db.getName());
|
|
repository = new GameRepository(ds);
|
|
}
|
|
|
|
// @AfterAll
|
|
public static void afterClass() {
|
|
cleanup();
|
|
mongo.close();
|
|
}
|
|
|
|
private static void cleanup() {
|
|
for (final MappedClass mc : morphia.getMapper().getMappedClasses()) {
|
|
db.getCollection(mc.getCollectionName()).drop();
|
|
}
|
|
}
|
|
|
|
|
|
// @Test
|
|
void saveTest()
|
|
{
|
|
final Set<Field> 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.random(), UserId.of("12345"), UserId.of("98765"), UserId.of("12345"), fields, UserId.of("12345"));
|
|
|
|
final Key<Game> key = repository.save(game);
|
|
|
|
assertEquals(Game.class, key.getType());
|
|
final Game result = ds.find(key.getType()).filter("id", key.getId()).first();
|
|
|
|
assertNotNull(result);
|
|
assertEquals("12345", result.getWhitePlayer().getIdentifier());
|
|
assertEquals("12345", result.getCurrentPlayer().getIdentifier());
|
|
assertEquals("98765", result.getBlackPlayer().getIdentifier());
|
|
assertEquals("12345", result.getWinner().getIdentifier());
|
|
assertNotNull(result.getId());
|
|
assertEquals(2, result.getFields().size());
|
|
}
|
|
|
|
// @Test
|
|
void findByGameIdTest()
|
|
{
|
|
final Set<Field> 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, UserId.of("12345"));
|
|
|
|
ds.save(game);
|
|
|
|
final Game result = repository.findByGameId(GameId.of("4242"));
|
|
|
|
assertNotNull(result);
|
|
assertEquals("12345", result.getWhitePlayer().getIdentifier());
|
|
assertEquals("12345", result.getCurrentPlayer().getIdentifier());
|
|
assertEquals("98765", result.getBlackPlayer().getIdentifier());
|
|
assertEquals("12345", result.getWinner().getIdentifier());
|
|
assertNotNull(result.getId());
|
|
assertEquals(2, result.getFields().size());
|
|
}
|
|
|
|
// @Test
|
|
void getRunningGamesOfPlayerTest()
|
|
{
|
|
final Set<Field> 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<Game> result = repository.findRunningGamesOfPlayer(UserId.of("98765"));
|
|
|
|
assertNotNull(result);
|
|
assertEquals(1, result.size());
|
|
}
|
|
}
|