diff --git a/cg/services/orders/validate_order_services/validate_pool_order.py b/cg/services/orders/validate_order_services/validate_pool_order.py deleted file mode 100644 index 58cae8846f..0000000000 --- a/cg/services/orders/validate_order_services/validate_pool_order.py +++ /dev/null @@ -1,35 +0,0 @@ -from cg.exc import OrderError -from cg.models.orders.order import OrderIn -from cg.models.orders.samples import RmlSample -from cg.services.orders.store_order_services.store_order_service import ValidateOrderService -from cg.store.models import Customer -from cg.store.store import Store - - -class ValidatePoolOrderService(ValidateOrderService): - - def __init__(self, status_db: Store): - self.status_db = status_db - - def validate_order(self, order: OrderIn) -> None: - self._validate_case_names_are_available( - customer_id=order.customer, samples=order.samples, ticket=order.ticket - ) - - def _validate_case_names_are_available( - self, customer_id: str, samples: list[RmlSample], ticket: str - ): - """Validate names of all samples are not already in use.""" - customer: Customer = self.status_db.get_customer_by_internal_id( - customer_internal_id=customer_id - ) - for sample in samples: - case_name: str = self.create_case_name(pool_name=sample.pool, ticket=ticket) - if self.status_db.get_case_by_name_and_customer(customer=customer, case_name=case_name): - raise OrderError( - f"Case name {case_name} already in use for customer {customer.name}" - ) - - @staticmethod - def create_case_name(ticket: str, pool_name: str) -> str: - return f"{ticket}-{pool_name}" diff --git a/tests/fixture_plugins/orders_fixtures/order_to_submit_fixtures.py b/tests/fixture_plugins/orders_fixtures/order_to_submit_fixtures.py index a8b44a6fc0..d81ecbeb8c 100644 --- a/tests/fixture_plugins/orders_fixtures/order_to_submit_fixtures.py +++ b/tests/fixture_plugins/orders_fixtures/order_to_submit_fixtures.py @@ -10,6 +10,7 @@ from cg.services.order_validation_service.models.order import Order from cg.services.order_validation_service.workflows.balsamic.models.order import BalsamicOrder from cg.services.order_validation_service.workflows.fastq.models.order import FastqOrder +from cg.services.order_validation_service.workflows.fluffy.models.order import FluffyOrder from cg.services.order_validation_service.workflows.metagenome.models.order import MetagenomeOrder from cg.services.order_validation_service.workflows.microbial_fastq.models.order import ( MicrobialFastqOrder, @@ -19,6 +20,7 @@ from cg.services.order_validation_service.workflows.mip_rna.models.order import MipRnaOrder from cg.services.order_validation_service.workflows.mutant.models.order import MutantOrder from cg.services.order_validation_service.workflows.pacbio_long_read.models.order import PacbioOrder +from cg.services.order_validation_service.workflows.rml.models.order import RmlOrder @pytest.fixture(scope="session") @@ -144,7 +146,7 @@ def all_orders_to_submit( return { OrderType.BALSAMIC: BalsamicOrder.model_validate(balsamic_order_to_submit), OrderType.FASTQ: FastqOrder.model_validate(fastq_order_to_submit), - # OrderType.FLUFFY: FluffyOrder.model_validate(rml_order_to_submit), + OrderType.FLUFFY: FluffyOrder.model_validate(fluffy_order_to_submit), OrderType.METAGENOME: MetagenomeOrder.model_validate(metagenome_order_to_submit), OrderType.MICROBIAL_FASTQ: MicrobialFastqOrder.model_validate( microbial_fastq_order_to_submit @@ -153,7 +155,7 @@ def all_orders_to_submit( OrderType.MIP_DNA: MipDnaOrder.model_validate(mip_dna_order_to_submit), OrderType.MIP_RNA: MipRnaOrder.model_validate(mip_rna_order_to_submit), OrderType.PACBIO_LONG_READ: PacbioOrder.model_validate(pacbio_order_to_submit), - # OrderType.RML: OrderIn.parse_obj(rml_order_to_submit, project=OrderType.RML), + OrderType.RML: RmlOrder.model_validate(rml_order_to_submit), # OrderType.RNAFUSION: RnaFusionOrder.model_validate(rnafusion_order_to_submit), OrderType.SARS_COV_2: MutantOrder.model_validate(sarscov2_order_to_submit), } diff --git a/tests/services/orders/test_validate_order_service/test_validate_pool_order_service.py b/tests/services/orders/test_validate_order_service/test_validate_pool_order_service.py deleted file mode 100644 index 2364a85a30..0000000000 --- a/tests/services/orders/test_validate_order_service/test_validate_pool_order_service.py +++ /dev/null @@ -1,48 +0,0 @@ -import pytest - -from cg.constants import DataDelivery -from cg.constants.constants import Workflow -from cg.exc import OrderError -from cg.models.orders.constants import OrderType -from cg.models.orders.order import OrderIn -from cg.models.orders.samples import RmlSample -from cg.services.orders.validate_order_services.validate_pool_order import ValidatePoolOrderService -from cg.store.models import Customer -from cg.store.store import Store -from tests.store_helpers import StoreHelpers - - -@pytest.mark.xfail(reason="New validation to be implemented") -def test_validate_normal_order(rml_order_to_submit: dict, base_store: Store): - # GIVEN pool order with three samples, none in the database - order = OrderIn.parse_obj(rml_order_to_submit, OrderType.RML) - - # WHEN validating the order - ValidatePoolOrderService(status_db=base_store).validate_order(order=order) - # THEN it should be regarded as valid - - -@pytest.mark.xfail(reason="New validation to be implemented") -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: Customer = helpers.ensure_customer(store=base_store, customer_id=order.customer) - for sample in order.samples: - case = helpers.ensure_case( - store=base_store, - case_name=ValidatePoolOrderService.create_case_name( - ticket=order.ticket, pool_name=sample.pool - ), - customer=customer, - data_analysis=Workflow.FLUFFY, - data_delivery=DataDelivery.STATINA, - ) - base_store.session.add(case) - base_store.session.commit() - - # WHEN validating the order - # THEN it should be regarded as invalid - with pytest.raises(OrderError): - ValidatePoolOrderService(status_db=base_store).validate_order(order=order)