Merge: Mock Github API tests
[nit.git] / contrib / nitrpg / src / test_helper.nit
index d8ba14e..9d71ca3 100644 (file)
 # limitations under the License.
 
 # Test tools for NitRPG.
-module test_helper is test_suite
+module test_helper
 
-import test_suite
 import game
 import github::cache
 
 # Used to factorize test treatments.
 abstract class NitrpgTestHelper
-       super TestSuite
 
        # Github API client
        var api: GithubAPI do
@@ -33,10 +31,10 @@ abstract class NitrpgTestHelper
        end
 
        # Mongo API client
-       var mongo = new MongoClient("mongodb://localhost:27017/")
+       var mongo = new MongoClient("mongodb://mongo: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 +49,25 @@ 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
+
+       # Drop the databse after each test
+       fun after_test is after do drop_test_db
 end