From f2d31925be4ac0751f2e8ffb760a6c8ba3e85796 Mon Sep 17 00:00:00 2001
From: Michael Milton <ttmigueltt@gmail.com>
Date: Wed, 5 Aug 2020 15:12:45 +1000
Subject: [PATCH] Fix tests with stamping feature

---
 megaqc/database.py   | 5 +++--
 megaqc/extensions.py | 4 +++-
 tests/conftest.py    | 2 +-
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/megaqc/database.py b/megaqc/database.py
index 3f4e1411..1ec9d1b3 100644
--- a/megaqc/database.py
+++ b/megaqc/database.py
@@ -6,13 +6,14 @@
 from builtins import object
 from copy import copy
 
+from flask_migrate import stamp
 from past.builtins import basestring
 from sqlalchemy import create_engine, inspect
 from sqlalchemy.engine.url import make_url
 from sqlalchemy.exc import OperationalError, ProgrammingError
 
 from .compat import basestring
-from .extensions import db, migrate
+from .extensions import db
 
 # Alias common SQLAlchemy names
 Column = db.Column
@@ -195,6 +196,6 @@ def init_db(url):
     db.metadata.create_all()
 
     # Tell alembic that we're at the latest migration, since we just created everything from scratch
-    migrate.stamp()
+    stamp()
 
     print("Initialized the database.")
diff --git a/megaqc/extensions.py b/megaqc/extensions.py
index 1243a27c..1fc8d138 100644
--- a/megaqc/extensions.py
+++ b/megaqc/extensions.py
@@ -4,6 +4,8 @@
 
 Each extension is initialized in the app factory located in app.py.
 """
+from pathlib import Path
+
 from flask_caching import Cache
 from flask_debugtoolbar import DebugToolbarExtension
 from flask_login import LoginManager
@@ -21,5 +23,5 @@
 cache = Cache()
 debug_toolbar = DebugToolbarExtension()
 restful = Api(prefix="/rest_api/v1")
-migrate = Migrate()
+migrate = Migrate(directory=str(Path(__file__).parent / "migrations"))
 json_api = JsonApi()
diff --git a/tests/conftest.py b/tests/conftest.py
index 6f7b4134..78490586 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -19,10 +19,10 @@ def app():
     An application for the tests.
     """
     config = TestConfig()
-    init_db(config.SQLALCHEMY_DATABASE_URI)
     _app = create_app(config)
     ctx = _app.test_request_context()
     ctx.push()
+    init_db(config.SQLALCHEMY_DATABASE_URI)
 
     yield _app