Beispiel #1
0
 def add_to_warehouse_message(self, message: WarehouseMessage):
     message.add_subject(
         role_type=ROLE_TYPE_ROBOT,
         subject_type=SUBJECT_TYPE_ROBOT,
         friendly_name=self._robot_serial_number.value,
         uuid=self.value,
     )
 def add_to_warehouse_message(self, message: WarehouseMessage):
     for control in self.value.values():
         message.add_subject(
             role_type="control",
             subject_type="sample",
             friendly_name=self._supplier_name_for_control(control),
         )
Beispiel #3
0
 def add_to_warehouse_message(self, message: WarehouseMessage):
     message.add_subject(
         role_type=ROLE_TYPE_ROBOT,
         subject_type=SUBJECT_TYPE_ROBOT,
         friendly_name=self._automation_system_name.value,
         uuid=self.value,
     )
Beispiel #4
0
 def add_to_warehouse_message(self, message: WarehouseMessage):
     message.add_subject(
         role_type=ROLE_TYPE_CP_SOURCE_LABWARE,
         subject_type=SUBJECT_TYPE_PLATE,
         friendly_name=self._barcode_property.value,
         uuid=self.value,
     )
Beispiel #5
0
 def add_to_warehouse_message(self, message: WarehouseMessage):
     for source_plate in self.value:
         message.add_subject(
             role_type=ROLE_TYPE_CP_SOURCE_LABWARE,
             subject_type=SUBJECT_TYPE_PLATE,
             friendly_name=source_plate[FIELD_BARCODE],
             uuid=source_plate[FIELD_LH_SOURCE_PLATE_UUID],
         )
def test_add_sample_as_subject(samples):
    message = WarehouseMessage("mytype", "myuuid", "at some point")

    message.add_sample_as_subject(samples[0][0])
    assert message._subjects == [
        {
            "friendly_name": "sample_001__rna_1__lab_1__Positive",
            "role_type": "sample",
            "subject_type": "sample",
            "uuid": "0a53e7b6-7ce8-4ebc-95c3-02dd64942531",
        }
    ]
def test_source_plates_from_destination_add_to_warehouse(
    app,
    run_id,
    destination_barcode,
    samples_from_cherrytrack_into_mongo,
    mocked_responses,
    source_plates,
    cherrytrack_mock_destination_plate,
    cherrytrack_destination_plate_response,
):
    with app.app_context():
        instance = SourcePlatesFromDestination(
            WellsFromDestination(PlateBarcode({FIELD_EVENT_BARCODE: destination_barcode}))
        )

        message = WarehouseMessage("mytype", "myuuid", "at some point")
        instance.add_to_warehouse_message(message)
        assert message._subjects == [
            {
                "role_type": "cherrypicking_source_labware",
                "subject_type": "plate",
                "friendly_name": "plate_123",
                "uuid": "a17c38cd-b2df-43a7-9896-582e7855b4cc",
            }
        ]
def test_samples_with_cog_uk_id_from_destination_add_to_warehouse(
    app,
    run_id,
    centres,
    destination_barcode,
    samples_from_cherrytrack_into_mongo,
    mlwh_samples_in_cherrytrack,
    mocked_responses,
    cherrytrack_mock_destination_plate,
    cherrytrack_destination_plate_response,
    baracoda_mock_barcodes_group,
    baracoda_mock_responses,
):
    with app.app_context():
        samples, _ = samples_from_cherrytrack_into_mongo
        instance = SamplesWithCogUkId(
            SamplesFromDestination(WellsFromDestination(PlateBarcode({FIELD_EVENT_BARCODE: destination_barcode})))
        )
        message = WarehouseMessage("mytype", "myuuid", "at some point")
        instance.add_to_warehouse_message(message)
        assert message._subjects == [
            {
                "friendly_name": "aRootSampleId1__DS000050001_A01__centre_1__Positive",
                "role_type": "sample",
                "subject_type": "sample",
                "uuid": "aLighthouseUUID1",
            },
            {
                "friendly_name": "aRootSampleId3__DS000050001_A03__centre_1__Positive",
                "role_type": "sample",
                "subject_type": "sample",
                "uuid": "aLighthouseUUID3",
            },
        ]
def test_add_to_warehouse(app, params):
    klass, field, valid_list, invalid_list = params

    for valid in valid_list:
        message = WarehouseMessage("mytype", "myuuid", "at some point")
        try:
            klass({field: valid}).add_to_warehouse_message(message)
        except Exception:
            pytest.fail("Error while adding to message ..")
def test_render(app):
    with app.app_context():
        message = WarehouseMessage("mytype", "myuuid", "at some point")
        with pytest.raises(Exception):
            message.render()

        message.set_user_id("my user")

        assert isinstance(message.render(), Message)
def test_add_subject():
    message = WarehouseMessage("mytype", "myuuid", "at some point")
    message.add_subject("myrole", "mysubject", "myname", "myuuid")

    assert message._subjects == [
        {
            "role_type": "myrole",
            "subject_type": "mysubject",
            "friendly_name": "myname",
            "uuid": "myuuid",
        }
    ]
    with patch("lighthouse.classes.messages.warehouse_messages.uuid4", return_value="avalue"):
        message.add_subject("myrole", "mysubject", "myname", None)

    assert message._subjects == [
        {
            "role_type": "myrole",
            "subject_type": "mysubject",
            "friendly_name": "myname",
            "uuid": "myuuid",
        },
        {
            "role_type": "myrole",
            "subject_type": "mysubject",
            "friendly_name": "myname",
            "uuid": "avalue",
        },
    ]
Beispiel #12
0
    def build_new_warehouse_message(self) -> WarehouseMessage:
        """
        Builds a new empty warehouse message with the generic information of an event:
        (type, uuid, timestamp). All other information needs to be fill in.
        Raises an exception if it does not have all information.

        Returns
            {WarehouseMessage} - Message that we are building in order to publish to
            the warehouse
        """
        if self.state == PlateEvent.EVENT_NOT_INITIALIZED:
            raise EventNotInitializedError(
                "We cannot build a new message because the event is not initialized"
            )
        return WarehouseMessage(self.event_type, self.event_uuid,
                                self.message_timestamp)
def test_construct_event_message(app):
    with app.app_context():
        message = WarehouseMessage("mytype", "myuuid", "at some point")

        with pytest.raises(Exception):
            message.construct_event_message("myuuid", "some date", [{"data": "data2"}], {"test": "test2"})

        message.set_user_id("my user")
        msg = message.construct_event_message("myuuid", "some date", [{"data": "data2"}], {"test": "test2"})

        assert msg == {
            "event": {
                "uuid": "myuuid",
                "event_type": "mytype",
                "occured_at": "some date",
                "user_identifier": "my user",
                "subjects": [{"data": "data2"}],
                "metadata": {"test": "test2"},
            },
            "lims": app.config["RMQ_LIMS_ID"],
        }
def test_add_metadata(app):
    message = WarehouseMessage("mytype", "myuuid", "at some point")
    message.add_metadata("myrobot", "robot1")
    message.add_metadata("myotherrobot", "robot2")
    assert message._metadata == {"myrobot": "robot1", "myotherrobot": "robot2"}
def test_can_set_user_id():
    message = WarehouseMessage("mytype", "myuuid", "at some point")
    message.set_user_id("user 1")

    assert message._user_id == "user 1"
Beispiel #16
0
 def add_to_warehouse_message(self, message: WarehouseMessage):
     message.set_user_id(self.value)
 def add_to_warehouse_message(self, message: WarehouseMessage):
     for sample in self.value.values():
         message.add_sample_as_subject(sample)
Beispiel #18
0
 def add_to_warehouse_message(self, message: WarehouseMessage):
     message.add_subject(
         role_type=ROLE_TYPE_RUN,
         subject_type=SUBJECT_TYPE_RUN,
         friendly_name=self.run_id,
     )
Beispiel #19
0
 def add_to_warehouse_message(self, message: WarehouseMessage):
     message.add_subject(
         role_type=ROLE_TYPE_CP_DESTINATION_LABWARE,
         subject_type=SUBJECT_TYPE_PLATE,
         friendly_name=self.value,
     )
Beispiel #20
0
 def add_to_warehouse_message(self, message: WarehouseMessage):
     message.add_metadata("failure_type", self.value)