def test_partial_update_should_update_score_modifiers_and_version_uuid(self):
        """Test that partial updates to score modifiers are successful.
            Along with updating score modifiers, we also check that version_uuid changes since we are processing an update request that contains maps.
        """
        test_docs = [self.doc2, self.doc3]

        version_uuid = {}

        for doc in test_docs:
            with self.subTest(f"Updating score modifiers for document with ID {doc['_id']}"):
                id = doc['_id']
                # Doing a get to set the version_uuid in the version_uuid hashmap, which we'll check later to make sure it has changed after
                # processing an update request that contains maps
                raw_vespa_doc = self.config.vespa_client.get_document(id, self.index.schema_name)
                doc = raw_vespa_doc.document.dict().get('fields')
                self.assertIsNotNone(doc.get('marqo__version_uuid'))  # version_uuid should be present.
                version_uuid[id] = doc.get('marqo__version_uuid')

                res = self.config.document.partial_update_documents([{'_id': id, 'int_map': {
                    'a': 2,  # update int to int
                    'd': 5,  # new entry in int map
                }, 'float_map': {
                    'c': 3.0,  # update float to float
                }, 'new_int': 1,  # new int field
                                                                      'new_float': 2.0,  # new float field
                                                                      'new_map': {'a': 1, 'b': 2.0},  # new map field
                                                                      }], self.index)
                self.assertFalse(res.errors, f"Expected no errors when updating document {id}")

                # Verify field types
                field_type_pairs = [
                    ('int_map', MarqoFieldTypes.INT_MAP),
                    ('int_map.a', MarqoFieldTypes.INT_MAP),
                    ('int_map.d', MarqoFieldTypes.INT_MAP),
                    ('float_map', MarqoFieldTypes.FLOAT_MAP),
                    ('float_map.c', MarqoFieldTypes.FLOAT_MAP),
                    ('new_int', MarqoFieldTypes.INT),
                    ('new_float', MarqoFieldTypes.FLOAT),
                    ('new_map.a', MarqoFieldTypes.INT_MAP),
                    ('new_map.b', MarqoFieldTypes.FLOAT_MAP),
                    ('new_map', MarqoFieldTypes.FLOAT_MAP),
                    ('int_map.b', None),
                    ('float_map.d', None)
                ]

                self._assert_field_types(id, field_type_pairs)

                # Also check score modifiers values
                raw_vespa_doc = self.config.vespa_client.get_document(id, self.config.index_management.get_index(
                    self.index.name).schema_name)
                doc = raw_vespa_doc.document.dict().get('fields')
                int_field_val = self.id_to_doc[id].get('int_field', 0)
                self.assertEqual(doc['marqo__score_modifiers']['cells']['int_field'], float(int_field_val))
                float_field_val = self.id_to_doc[id].get('float_field', 0)
                self.assertEqual(doc['marqo__score_modifiers']['cells']['float_field'], float(float_field_val))
                self.assertEqual(doc['marqo__score_modifiers']['cells']['int_map.a'], 2.0)
                self.assertEqual(doc['marqo__score_modifiers']['cells']['float_map.c'], 3.0)

                # assert that the map keys that must've been removed don't exist in marqo__score_modifiers
                self.assertEqual(doc['marqo__score_modifiers']['cells'].get('int_map.b', None), None)
                self.assertEqual(doc['marqo__score_modifiers']['cells'].get('float_map.d', None), None)
                self.assertEqual(doc['marqo__score_modifiers']['cells']['new_int'], 1.0)
                self.assertEqual(doc['marqo__score_modifiers']['cells']['new_float'], 2.0)
                self.assertEqual(doc['marqo__score_modifiers']['cells']['new_map.a'], 1.0)
                self.assertEqual(doc['marqo__score_modifiers']['cells']['new_map.b'], 2.0)
                self.assertEqual(doc['marqo__score_modifiers']['cells']['int_map.d'], 5.0)
                # Assert that after processing an update request that contains map fields, version uuid changes
                self.assertNotEqual(doc.get('marqo__version_uuid'), version_uuid.get(id))  # version_uuid should change
Test that partial updates to score modifiers are successful.
            Along with updating score modifiers, we also check that version_uuid changes since we are processing an update request that contains maps.
        
tests/integ_tests/core/document/test_partial_update_semi_structured.py