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), )
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, )
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, )
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", }, ]
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"
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)
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, )
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, )
def add_to_warehouse_message(self, message: WarehouseMessage): message.add_metadata("failure_type", self.value)