def test_validate_case_name(rml_order_to_submit: dict, base_store: Store,
                            helpers: StoreHelpers):
    # GIVEN pool order with a case already all in the database
    order: OrderIn = OrderIn.parse_obj(rml_order_to_submit, OrderType.RML)

    sample: RmlSample
    customer: models.Customer = helpers.ensure_customer(
        store=base_store, customer_id=order.customer)
    for sample in order.samples:
        case = helpers.ensure_case(
            store=base_store,
            name=PoolSubmitter.create_case_name(ticket=order.ticket,
                                                pool_name=sample.pool),
            customer=customer,
            data_analysis=Pipeline.FLUFFY,
            data_delivery=DataDelivery.STATINA,
        )
        base_store.add_commit(case)
Beispiel #2
0
def test_clean_hk_bundle_files_dry_run(
    caplog,
    case_id: str,
    cg_context: CGConfig,
    cli_runner: CliRunner,
    helpers: StoreHelpers,
    mocker,
    timestamp: datetime,
):
    # GIVEN a housekeeper api with some alignment files
    file_path = "path/to_file.cram"
    tag = "cram"
    hk_bundle_data = {
        "name": case_id,
        "created": timestamp,
        "expires": timestamp,
        "files": [
            {
                "path": file_path,
                "archive": False,
                "tags": [case_id, tag]
            },
        ],
    }
    store = cg_context.status_db
    case = helpers.ensure_case(store=store, case_id=case_id)
    helpers.add_analysis(store=store,
                         case=case,
                         started_at=timestamp,
                         completed_at=timestamp)
    helpers.ensure_hk_bundle(cg_context.housekeeper_api,
                             bundle_data=hk_bundle_data)

    # WHEN running the clean command in dry run mode
    caplog.set_level(logging.INFO)
    result = cli_runner.invoke(hk_bundle_files,
                               ["-c", case_id, "--dry-run", "--tags", tag],
                               obj=cg_context)

    # THEN assert it exits with success
    assert result.exit_code == 0
    # THEN assert that the files where removed
    assert f"{file_path} not on disk" in caplog.text
Beispiel #3
0
def fixture_rna_store(
    base_store: Store,
    helpers: StoreHelpers,
    rna_case_id: str,
    dna_case_id: str,
) -> Store:
    """Populate store with an rna case that is connected to a dna case via sample.subject_id"""

    store: Store = base_store

    # an existing RNA case with related sample
    rna_case = helpers.ensure_case(
        store=store,
        name="rna_case",
        customer=helpers.ensure_customer(store=store),
        data_analysis=Pipeline.MIP_RNA,
        data_delivery=DataDelivery.SCOUT,
    )
    rna_case.internal_id = rna_case_id

    rna_sample_son = helpers.add_sample(store=store, name="rna_son", subject_id="son")
    rna_sample_daughter = helpers.add_sample(
        store=store, name="rna_daughter", subject_id="daughter"
    )
    rna_sample_mother = helpers.add_sample(store=store, name="rna_mother", subject_id="mother")
    rna_sample_father = helpers.add_sample(store=store, name="rna_father", subject_id="father")
    helpers.add_relationship(
        store=store,
        sample=rna_sample_son,
        case=rna_case,
        mother=rna_sample_mother,
        father=rna_sample_father,
        status="affected",
    )
    helpers.add_relationship(
        store=store,
        sample=rna_sample_daughter,
        case=rna_case,
        mother=rna_sample_mother,
        father=rna_sample_father,
        status="unaffected",
    )
    helpers.add_relationship(
        store=store, sample=rna_sample_mother, case=rna_case, status="unaffected"
    )
    helpers.add_relationship(
        store=store, sample=rna_sample_father, case=rna_case, status="affected"
    )

    for link in rna_case.links:
        link.sample.internal_id = link.sample.name

    # an existing DNA case with related sample
    dna_case = helpers.ensure_case(
        store=store,
        name="dna_case",
        customer=helpers.ensure_customer(store=store),
        data_analysis=Pipeline.MIP_DNA,
        data_delivery=DataDelivery.SCOUT,
    )
    dna_case.internal_id = dna_case_id

    dna_sample_son = helpers.add_sample(store=store, name="dna_son", subject_id="son")
    dna_sample_daughter = helpers.add_sample(
        store=store, name="dna_daughter", subject_id="daughter"
    )
    dna_sample_mother = helpers.add_sample(store=store, name="dna_mother", subject_id="mother")
    dna_sample_father = helpers.add_sample(store=store, name="dna_father", subject_id="father")
    helpers.add_relationship(
        store=store,
        sample=dna_sample_son,
        case=dna_case,
        mother=dna_sample_mother,
        father=dna_sample_father,
        status="affected",
    )
    helpers.add_relationship(
        store=store,
        sample=dna_sample_daughter,
        case=dna_case,
        mother=dna_sample_mother,
        father=dna_sample_father,
        status="unaffected",
    )
    helpers.add_relationship(
        store=store, sample=dna_sample_mother, case=dna_case, status="unaffected"
    )
    helpers.add_relationship(
        store=store, sample=dna_sample_father, case=dna_case, status="affected"
    )

    for link in dna_case.links:
        link.sample.internal_id = link.sample.name

    store.commit()
    return store