Skip to content

Commit

Permalink
fix the store test
Browse files Browse the repository at this point in the history
  • Loading branch information
diitaz93 committed Dec 17, 2024
1 parent 1c3e435 commit 203c3a8
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ def _create_db_sample(
) -> Sample:
"""Create a sample in the status database."""
db_sample: Sample = self.status_db.add_sample(
name=sample["name"],
name=sample.name,
customer=customer,
sex=SexOptions.UNKNOWN,
comment=sample.comment,
Expand Down
48 changes: 40 additions & 8 deletions tests/fixture_plugins/orders_fixtures/status_data_fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,18 @@

from cg.models.orders.constants import OrderType
from cg.models.orders.order import OrderIn
from cg.models.orders.sample_base import ContainerEnum, PriorityEnum
from cg.services.order_validation_service.constants import ElutionBuffer
from cg.services.order_validation_service.workflows.fastq.models.order import FastqOrder
from cg.services.order_validation_service.workflows.microbial_fastq.constants import (
MicrobialFastqDeliveryType,
)
from cg.services.order_validation_service.workflows.microbial_fastq.models.order import (
MicrobialFastqOrder,
)
from cg.services.order_validation_service.workflows.microbial_fastq.models.sample import (
MicrobialFastqSample,
)
from cg.services.orders.store_order_services.store_case_order import StoreCaseOrderService
from cg.services.orders.store_order_services.store_metagenome_order import (
StoreMetagenomeOrderService,
Expand Down Expand Up @@ -58,15 +69,36 @@ def microbial_status_data(
return store_microbial_order_service.order_to_status(order=order)


def create_microbial_fastq_sample(id: int) -> MicrobialFastqSample:
return MicrobialFastqSample(
application="MWRNXTR003",
comment="",
container=ContainerEnum.tube,
container_name="Fastq tube",
name=f"microfastq-sample-{id}",
volume=54,
elution_buffer=ElutionBuffer.WATER,
priority=PriorityEnum.priority,
quantity=54,
require_qc_ok=True,
)


@pytest.fixture
def microbial_fastq_status_data(
microbial_fastq_order_to_submit: dict,
store_microbial_fastq_order_service: StoreMicrobialFastqOrderService,
) -> dict:
"""Parse microbial order example."""
project: OrderType = OrderType.MICROBIAL_FASTQ
order: OrderIn = OrderIn.parse_obj(obj=microbial_fastq_order_to_submit, project=project)
return store_microbial_fastq_order_service.order_to_status(order=order)
def valid_microbial_fastq_order(ticket_id: str) -> MicrobialFastqOrder:
sample_1: MicrobialFastqSample = create_microbial_fastq_sample(1)
sample_2: MicrobialFastqSample = create_microbial_fastq_sample(2)
sample_3: MicrobialFastqSample = create_microbial_fastq_sample(3)
order = MicrobialFastqOrder(
customer="cust000",
project_type=OrderType.MICROBIAL_FASTQ,
user_id=0,
delivery_type=MicrobialFastqDeliveryType.FASTQ,
samples=[sample_1, sample_2, sample_3],
name="MicrobialFastqOrder",
)
order.ticket_number = ticket_id
return order


@pytest.fixture
Expand Down
Original file line number Diff line number Diff line change
@@ -1,35 +1,32 @@
from datetime import datetime

from cg.constants import DataDelivery
from cg.services.order_validation_service.workflows.microbial_fastq.models.order import (
MicrobialFastqOrder,
)
from cg.services.orders.store_order_services.store_microbial_fastq_order_service import (
StoreMicrobialFastqOrderService,
)
from cg.store.models import Case, Sample


def test_store_samples(
microbial_fastq_status_data: dict,
ticket_id: str,
valid_microbial_fastq_order: MicrobialFastqOrder,
store_microbial_fastq_order_service: StoreMicrobialFastqOrderService,
):
# GIVEN a basic store with no samples and a fastq order
# GIVEN a microbial fastq order with microbial samples

# GIVEN a basic store with no samples and a fastq order
assert not store_microbial_fastq_order_service.status_db._get_query(table=Sample).first()
assert store_microbial_fastq_order_service.status_db._get_query(table=Case).count() == 0

# WHEN storing the order
new_samples = store_microbial_fastq_order_service.store_order_data_in_status_db(
customer_id=microbial_fastq_status_data["customer"],
order=microbial_fastq_status_data["order"],
ordered=datetime.now(),
ticket_id=ticket_id,
items=microbial_fastq_status_data["samples"],
order=valid_microbial_fastq_order
)

# THEN it should store the samples and create a case for each sample
assert len(new_samples) == 2
assert len(store_microbial_fastq_order_service.status_db._get_query(table=Sample).all()) == 2
assert store_microbial_fastq_order_service.status_db._get_query(table=Case).count() == 2
assert len(new_samples) == 3
assert len(store_microbial_fastq_order_service.status_db._get_query(table=Sample).all()) == 3
assert store_microbial_fastq_order_service.status_db._get_query(table=Case).count() == 3
first_sample = new_samples[0]
assert len(first_sample.links) == 1
case_link = first_sample.links[0]
Expand Down

0 comments on commit 203c3a8

Please sign in to comment.