diff --git a/cg/services/orders/store_order_services/store_microbial_fastq_order_service.py b/cg/services/orders/store_order_services/store_microbial_fastq_order_service.py index da1cfa3623..378ba586fc 100644 --- a/cg/services/orders/store_order_services/store_microbial_fastq_order_service.py +++ b/cg/services/orders/store_order_services/store_microbial_fastq_order_service.py @@ -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, diff --git a/tests/fixture_plugins/orders_fixtures/status_data_fixtures.py b/tests/fixture_plugins/orders_fixtures/status_data_fixtures.py index ebfe03b411..ef079f2566 100644 --- a/tests/fixture_plugins/orders_fixtures/status_data_fixtures.py +++ b/tests/fixture_plugins/orders_fixtures/status_data_fixtures.py @@ -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, @@ -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 diff --git a/tests/services/orders/order_store_service/test_microbial_fastq_order_store_service.py b/tests/services/orders/order_store_service/test_microbial_fastq_order_store_service.py index 0d3aa7794b..3ff2074c75 100644 --- a/tests/services/orders/order_store_service/test_microbial_fastq_order_store_service.py +++ b/tests/services/orders/order_store_service/test_microbial_fastq_order_store_service.py @@ -1,6 +1,7 @@ -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, ) @@ -8,28 +9,24 @@ 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]