Skip to content

Commit f64bf22

Browse files
jstone-devbencap
authored andcommitted
Added collection unit tests.
1 parent c45eb54 commit f64bf22

File tree

6 files changed

+622
-2
lines changed

6 files changed

+622
-2
lines changed

src/mavedb/lib/validation/urn_re.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@
2424
MAVEDB_VARIANT_URN_PATTERN = rf"{MAVEDB_SCORE_SET_URN_PATTERN}#[1-9]\d*"
2525
MAVEDB_VARIANT_URN_RE = re.compile(MAVEDB_VARIANT_URN_PATTERN)
2626

27+
# Collection URN
28+
MAVEDB_COLLECTION_URN_PATTERN = r"urn:mavedb:collection-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
29+
MAVEDB_COLLECTION_URN_RE = re.compile(MAVEDB_COLLECTION_URN_PATTERN)
30+
2731
# Any URN
2832
MAVEDB_ANY_URN_PATTERN = "|".join(
2933
[

src/mavedb/view_models/collection.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ class AddUserToCollectionRoleRequest(BaseModel):
6464

6565
# Properties shared by models stored in DB
6666
class SavedCollection(CollectionBase):
67-
id: int
6867
urn: str
6968
created_by: Optional[SavedUser]
7069
modified_by: Optional[SavedUser]

tests/conftest.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232
sys.path.append(".")
3333

34-
from tests.helpers.constants import ADMIN_USER, TEST_USER
34+
from tests.helpers.constants import ADMIN_USER, EXTRA_USER, TEST_USER
3535

3636
# needs the pytest_postgresql plugin installed
3737
assert pytest_postgresql.factories
@@ -242,6 +242,39 @@ def override_hgvs_data_provider():
242242
yield anonymous_overrides
243243

244244

245+
@pytest.fixture()
246+
def extra_user_app_overrides(session, data_provider, arq_redis):
247+
def override_get_db():
248+
try:
249+
yield session
250+
finally:
251+
session.close()
252+
253+
async def override_get_worker():
254+
yield arq_redis
255+
256+
def override_current_user():
257+
default_user = session.query(User).filter(User.username == EXTRA_USER["username"]).one_or_none()
258+
yield UserData(default_user, default_user.roles)
259+
260+
def override_require_user():
261+
default_user = session.query(User).filter(User.username == EXTRA_USER["username"]).one_or_none()
262+
yield UserData(default_user, default_user.roles)
263+
264+
def override_hgvs_data_provider():
265+
yield data_provider
266+
267+
anonymous_overrides = {
268+
get_db: override_get_db,
269+
get_worker: override_get_worker,
270+
get_current_user: override_current_user,
271+
require_current_user: require_current_user,
272+
hgvs_data_provider: override_hgvs_data_provider,
273+
}
274+
275+
yield anonymous_overrides
276+
277+
245278
@pytest.fixture()
246279
def admin_app_overrides(session, data_provider, arq_redis):
247280
def override_get_db():

tests/helpers/constants.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -696,3 +696,36 @@
696696
"positiveLikelihoodRatios": [100, 10, 1, 0.1],
697697
"priorProbabilityPathogenicity": 0.20,
698698
}
699+
700+
701+
TEST_COLLECTION = {"name": "Test collection", "description": None, "private": True}
702+
703+
704+
TEST_COLLECTION_RESPONSE = {
705+
"name": "Test collection",
706+
# "description": None,
707+
"private": True,
708+
"createdBy": {
709+
"firstName": TEST_USER["first_name"],
710+
"lastName": TEST_USER["last_name"],
711+
"orcidId": TEST_USER["username"],
712+
},
713+
"modifiedBy": {
714+
"firstName": TEST_USER["first_name"],
715+
"lastName": TEST_USER["last_name"],
716+
"orcidId": TEST_USER["username"],
717+
},
718+
"creationDate": date.today().isoformat(),
719+
"modificationDate": date.today().isoformat(),
720+
"experimentUrns": [],
721+
"scoreSetUrns": [],
722+
"admins": [
723+
{
724+
"firstName": TEST_USER["first_name"],
725+
"lastName": TEST_USER["last_name"],
726+
"orcidId": TEST_USER["username"],
727+
}
728+
],
729+
"editors": [],
730+
"viewers": [],
731+
}

tests/helpers/util.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@
1414
from mavedb.models.score_set import ScoreSet as ScoreSetDbModel
1515
from mavedb.models.license import License
1616
from mavedb.models.user import User
17+
from mavedb.view_models.collection import Collection
1718
from mavedb.view_models.experiment import Experiment, ExperimentCreate
1819
from mavedb.view_models.score_set import ScoreSet, ScoreSetCreate
1920
from tests.helpers.constants import (
2021
EXTRA_USER,
2122
TEST_CDOT_TRANSCRIPT,
23+
TEST_COLLECTION,
2224
TEST_MINIMAL_ACC_SCORESET,
2325
TEST_MINIMAL_EXPERIMENT,
2426
TEST_MINIMAL_SEQ_SCORESET,
@@ -64,6 +66,19 @@ def change_to_inactive_license(db, urn):
6466
db.commit()
6567

6668

69+
def create_collection(client, update=None):
70+
collection_payload = deepcopy(TEST_COLLECTION)
71+
if update is not None:
72+
collection_payload.update(update)
73+
74+
response = client.post("/api/v1/collections/", json=collection_payload)
75+
assert response.status_code == 200, "Could not create collection."
76+
77+
response_data = response.json()
78+
jsonschema.validate(instance=response_data, schema=Collection.schema())
79+
return response_data
80+
81+
6782
def create_experiment(client, update=None):
6883
experiment_payload = deepcopy(TEST_MINIMAL_EXPERIMENT)
6984
if update is not None:

0 commit comments

Comments
 (0)