This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
"""
|
||||
Test mixins for MetadataContainer functionality.
|
||||
|
||||
Provides reusable test cases for any class that uses the MetadataContainer mixin.
|
||||
"""
|
||||
|
||||
|
||||
class MetadataContainerTestMixin:
|
||||
"""
|
||||
Mixin providing standard tests for MetadataContainer behavior.
|
||||
|
||||
Classes using this mixin must implement:
|
||||
- create_test_object() -> object with MetadataContainer mixin
|
||||
"""
|
||||
|
||||
def create_test_object(self):
|
||||
"""
|
||||
Create an instance of the object to test.
|
||||
Must be implemented by test class.
|
||||
"""
|
||||
raise NotImplementedError("Test class must implement create_test_object()")
|
||||
|
||||
def test_set_and_get_metadata(self):
|
||||
"""Test basic metadata storage and retrieval."""
|
||||
obj = self.create_test_object()
|
||||
|
||||
# Set various types of metadata
|
||||
obj.set_metadata("string_key", "string_value")
|
||||
obj.set_metadata("int_key", 42)
|
||||
obj.set_metadata("list_key", [1, 2, 3])
|
||||
obj.set_metadata("dict_key", {"nested": "value"})
|
||||
|
||||
# Verify retrieval
|
||||
self.assertEqual(obj.get_metadata("string_key"), "string_value")
|
||||
self.assertEqual(obj.get_metadata("int_key"), 42)
|
||||
self.assertEqual(obj.get_metadata("list_key"), [1, 2, 3])
|
||||
self.assertEqual(obj.get_metadata("dict_key"), {"nested": "value"})
|
||||
|
||||
def test_get_nonexistent_metadata(self):
|
||||
"""Test that getting nonexistent metadata returns None."""
|
||||
obj = self.create_test_object()
|
||||
|
||||
result = obj.get_metadata("nonexistent_key")
|
||||
self.assertIsNone(result, "Nonexistent metadata should return None")
|
||||
|
||||
def test_update_metadata(self):
|
||||
"""Test that metadata values can be updated."""
|
||||
obj = self.create_test_object()
|
||||
|
||||
# Set initial value
|
||||
obj.set_metadata("key", "initial")
|
||||
self.assertEqual(obj.get_metadata("key"), "initial")
|
||||
|
||||
# Update value
|
||||
obj.set_metadata("key", "updated")
|
||||
self.assertEqual(obj.get_metadata("key"), "updated", "Metadata should be updateable")
|
||||
|
||||
def test_metadata_isolation(self):
|
||||
"""Test that metadata is isolated between instances."""
|
||||
obj1 = self.create_test_object()
|
||||
obj2 = self.create_test_object()
|
||||
|
||||
obj1.set_metadata("key", "value1")
|
||||
obj2.set_metadata("key", "value2")
|
||||
|
||||
self.assertEqual(obj1.get_metadata("key"), "value1")
|
||||
self.assertEqual(obj2.get_metadata("key"), "value2")
|
||||
self.assertNotEqual(obj1.get_metadata("key"), obj2.get_metadata("key"))
|
||||
Reference in New Issue
Block a user