|
22 | 22 | from mavedb.models.enums.processing_state import ProcessingState |
23 | 23 | from mavedb.models.enums.target_category import TargetCategory |
24 | 24 | from mavedb.models.experiment import Experiment as ExperimentDbModel |
| 25 | +from mavedb.models.mapped_variant import MappedVariant as MappedVariantDbModel |
25 | 26 | from mavedb.models.score_set import ScoreSet as ScoreSetDbModel |
26 | 27 | from mavedb.models.variant import Variant as VariantDbModel |
27 | 28 | from mavedb.view_models.orcid import OrcidUser |
@@ -875,7 +876,9 @@ def test_show_score_sets_anonymous_can_fetch_public_score_sets( |
875 | 876 | assert response_data[0]["urn"] == published_score_set["urn"] |
876 | 877 |
|
877 | 878 |
|
878 | | -def test_show_score_sets_anonymous_cannot_fetch_private_score_sets(session, client, setup_router_db, anonymous_app_overrides): |
| 879 | +def test_show_score_sets_anonymous_cannot_fetch_private_score_sets( |
| 880 | + session, client, setup_router_db, anonymous_app_overrides |
| 881 | +): |
879 | 882 | experiment = create_experiment(client) |
880 | 883 | score_set = create_seq_score_set(client, experiment["urn"]) |
881 | 884 | # Score set is private (not published); change ownership so it belongs to another user |
@@ -927,7 +930,9 @@ def test_show_score_sets_mixed_public_and_private_returns_404( |
927 | 930 | ): |
928 | 931 | experiment = create_experiment(client) |
929 | 932 | public_score_set = create_seq_score_set(client, experiment["urn"]) |
930 | | - public_score_set = mock_worker_variant_insertion(client, session, data_provider, public_score_set, data_files / "scores.csv") |
| 933 | + public_score_set = mock_worker_variant_insertion( |
| 934 | + client, session, data_provider, public_score_set, data_files / "scores.csv" |
| 935 | + ) |
931 | 936 | private_score_set = create_seq_score_set(client, experiment["urn"]) |
932 | 937 | with patch.object(arq.ArqRedis, "enqueue_job", return_value=None): |
933 | 938 | published_score_set = publish_score_set(client, public_score_set["urn"]) |
@@ -3522,6 +3527,28 @@ def test_can_fetch_current_clinical_control_options_for_score_set( |
3522 | 3527 | ) |
3523 | 3528 |
|
3524 | 3529 |
|
| 3530 | +def test_clinical_control_options_exclude_non_current(client, setup_router_db, session, data_provider, data_files): |
| 3531 | + experiment = create_experiment(client) |
| 3532 | + score_set = create_seq_score_set_with_mapped_variants( |
| 3533 | + client, session, data_provider, experiment["urn"], data_files / "scores.csv" |
| 3534 | + ) |
| 3535 | + link_clinical_controls_to_mapped_variants(session, score_set) |
| 3536 | + |
| 3537 | + # Mark all mapped variants as non-current to simulate stale mapping data. |
| 3538 | + mapped_variants = session.scalars( |
| 3539 | + select(MappedVariantDbModel) |
| 3540 | + .join(VariantDbModel) |
| 3541 | + .join(ScoreSetDbModel) |
| 3542 | + .where(ScoreSetDbModel.urn == score_set["urn"]) |
| 3543 | + ).all() |
| 3544 | + for mv in mapped_variants: |
| 3545 | + mv.current = False |
| 3546 | + session.commit() |
| 3547 | + |
| 3548 | + response = client.get(f"/api/v1/score-sets/{score_set['urn']}/clinical-controls/options") |
| 3549 | + assert response.status_code == 404 |
| 3550 | + |
| 3551 | + |
3525 | 3552 | ######################################################################################################################## |
3526 | 3553 | # Fetching annotated variants for a score set |
3527 | 3554 | ######################################################################################################################## |
|
0 commit comments