Merge: Added contributing guidelines and link from readme
[nit.git] / contrib / nitrpg / src / test_helper.nit
index d8ba14e..ecdc358 100644 (file)
@@ -15,7 +15,7 @@
 # limitations under the License.
 
 # Test tools for NitRPG.
-module test_helper is test_suite
+module test_helper
 
 import test_suite
 import game
@@ -36,7 +36,7 @@ abstract class NitrpgTestHelper
        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
@@ -51,4 +51,24 @@ abstract class NitrpgTestHelper
                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 testid = "NIT_TESTING_ID".environ.to_i
+               var db_name = "test_nitrpg_{testid}"
+               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