diff --git a/dapr/clients/grpc/_state.py b/dapr/clients/grpc/_state.py index e20df4293..9120a81f2 100644 --- a/dapr/clients/grpc/_state.py +++ b/dapr/clients/grpc/_state.py @@ -59,7 +59,7 @@ def __init__( value: Union[bytes, str], etag: Optional[str] = None, options: Optional[StateOptions] = None, - metadata: Optional[Dict[str, str]] = dict(), + metadata: Optional[Dict[str, str]] = None, ): """Inits StateItem with the required parameters. @@ -80,7 +80,7 @@ def __init__( self._value = value self._etag = etag self._options = options - self._metadata = metadata + self._metadata = metadata if metadata is not None else {} @property def key(self): diff --git a/tests/clients/test_state.py b/tests/clients/test_state.py new file mode 100644 index 000000000..8eeb9f325 --- /dev/null +++ b/tests/clients/test_state.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 + +""" +Unit tests for the StateItem class. +""" + +import unittest + +from dapr.clients.grpc._state import StateItem + + +class TestStateItem(unittest.TestCase): + """Test cases for StateItem.""" + + def test_metadata_defaults_to_empty_dict(self): + item = StateItem(key='key1', value='value1') + self.assertEqual(item.metadata, {}) + + def test_metadata_not_shared_between_instances(self): + item1 = StateItem(key='key1', value='value1') + item2 = StateItem(key='key2', value='value2') + + item1.metadata['injected'] = 'value' + + self.assertNotIn('injected', item2.metadata) + + def test_metadata_uses_provided_value(self): + item = StateItem(key='key1', value='value1', metadata={'k': 'v'}) + self.assertEqual(item.metadata, {'k': 'v'}) + + +if __name__ == '__main__': + unittest.main()