def testClearFhirExtensions_withMultipleExtensions_succeeds(self): """Tests ClearFhirExtensions when a message has multiple extensions.""" arbitrary_string = datatypes_pb2.String() arbitrary_string.extension.add( url=datatypes_pb2.Uri(value='first'), value=datatypes_pb2.Extension.ValueX(boolean=datatypes_pb2.Boolean( value=True))) arbitrary_string.extension.add( url=datatypes_pb2.Uri(value='second'), value=datatypes_pb2.Extension.ValueX(boolean=datatypes_pb2.Boolean( value=True))) arbitrary_string.extension.add( url=datatypes_pb2.Uri(value='third'), value=datatypes_pb2.Extension.ValueX(boolean=datatypes_pb2.Boolean( value=True))) self.assertLen(extensions.get_fhir_extensions(arbitrary_string), 3) # Remove middle extension extensions.clear_fhir_extensions_with_url(arbitrary_string, 'second') remaining_extensions = extensions.get_fhir_extensions(arbitrary_string) self.assertLen(remaining_extensions, 2) remaining_urls = [ extension.url.value for extension in remaining_extensions ] self.assertEqual(remaining_urls, ['first', 'third'])
def testSetValueAtField_singleCompositeValue_setsValue(self): """Test set_value_at_field with a singular compositie type.""" patient = patient_pb2.Patient(active=datatypes_pb2.Boolean(value=False)) self.assertFalse(patient.active.value) proto_utils.set_value_at_field(patient, "active", datatypes_pb2.Boolean(value=True)) self.assertTrue(patient.active.value)
def testCopyCommonField_notPresentInBothMessages_raisesException(self): """Tests copy_common_field with an invalid descriptor raises.""" first_patient = patient_pb2.Patient( active=datatypes_pb2.Boolean(value=True)) second_patient = patient_pb2.Patient( active=datatypes_pb2.Boolean(value=False)) with self.assertRaises(ValueError) as ve: proto_utils.copy_common_field(first_patient, second_patient, "value") self.assertIsInstance(ve.exception, ValueError)
def testGetFhirExtensions_withExtensions_returnsList(self): """Tests get_fhir_extensions returns a non-empty list with extensions.""" patient = patient_pb2.Patient() patient.extension.add(url=datatypes_pb2.Uri(value='abcd'), value=datatypes_pb2.Extension.ValueX( boolean=datatypes_pb2.Boolean(value=True))) self.assertLen(extensions.get_fhir_extensions(patient), 1)
def testGetValueRegexForPrimitiveType_withPrimitive_returnsValue(self): """Test get_value_regex_for_primitive_type functionality on primitives.""" boolean = datatypes_pb2.Boolean() boolean_descriptor_proto = self._descriptor_proto_for_descriptor( boolean.DESCRIPTOR) code = datatypes_pb2.Code() code_descriptor_proto = self._descriptor_proto_for_descriptor( code.DESCRIPTOR) self.assertEqual( annotation_utils.get_value_regex_for_primitive_type(boolean), _BOOLEAN_VALUE_REGEX) self.assertEqual( annotation_utils.get_value_regex_for_primitive_type(boolean.DESCRIPTOR), _BOOLEAN_VALUE_REGEX) self.assertEqual( annotation_utils.get_value_regex_for_primitive_type(code), _CODE_VALUE_REGEX) self.assertEqual( annotation_utils.get_value_regex_for_primitive_type(code.DESCRIPTOR), _CODE_VALUE_REGEX) self.assertEqual( annotation_utils.get_value_regex_for_primitive_type( boolean_descriptor_proto), _BOOLEAN_VALUE_REGEX) self.assertEqual( annotation_utils.get_value_regex_for_primitive_type( code_descriptor_proto), _CODE_VALUE_REGEX)
def testGetStructureDefinitionUrl_withFhirType_returnsValue(self): """Test get_structure_definition_url functionality on FHIR types.""" boolean = datatypes_pb2.Boolean() boolean_descriptor_proto = self._descriptor_proto_for_descriptor( boolean.DESCRIPTOR) code = datatypes_pb2.Code() code_descriptor_proto = self._descriptor_proto_for_descriptor( code.DESCRIPTOR) patient = patient_pb2.Patient() patient_descriptor_proto = self._descriptor_proto_for_descriptor( patient.DESCRIPTOR) self.assertEqual( annotation_utils.get_structure_definition_url(boolean), _BOOLEAN_STRUCTURE_DEFINITION_URL) self.assertEqual( annotation_utils.get_structure_definition_url(boolean.DESCRIPTOR), _BOOLEAN_STRUCTURE_DEFINITION_URL) self.assertEqual( annotation_utils.get_structure_definition_url(code), _CODE_STRUCTURE_DEFINITION_URL) self.assertEqual( annotation_utils.get_structure_definition_url(patient), _PATIENT_STRUCTURE_DEFINITION_URL) self.assertEqual( annotation_utils.get_structure_definition_url(patient.DESCRIPTOR), _PATIENT_STRUCTURE_DEFINITION_URL) self.assertEqual( annotation_utils.get_structure_definition_url(boolean_descriptor_proto), _BOOLEAN_STRUCTURE_DEFINITION_URL) self.assertEqual( annotation_utils.get_structure_definition_url(code_descriptor_proto), _CODE_STRUCTURE_DEFINITION_URL) self.assertEqual( annotation_utils.get_structure_definition_url(patient_descriptor_proto), _PATIENT_STRUCTURE_DEFINITION_URL)
def testGetFixedCodingSystem_withInvalidMessage_returnsNone(self): """Test get_fixed_coding_system functionality with no annotation present.""" boolean = datatypes_pb2.Boolean() self.assertIsNone(annotation_utils.get_fixed_coding_system(boolean)) code = datatypes_pb2.Code() self.assertIsNone(annotation_utils.get_fixed_coding_system(code))
def testMessageIsType_withActualMessageType_returnsTrue(self): """Test MessageIsType functionality against the proper FHIR type.""" patient = patient_pb2.Patient() self.assertTrue(proto_utils.is_message_type(patient, patient_pb2.Patient)) boolean = datatypes_pb2.Boolean() self.assertTrue(proto_utils.is_message_type(boolean, datatypes_pb2.Boolean))
def testGetValueAtFieldIndex_invalidIndex_raisesException(self): """Test get_value_at_field_index with an invalid index.""" patient = patient_pb2.Patient(active=datatypes_pb2.Boolean(value=True)) with self.assertRaises(ValueError) as ve: proto_utils.get_value_at_field_index(patient, "active", 1) self.assertIsInstance(ve.exception, ValueError)
def testSetInParentOrAdd_withSingularPrimitive_raises(self): """Test set_in_parent_or_add with singular proto primitive.""" boolean = datatypes_pb2.Boolean() with self.assertRaises(ValueError) as ve: proto_utils.set_in_parent_or_add(boolean, "value") self.assertIsInstance(ve.exception, ValueError)
def testIsResource_withPrimitives_returnsFalse(self): """Test is_resource functionality on primitive input.""" boolean = datatypes_pb2.Boolean() code = datatypes_pb2.Code() self.assertFalse(annotation_utils.is_resource(boolean)) self.assertFalse(annotation_utils.is_resource(boolean.DESCRIPTOR)) self.assertFalse(annotation_utils.is_resource(code)) self.assertFalse(annotation_utils.is_resource(code.DESCRIPTOR))
def testIsPrimitiveType_withPrimitives_returnsTrue(self): """Test is_primitive_type functionality on primitive input.""" boolean = datatypes_pb2.Boolean() code = datatypes_pb2.Code() self.assertTrue(annotation_utils.is_primitive_type(boolean)) self.assertTrue(annotation_utils.is_primitive_type(boolean.DESCRIPTOR)) self.assertTrue(annotation_utils.is_primitive_type(code)) self.assertTrue(annotation_utils.is_primitive_type(code.DESCRIPTOR))
def testMessageIsType_withDifferentMessageType_returnsFalse(self): """Test MessageIsType functionality against a different FHIR type.""" patient = patient_pb2.Patient() self.assertFalse( proto_utils.is_message_type(patient, datatypes_pb2.Boolean)) boolean = datatypes_pb2.Boolean() self.assertFalse(proto_utils.is_message_type(boolean, patient_pb2.Patient))
def testIsReference_withInvalidReferenceType_returnsFalse(self): """Test is_reference functionality on invalid input.""" boolean = datatypes_pb2.Boolean() code = datatypes_pb2.Code() self.assertFalse(annotation_utils.is_reference(boolean)) self.assertFalse(annotation_utils.is_reference(boolean.DESCRIPTOR)) self.assertFalse(annotation_utils.is_reference(code)) self.assertFalse(annotation_utils.is_reference(code.DESCRIPTOR))
def testIsChoiceType_withInvalidChoiceType_returnsFalse(self): """Test is_choice_type functionality on invalid input.""" boolean = datatypes_pb2.Boolean() value_fd = boolean.DESCRIPTOR.fields_by_name['value'] self.assertFalse(annotation_utils.is_choice_type_field(value_fd)) patient = patient_pb2.Patient() text_fd = patient.DESCRIPTOR.fields_by_name['text'] self.assertFalse(annotation_utils.is_choice_type_field(text_fd))
def testAppendValueAtField_singularCompositeValue_raises(self): """Test append_value_at_field with a singular composite type.""" patient = patient_pb2.Patient() active = datatypes_pb2.Boolean(value=True) with self.assertRaises(ValueError) as ve: proto_utils.append_value_at_field(patient, "active", active) self.assertIsInstance(ve.exception, ValueError)
def testCopyCommonField_differentMessageTypes_succeeds(self): """Tests that copy_common_field succeeds on a single Message field.""" string_value = datatypes_pb2.String(id=datatypes_pb2.String(value="foo")) boolean_value = datatypes_pb2.Boolean(id=datatypes_pb2.String(value="bar")) # Before copy self.assertEqual(string_value.id.value, "foo") self.assertEqual(boolean_value.id.value, "bar") proto_utils.copy_common_field(string_value, boolean_value, "id") # After copy self.assertEqual(string_value.id.value, "foo") self.assertEqual(boolean_value.id.value, "foo")
def testFieldContentLength_withSingularField_returnsSingleCount(self): """Test field_content_length functionality on singular field input.""" patient = patient_pb2.Patient(active=datatypes_pb2.Boolean(value=True)) self.assertEqual(proto_utils.field_content_length(patient, "active"), 1)
def testGetValueAtFieldIndex_withSingularField_returnsValue(self): """Test get_value_at_field_index with a singular field.""" patient = patient_pb2.Patient(active=datatypes_pb2.Boolean(value=True)) result = proto_utils.get_value_at_field_index(patient, "active", 0) self.assertTrue(result.value)
def testFieldIsSet_withSetField_returnsTrue(self): """Test field_is_set with a set field.""" patient = patient_pb2.Patient(active=datatypes_pb2.Boolean(value=True)) self.assertTrue(proto_utils.field_is_set(patient, "active"))
def testGetValueAtField_withSingularComposite_returnsValue(self): """Test get_value_at_field with a singular composite field.""" active_value = datatypes_pb2.Boolean(value=True) patient = patient_pb2.Patient(active=active_value) result = proto_utils.get_value_at_field(patient, "active") self.assertEqual(result, active_value)