super NitrpgTestHelper
fun test_add_achievement do
- var db = load_db("test_add_achievement")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
game.add_achievement(a1)
game.add_achievement(a2)
assert game.load_achievements.length == 2
- db.drop
end
fun test_load_achievement do
- var db = load_db("test_load_achievement")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
game.add_achievement(a1)
assert game.load_achievement(a1.id).id == "test_id1"
assert game.load_achievement(a2.id) == null
- db.drop
end
fun test_load_achievements do
- var db = load_db("test_load_achievements")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
var res = game.load_achievements
assert res.length == 2
for a in res.values do assert ok.has(a.id)
- db.drop
end
end
super NitrpgTestHelper
fun test_add_achievement do
- var db = load_db("test_add_achievement")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var player1 = new Player(game, "Morriar")
var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
player1.add_achievement(a1)
player1.add_achievement(a2)
assert player1.load_achievements.length == 2
- db.drop
end
fun test_load_achievement do
- var db = load_db("test_load_achievement")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var player1 = new Player(game, "Morriar")
var player2 = new Player(game, "xymus")
assert player1.load_achievement(a2.id) == null
assert player2.load_achievement(a2.id).id == "test_id2"
assert player2.load_achievement(a1.id) == null
- db.drop
end
fun test_load_achievements do
- var db = load_db("test_load_achievements")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var player1 = new Player(game, "Morriar")
var player2 = new Player(game, "xymus")
var res = player1.load_achievements
assert res.length == 2
for a in res.values do assert ok.has(a.id)
- db.drop
end
end
super NitrpgTestHelper
fun test_init do
- var db = load_db("test_init")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var a = new Achievement(game, "test_id", "test_name", "test_desc", 15)
assert a.id == "test_id"
assert a.name == "test_name"
assert a.desc == "test_desc"
assert a.reward == 15
- db.drop
end
fun test_init_from_json do
- var db = load_db("test_init_from_json")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var json = """{
"id": "test_id",
assert a.name == "test_name"
assert a.desc == "test_desc"
assert a.reward == 15
- db.drop
end
end
super NitrpgTestHelper
fun test_add_event do
- var db = load_db("test_add_event")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var event1 = new GameEvent(game, "test_kind", new JsonObject)
var event2 = new GameEvent(game, "test_kind", new JsonObject)
game.add_event(event1)
game.add_event(event2)
assert game.load_events.length == 2
- db.drop
end
fun test_load_event do
- var db = load_db("test_load_event")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var event1 = new GameEvent(game, "test_kind", new JsonObject)
var event2 = new GameEvent(game, "test_kind", new JsonObject)
game.add_event(event1)
assert game.load_event(event1.internal_id).kind == "test_kind"
assert game.load_event(event2.internal_id) == null
- db.drop
end
fun test_load_events do
- var db = load_db("test_load_events")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var event1 = new GameEvent(game, "test_kind", new JsonObject)
var event2 = new GameEvent(game, "test_kind", new JsonObject)
var res = game.load_events
assert res.length == 2
for event in res do assert ok.has(event.internal_id)
- db.drop
end
end
super NitrpgTestHelper
fun test_add_event do
- var db = load_db("test_add_event")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var player1 = new Player(game, "Morriar")
var player2 = new Player(game, "xymus")
player1.add_event(event2)
assert player1.load_events.length == 2
assert player2.load_events.length == 0
- db.drop
end
fun test_load_event do
- var db = load_db("test_load_event")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var player1 = new Player(game, "Morriar")
var player2 = new Player(game, "xymus")
assert player1.load_event(event2.internal_id) == null
assert player2.load_event(event2.internal_id).kind == "test_kind"
assert player2.load_event(event1.internal_id) == null
- db.drop
end
fun test_load_events do
- var db = load_db("test_load_events")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var player1 = new Player(game, "Morriar")
var player2 = new Player(game, "xymus")
assert player2.load_events.length == 1
var ok = [event1.internal_id, event2.internal_id]
for event in player1.load_events do assert ok.has(event.internal_id)
- db.drop
end
end
super NitrpgTestHelper
fun test_init do
- var db = load_db("test_init")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var event = new GameEvent(game, "test_kind", new JsonObject)
assert event.to_json["kind"] == "test_kind"
- db.drop
end
fun test_init_from_json do
- var db = load_db("test_init_from_json")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var json = """{
"internal_id": "test_id",
assert event.kind == "test_kind"
assert event.data.to_json == """{"test_field":"test_value"}"""
assert event.time.to_s == "2015-02-05T00:00:00Z"
- db.drop
end
end
super NitrpgTestHelper
fun test_add_player do
- var db = load_db("test_add_player")
+ var db = gen_test_db
var game = load_game("privat/nit", db)
var users = ["Morriar", "xymus"]
for name in users do
for player in res do
assert users.has(player.name)
end
- db.drop
end
fun test_load_player do
- var db = load_db("test_load_player")
+ var db = gen_test_db
var game = load_game("privat/nit", db)
var ogame = load_game("Morriar/nit", db)
assert game.load_player("Morriar").name == "Morriar"
assert ogame.load_player("privat").name == "privat"
assert ogame.load_player("Morriar") == null
- db.drop
end
fun test_load_players do
- var db = load_db("test_load_players")
+ var db = gen_test_db
var game = load_game("privat/nit", db)
var ogame = load_game("Morriar/nit", db)
var players = game.load_players
var ok = ["Morriar", "xymus"]
for player in players.values do assert ok.has(player.name)
- db.drop
end
end
super NitrpgTestHelper
fun test_init do
- var db = load_db("test_init")
+ var db = gen_test_db
var game = load_game("privat/nit", db)
var player = new Player(game, "Morriar")
assert player.name == "Morriar"
assert player.user.login == "Morriar"
assert player.nitcoins == 0
- db.drop
end
fun test_init_from_json do
- var db = load_db("test_init_from_json")
+ var db = gen_test_db
var game = load_game("privat/nit", db)
var json = """{"name": "Morriar", "nitcoins": 10}""".parse_json
var player = new Player.from_json(game, json.as(JsonObject))
assert player.name == "Morriar"
assert player.user.login == "Morriar"
assert player.nitcoins == 10
- db.drop
end
fun test_save do
- var db = load_db("test_save")
+ var db = gen_test_db
var game = load_game("privat/nit", db)
var json = """{"name": "Morriar", "nitcoins": 10}""".parse_json.as(JsonObject)
var player = new Player.from_json(game, json)
player.save
assert game.db.collection("players").find(json) != null
- db.drop
end
fun test_game_add_player do
- var db = load_db("test_game_add_player")
+ var db = gen_test_db
var game = load_game("privat/nit", db)
game.add_player(game.api.load_user("Morriar").as(not null))
var json = """{"name": "Morriar"}""".parse_json.as(JsonObject)
assert game.db.collection("players").find(json) != null
- db.drop
end
fun test_game_load_player do
- var db = load_db("test_game_load_player")
+ var db = gen_test_db
var game = load_game("privat/nit", db)
var json = """{"name": "Morriar", "nitcoins": 10}""".parse_json.as(JsonObject)
var player = new Player.from_json(game, json)
var oplayer = game.load_player("Morriar")
assert oplayer != null
assert player.nitcoins == oplayer.nitcoins
- db.drop
end
end
super NitrpgTestHelper
fun test_player do
- var db = load_db("test_player")
+ var db = gen_test_db
var api = new GithubAPI(get_github_oauth)
var game = load_game("privat/nit", db)
var user = api.load_user("Morriar")
var player = user.player(game)
assert player.name == "Morriar"
game.clear
- db.drop
end
end
var mongo = new MongoClient("mongodb://localhost:27017/")
# Load a new test database by with a name
- fun load_db(name: String): MongoDb do return mongo.database(name)
+ private fun load_db(name: String): MongoDb do return mongo.database(name)
# Load a repo by its name.
fun load_repo(name: String): Repo do
game.db_name = db.name
return game
end
+
+ # Stack of db used for testing.
+ var test_dbs = new Array[MongoDb]
+
+ # Gen a test db with a random name (to avoid race conditions).
+ fun gen_test_db: MongoDb do
+ var db_name = "test_nitrpg_{get_time}_{1000.rand}"
+ var db = load_db(db_name)
+ test_dbs.add db
+ return db
+ end
+
+ # Should be called after your test.
+ fun drop_test_db do
+ var db = test_dbs.pop
+ db.drop
+ end
+
+ redef fun after_test do drop_test_db
end
var repo: Repo is lazy do return load_repo("Morriar/nit")
fun test_game_issue_stats do
- var db = load_db("test_game_issue_stats")
+ var db = gen_test_db
var l = new DummyListener
l.add_reactor(new StatisticsReactor)
game = load_game("Morriar/nit", db)
assert game.stats.overall["issues"] == 1
assert game.stats.overall["issues_open"] == 1
- db.drop
end
fun test_player_issue_stats do
- var db = load_db("test_player_issue_stats")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var l = new DummyListener
l.add_reactor(new StatisticsReactor)
player = new Player(game, "Morriar")
assert player.stats.overall["issues"] == 1
assert player.stats.overall["issues_open"] == 1
- db.drop
end
fun test_game_pr_stats do
- var db = load_db("test_game_pr_stats")
+ var db = gen_test_db
var l = new DummyListener
l.add_reactor(new StatisticsReactor)
assert game.stats.overall["pulls"] == 1
assert game.stats.overall["pulls_open"] == 0
assert game.stats.overall["commits"] == 2
- db.drop
end
fun test_game_issue_comment_stats do
- var db = load_db("test_game_issue_comment_stats")
+ var db = gen_test_db
var l = new DummyListener
l.add_reactor(new StatisticsReactor)
game = load_game("Morriar/nit", db)
assert game.stats.overall["comments"] == 2
assert game.stats.overall["reviews"] == 1
- db.drop
end
fun test_player_pull_reactor do
- var db = load_db("test_player_pull_reactor")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var l = new DummyListener
l.add_reactor(new PlayerReactor)
l.apply_event(generator.pull_close(pull), db)
player = new Player(game, "itch76")
assert player.stats.overall["nitcoins"] == 12
- db.drop
end
fun test_player_review_reactor do
- var db = load_db("test_player_review_reactor")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var l = new DummyListener
l.add_reactor(new PlayerReactor)
l.apply_event(generator.issue_comment_event(pull, comment), db)
player = new Player(game, "Morriar")
assert player.stats.overall["nitcoins"] == 4
- db.drop
end
fun test_X_issues_achievements do
- var db = load_db("test_X_issues_achievements")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var l = new DummyListener
l.add_reactor(new StatisticsReactor)
end
var player = new Player(game, "Morriar")
assert player.stats.overall["nitcoins"] == 1110
- db.drop
end
fun test_X_pulls_achievements do
- var db = load_db("test_X_pulls_achievements")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var l = new DummyListener
l.add_reactor(new StatisticsReactor)
end
var player = new Player(game, "itch76")
assert player.stats.overall["nitcoins"] == 1110
- db.drop
end
fun test_X_commits_achievements do
- var db = load_db("test_X_commits_achievements")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var l = new DummyListener
l.add_reactor(new StatisticsReactor)
end
var player = new Player(game, "itch76")
assert player.stats.overall["nitcoins"] == 11110
- db.drop
end
fun test_X_comments_achievements do
- var db = load_db("test_X_comments_achievements")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var l = new DummyListener
l.add_reactor(new StatisticsReactor)
end
var player = new Player(game, "Morriar")
assert player.stats.overall["nitcoins"] == 1110
- db.drop
end
fun test_issues_achievements do
- var db = load_db("test_issues_achievements")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var l = new DummyListener
l.add_reactor(new IssueAboutNitdoc, new IssueAboutFFI)
assert player.load_achievements.has_key("issue_about_nitdoc")
assert player.load_achievements.has_key("issue_about_ffi")
assert player.stats.overall["nitcoins"] == 20
- db.drop
end
fun test_comments_reactor do
- var db = load_db("test_comments_reactor")
+ var db = gen_test_db
var game = load_game("Morriar/nit", db)
var l = new DummyListener
l.add_reactor(new PlayerPingGod, new PlayerFirstReview, new PlayerSaysNitcoin)
player = new Player(game, "Morriar")
assert player.load_achievements.has_key("player_says_nitcoin")
assert player.stats.overall["nitcoins"] == 70
- db.drop
end
end
super NitrpgTestHelper
fun test_game_stats do
- var db = load_db("test_game_stats")
+ var db = gen_test_db
var game = load_game("privat/nit", db)
var stats = game.stats
assert stats.overall["test"] == 0
var ostats = ogame.stats
ostats.overall.inc("test")
assert ostats.overall["test"] == 2
- db.drop
end
end
super NitrpgTestHelper
fun test_player_stats do
- var db = load_db("test_player_stats")
+ var db = gen_test_db
var game = load_game("privat/nit", db)
var player = new Player(game, "Morriar")
var stats = player.stats
var ostats = oplayer.stats
ostats.overall.inc("test")
assert ostats.overall["test"] == 2
- db.drop
end
end
super NitrpgTestHelper
fun test_init_from_json do
- var db = load_db("test_init_from_json")
+ var db = gen_test_db
var game = load_game("privat/nit", db)
var owner = new Player(game, "Morriar")
var json = """{
assert stats["test0"] == 0
assert stats["test1"] == 10
assert stats["test2"] == 20
- db.drop
end
end