|
24 | 24 | TEST_MEDRXIV_IDENTIFIER, |
25 | 25 | TEST_MINIMAL_EXPERIMENT, |
26 | 26 | TEST_MINIMAL_EXPERIMENT_RESPONSE, |
| 27 | + TEST_MINIMAL_SEQ_SCORESET, |
27 | 28 | TEST_ORCID_ID, |
28 | 29 | TEST_PUBMED_IDENTIFIER, |
29 | 30 | TEST_PUBMED_URL_IDENTIFIER, |
@@ -1072,6 +1073,112 @@ def test_search_score_sets_for_experiments(session, client, setup_router_db, dat |
1072 | 1073 | assert response.json()[0]["urn"] == published_score_set["urn"] |
1073 | 1074 |
|
1074 | 1075 |
|
| 1076 | +# Creator created a superseding score set but not published it yet. |
| 1077 | +def test_owner_searches_score_sets_with_unpublished_superseding_score_sets_for_experiments(session, client, setup_router_db, data_files, data_provider): |
| 1078 | + experiment = create_experiment(client) |
| 1079 | + unpublished_score_set = create_seq_score_set_with_variants( |
| 1080 | + client, session, data_provider, experiment["urn"], data_files / "scores.csv" |
| 1081 | + ) |
| 1082 | + publish_score_set_response = client.post(f"/api/v1/score-sets/{unpublished_score_set['urn']}/publish") |
| 1083 | + assert publish_score_set_response.status_code == 200 |
| 1084 | + published_score_set = publish_score_set_response.json() |
| 1085 | + score_set_post_payload = deepcopy(TEST_MINIMAL_SEQ_SCORESET) |
| 1086 | + score_set_post_payload["experimentUrn"] = published_score_set["experiment"]["urn"] |
| 1087 | + score_set_post_payload["supersededScoreSetUrn"] = published_score_set["urn"] |
| 1088 | + superseding_score_set_response = client.post("/api/v1/score-sets/", json=score_set_post_payload) |
| 1089 | + assert superseding_score_set_response.status_code == 200 |
| 1090 | + superseding_score_set = superseding_score_set_response.json() |
| 1091 | + |
| 1092 | + # On score set publication, the experiment will get a new urn |
| 1093 | + experiment_urn = published_score_set["experiment"]["urn"] |
| 1094 | + response = client.get(f"/api/v1/experiments/{experiment_urn}/score-sets") |
| 1095 | + assert response.status_code == 200 |
| 1096 | + assert len(response.json()) == 1 |
| 1097 | + assert response.json()[0]["urn"] == superseding_score_set["urn"] |
| 1098 | + |
| 1099 | + |
| 1100 | +def test_non_owner_searches_score_sets_with_unpublished_superseding_score_sets_for_experiments(session, client, setup_router_db, data_files, data_provider): |
| 1101 | + experiment = create_experiment(client) |
| 1102 | + unpublished_score_set = create_seq_score_set_with_variants( |
| 1103 | + client, session, data_provider, experiment["urn"], data_files / "scores.csv" |
| 1104 | + ) |
| 1105 | + publish_score_set_response = client.post(f"/api/v1/score-sets/{unpublished_score_set['urn']}/publish") |
| 1106 | + assert publish_score_set_response.status_code == 200 |
| 1107 | + published_score_set = publish_score_set_response.json() |
| 1108 | + score_set_post_payload = deepcopy(TEST_MINIMAL_SEQ_SCORESET) |
| 1109 | + score_set_post_payload["experimentUrn"] = published_score_set["experiment"]["urn"] |
| 1110 | + score_set_post_payload["supersededScoreSetUrn"] = published_score_set["urn"] |
| 1111 | + superseding_score_set_response = client.post("/api/v1/score-sets/", json=score_set_post_payload) |
| 1112 | + assert superseding_score_set_response.status_code == 200 |
| 1113 | + superseding_score_set = superseding_score_set_response.json() |
| 1114 | + change_ownership(session, published_score_set["urn"], ScoreSetDbModel) |
| 1115 | + change_ownership(session, superseding_score_set["urn"], ScoreSetDbModel) |
| 1116 | + # On score set publication, the experiment will get a new urn |
| 1117 | + experiment_urn = published_score_set["experiment"]["urn"] |
| 1118 | + response = client.get(f"/api/v1/experiments/{experiment_urn}/score-sets") |
| 1119 | + assert response.status_code == 200 |
| 1120 | + assert len(response.json()) == 1 |
| 1121 | + assert response.json()[0]["urn"] == published_score_set["urn"] |
| 1122 | + |
| 1123 | + |
| 1124 | +def test_owner_searches_published_superseding_score_sets_for_experiments(session, client, setup_router_db, data_files, data_provider): |
| 1125 | + experiment = create_experiment(client) |
| 1126 | + unpublished_score_set = create_seq_score_set_with_variants( |
| 1127 | + client, session, data_provider, experiment["urn"], data_files / "scores.csv" |
| 1128 | + ) |
| 1129 | + publish_score_set_response = client.post(f"/api/v1/score-sets/{unpublished_score_set['urn']}/publish") |
| 1130 | + assert publish_score_set_response.status_code == 200 |
| 1131 | + published_score_set = publish_score_set_response.json() |
| 1132 | + |
| 1133 | + superseding_score_set = create_seq_score_set_with_variants( |
| 1134 | + client, |
| 1135 | + session, |
| 1136 | + data_provider, |
| 1137 | + published_score_set["experiment"]["urn"], |
| 1138 | + data_files / "scores.csv", |
| 1139 | + update={"supersededScoreSetUrn": published_score_set["urn"]}, |
| 1140 | + ) |
| 1141 | + published_superseding_score_set_response = client.post(f"/api/v1/score-sets/{superseding_score_set['urn']}/publish") |
| 1142 | + assert published_superseding_score_set_response.status_code == 200 |
| 1143 | + published_superseding_score_set = published_superseding_score_set_response.json() |
| 1144 | + # On score set publication, the experiment will get a new urn |
| 1145 | + experiment_urn = published_score_set["experiment"]["urn"] |
| 1146 | + response = client.get(f"/api/v1/experiments/{experiment_urn}/score-sets") |
| 1147 | + assert response.status_code == 200 |
| 1148 | + assert len(response.json()) == 1 |
| 1149 | + assert response.json()[0]["urn"] == published_superseding_score_set["urn"] |
| 1150 | + |
| 1151 | + |
| 1152 | +def test_non_owner_searches_published_superseding_score_sets_for_experiments(session, client, setup_router_db, data_files, data_provider): |
| 1153 | + experiment = create_experiment(client) |
| 1154 | + unpublished_score_set = create_seq_score_set_with_variants( |
| 1155 | + client, session, data_provider, experiment["urn"], data_files / "scores.csv" |
| 1156 | + ) |
| 1157 | + publish_score_set_response = client.post(f"/api/v1/score-sets/{unpublished_score_set['urn']}/publish") |
| 1158 | + assert publish_score_set_response.status_code == 200 |
| 1159 | + published_score_set = publish_score_set_response.json() |
| 1160 | + |
| 1161 | + superseding_score_set = create_seq_score_set_with_variants( |
| 1162 | + client, |
| 1163 | + session, |
| 1164 | + data_provider, |
| 1165 | + published_score_set["experiment"]["urn"], |
| 1166 | + data_files / "scores.csv", |
| 1167 | + update={"supersededScoreSetUrn": published_score_set["urn"]}, |
| 1168 | + ) |
| 1169 | + published_superseding_score_set_response = client.post(f"/api/v1/score-sets/{superseding_score_set['urn']}/publish") |
| 1170 | + assert published_superseding_score_set_response.status_code == 200 |
| 1171 | + published_superseding_score_set = published_superseding_score_set_response.json() |
| 1172 | + change_ownership(session, published_score_set["urn"], ScoreSetDbModel) |
| 1173 | + change_ownership(session, published_superseding_score_set["urn"], ScoreSetDbModel) |
| 1174 | + # On score set publication, the experiment will get a new urn |
| 1175 | + experiment_urn = published_score_set["experiment"]["urn"] |
| 1176 | + response = client.get(f"/api/v1/experiments/{experiment_urn}/score-sets") |
| 1177 | + assert response.status_code == 200 |
| 1178 | + assert len(response.json()) == 1 |
| 1179 | + assert response.json()[0]["urn"] == published_superseding_score_set["urn"] |
| 1180 | + |
| 1181 | + |
1075 | 1182 | def test_search_score_sets_for_contributor_experiments(session, client, setup_router_db, data_files, data_provider): |
1076 | 1183 | experiment = create_experiment(client) |
1077 | 1184 | score_set_pub = create_seq_score_set_with_variants( |
|
0 commit comments