|
1 | 1 | from pathlib import Path |
2 | | -from unittest.mock import patch |
3 | 2 |
|
4 | | -import mongomock |
5 | 3 | import pymongo |
6 | 4 | import pytest |
7 | 5 | from bson import ObjectId |
8 | 6 | from flask.testing import FlaskClient |
9 | 7 |
|
10 | | -import pydatalab.mongo |
11 | 8 | from pydatalab.models import Cell, Collection, Equipment, Sample, StartingMaterial |
12 | 9 | from pydatalab.models.people import AccountStatus |
13 | 10 |
|
14 | 11 | TEST_DATABASE_NAME = "__datalab-testing__" |
15 | 12 |
|
16 | 13 |
|
17 | | -class PyMongoMock(mongomock.MongoClient): |
18 | | - def init_app(self, _, *args, **kwargs): |
19 | | - return super().__init__(MONGO_URI) |
20 | | - |
21 | | - |
22 | 14 | MONGO_URI = f"mongodb://localhost:27017/{TEST_DATABASE_NAME}" |
23 | 15 |
|
24 | 16 |
|
@@ -83,42 +75,20 @@ def app_config(tmp_path_factory, secret_key): |
83 | 75 |
|
84 | 76 |
|
85 | 77 | @pytest.fixture(scope="module") |
86 | | -def app(real_mongo_client, monkeypatch_session, app_config): |
87 | | - """Yields the test app. |
88 | | -
|
89 | | - If it exists, connects to a local MongoDB, otherwise uses the |
90 | | - mongomock testing backend. |
91 | | -
|
92 | | - """ |
| 78 | +def app(real_mongo_client, app_config): |
| 79 | + """Yields the test app.""" |
93 | 80 | from pydatalab.main import create_app |
94 | 81 |
|
95 | | - try: |
96 | | - mongo_cli = real_mongo_client |
97 | | - if mongo_cli is None: |
98 | | - raise pymongo.errors.ServerSelectionTimeoutError |
99 | | - |
100 | | - databases = mongo_cli.list_database_names() |
| 82 | + mongo_cli = real_mongo_client |
| 83 | + if mongo_cli is None: |
| 84 | + raise pymongo.errors.ServerSelectionTimeoutError( |
| 85 | + "Tests require a running local MongoDB instance." |
| 86 | + ) |
101 | 87 |
|
102 | | - if TEST_DATABASE_NAME in databases: |
103 | | - mongo_cli.drop_database(TEST_DATABASE_NAME) |
| 88 | + databases = mongo_cli.list_database_names() |
104 | 89 |
|
105 | | - except pymongo.errors.ServerSelectionTimeoutError: |
106 | | - with patch.object( |
107 | | - pydatalab.mongo, |
108 | | - "flask_mongo", |
109 | | - PyMongoMock(MONGO_URI, connectTimeoutMS=100, serverSelectionTimeoutMS=100), |
110 | | - ): |
111 | | - |
112 | | - def mock_mongo_client(): |
113 | | - return PyMongoMock(MONGO_URI, connectTimeoutMS=100, serverSelectionTimeoutMS=100) |
114 | | - |
115 | | - def mock_mongo_database(): |
116 | | - return mock_mongo_client().get_database(TEST_DATABASE_NAME) |
117 | | - |
118 | | - monkeypatch_session.setattr( |
119 | | - pydatalab.mongo, "_get_active_mongo_client", mock_mongo_client |
120 | | - ) |
121 | | - monkeypatch_session.setattr(pydatalab.mongo, "get_database", mock_mongo_database) |
| 90 | + if TEST_DATABASE_NAME in databases: |
| 91 | + mongo_cli.drop_database(TEST_DATABASE_NAME) |
122 | 92 |
|
123 | 93 | app = create_app(app_config, env_file=False) |
124 | 94 |
|
|
0 commit comments