def test_clinvar_submissions(app, institute_obj, clinvar_variant, clinvar_casedata): """"Test the web page containing the clinvar submissions for an institute""" # GIVEN an institute with a clinvar submission store.create_submission(institute_obj["_id"]) open_submission = store.get_open_clinvar_submission(institute_obj["_id"]) submission_with_data = store.add_to_submission( open_submission["_id"], ([clinvar_variant], [clinvar_casedata])) assert submission_with_data # GIVEN an initialized app and a valid user and institute with app.test_client() as client: # GIVEN that the user could be logged in resp = client.get(url_for("auto_login")) assert resp.status_code == 200 # When visiting the clinvar submission page (get request) resp = client.get( url_for( "overview.clinvar_submissions", institute_id=institute_obj["internal_id"], )) # a successful response should be returned assert resp.status_code == 200 assert str(submission_with_data["_id"]) in str(resp.data)
def clinvar(institute_id, case_name, variant_id): """Build a clinVar submission form for a variant.""" data = clinvar_export(store, institute_id, case_name, variant_id) if request.method == "GET": return data # POST form_dict = {} # flatten up HPO and OMIM terms lists into string of keys separated by semicolon for key, value in request.form.items(): if key.startswith("conditions@") or key.startswith("clin_features@"): conditions = request.form.getlist( key) # can be HPO or OMIM conditions if conditions: variant_id = key.split("@")[1] cond_types = [] cond_values = [] for condition in conditions: cond_types.append( condition.split("_")[0]) # 'HPO' or 'OMIM' cond_values.append( condition.split("_")[1]) # HPO id or OMIM ID if key.startswith( "conditions@" ): # Filling in 'condition_id_type' and 'condition_id_value' in variant data form_dict["@".join(["condition_id_type", variant_id])] = ";".join( cond_types) # Flattened list form_dict["@".join(["condition_id_value", variant_id])] = ";".join( cond_values) # Flattened list elif key.startswith( "clin_features@" ): # Filling in 'clin_features' in casedata form_dict["@".join(["clin_features", variant_id])] = ";".join( cond_values) # Flattened list else: form_dict[key] = value # A tuple of submission objects (variants and casedata objects): submission_objects = set_submission_objects(form_dict) # Add submission data to an open clinvar submission object, # or create a new if no open submission is found in database open_submission = store.get_open_clinvar_submission(institute_id) updated_submission = store.add_to_submission(open_submission["_id"], submission_objects) # Redirect to clinvar submissions handling page, and pass it the updated_submission_object return redirect( url_for("cases.clinvar_submissions", institute_id=institute_id))
def clinvar(institute_id, case_name, variant_id): """Build a clinVar submission form for a variant.""" data = controllers.clinvar_export(store, institute_id, case_name, variant_id) if request.method == 'GET': return data else: #POST form_dict = request.form.to_dict() submission_objects = set_submission_objects(form_dict) # A tuple of submission objects (variants and casedata objects) # Add submission data to an open clinvar submission object, # or create a new if no open submission is found in database open_submission = store.get_open_clinvar_submission(current_user.email, institute_id) updated_submission = store.add_to_submission(open_submission['_id'], submission_objects) # Redirect to clinvar submissions handling page, and pass it the updated_submission_object return redirect(url_for('cases.clinvar_submissions', institute_id=institute_id))
def clinvar(institute_id, case_name, variant_id): """Build a clinVar submission form for a variant.""" data = controllers.clinvar_export(store, institute_id, case_name, variant_id) if request.method == 'GET': return data else: #POST form_dict = request.form.to_dict() submission_objects = set_submission_objects(form_dict) # A tuple of submission objects (variants and casedata objects) # Add submission data to an open clinvar submission object, # or create a new if no open submission is found in database open_submission = store.get_open_clinvar_submission(current_user.email, institute_id) updated_submission = store.add_to_submission(open_submission['_id'], submission_objects) # Redirect to clinvar submissions handling page, and pass it the updated_submission_object return redirect(url_for('cases.clinvar_submissions', institute_id=institute_id))
def test_rename_clinvar_samples(app, institute_obj, clinvar_variant, clinvar_casedata): """Test the form button triggering the renaming of samples for a clinvar submission""" # GIVEN an institute with a clinvar submission store.create_submission(institute_obj["_id"]) open_submission = store.get_open_clinvar_submission(institute_obj["_id"]) submission_with_data = store.add_to_submission( open_submission["_id"], ([clinvar_variant], [clinvar_casedata])) assert submission_with_data["_id"] # GIVEN an initialized app and a valid user with app.test_client() as client: # GIVEN that the user could be logged in resp = client.get(url_for("auto_login")) case_id = clinvar_casedata["case_id"] old_name = clinvar_casedata["individual_id"] form_data = dict(new_name="new_sample_name", ) referer = url_for("overview.clinvar_submissions", institute_id=institute_obj["internal_id"]) # WHEN the sample name is edited from the submission page (POST request) resp = client.post( url_for( f"overview.clinvar_rename_casedata", submission=submission_with_data["_id"], case=case_id, old_name=old_name, ), data=form_data, headers={"referer": referer}, ) # a successful response should be redirect to the submssions page assert resp.status_code == 302 # And the sample name should have been updated in the database updated_casedata = store.clinvar_collection.find_one( {"_id": clinvar_casedata["_id"]}) assert updated_casedata["individual_id"] != clinvar_casedata[ "individual_id"]