mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-10-06 06:16:21 +00:00

* Implement Modern Fluent API Pattern for OpenMetadata Java Client * Add Lineage, Bulk, Search static methods * Add all API support for Java & Python SDKs * Add Python SDKs and mock tests * Add Fluent APIs for sdks * Add Fluent APIs for sdks * Add Fluent APIs for sdks, support async import/export * Remove unnecessary scripts * fix py checkstyle * fix tests with new plural form sdks * Fix tests * remove examples from python sdk * remove examples from python sdk * Fix type check * Fix pyformat check * Fix pyformat check * fix python integration tests * fix pycheck and pytests * fix search api pycheck * fix pycheck * fix pycheck * fix pycheck * Fix test_sdk_integration * Improvements to SDK * Remove SDK coverage for Python 3.9 * Remove SDK coverage for Python 3.9 * Remove SDK coverage for Python 3.9
137 lines
5.2 KiB
Python
137 lines
5.2 KiB
Python
"""
|
|
Comprehensive unit tests for Test Definition entity.
|
|
"""
|
|
import unittest
|
|
from unittest.mock import MagicMock
|
|
from uuid import UUID
|
|
|
|
from metadata.generated.schema.api.tests.createTestDefinition import CreateTestDefinitionRequest
|
|
from metadata.generated.schema.entity.tests.testDefinition import TestDefinition as TestDefinitionEntity
|
|
from metadata.sdk.entities.testdefinition import TestDefinition
|
|
|
|
|
|
class TestTestDefinitionEntity(unittest.TestCase):
|
|
"""Comprehensive tests for TestDefinition entity operations"""
|
|
|
|
def setUp(self):
|
|
"""Set up test fixtures"""
|
|
self.mock_ometa = MagicMock()
|
|
TestDefinition._default_client = self.mock_ometa
|
|
|
|
self.entity_id = "550e8400-e29b-41d4-a716-446655440000"
|
|
self.entity_fqn = "service.test_definition.test_test_definition"
|
|
|
|
def test_create_test_definition(self):
|
|
"""Test creating a test definition"""
|
|
create_request = MagicMock(spec=CreateTestDefinitionRequest)
|
|
create_request.name = "test_test_definition"
|
|
create_request.displayName = "Test Test Definition"
|
|
create_request.description = "Test test definition for unit tests"
|
|
|
|
expected_entity = MagicMock(spec=TestDefinitionEntity)
|
|
expected_entity.id = UUID(self.entity_id)
|
|
expected_entity.name = "test_test_definition"
|
|
|
|
self.mock_ometa.create_or_update.return_value = expected_entity
|
|
|
|
result = TestDefinition.create(create_request)
|
|
|
|
self.assertEqual(str(result.id), self.entity_id)
|
|
self.assertEqual(result.name, "test_test_definition")
|
|
self.mock_ometa.create_or_update.assert_called_once_with(create_request)
|
|
|
|
def test_retrieve_test_definition_by_id(self):
|
|
"""Test retrieving a test definition by ID"""
|
|
expected_entity = MagicMock(spec=TestDefinitionEntity)
|
|
expected_entity.id = UUID(self.entity_id)
|
|
expected_entity.name = "test_test_definition"
|
|
|
|
self.mock_ometa.get_by_id.return_value = expected_entity
|
|
|
|
result = TestDefinition.retrieve(self.entity_id)
|
|
|
|
self.assertEqual(str(result.id), self.entity_id)
|
|
self.mock_ometa.get_by_id.assert_called_once_with(
|
|
entity=TestDefinitionEntity, entity_id=self.entity_id, fields=None
|
|
)
|
|
|
|
def test_retrieve_test_definition_by_name(self):
|
|
"""Test retrieving a test definition by name"""
|
|
expected_entity = MagicMock(spec=TestDefinitionEntity)
|
|
expected_entity.fullyQualifiedName = self.entity_fqn
|
|
|
|
self.mock_ometa.get_by_name.return_value = expected_entity
|
|
|
|
result = TestDefinition.retrieve_by_name(self.entity_fqn)
|
|
|
|
self.assertEqual(result.fullyQualifiedName, self.entity_fqn)
|
|
self.mock_ometa.get_by_name.assert_called_once_with(
|
|
entity=TestDefinitionEntity, fqn=self.entity_fqn, fields=None
|
|
)
|
|
|
|
def test_update_test_definition(self):
|
|
"""Test updating a test definition"""
|
|
entity_to_update = MagicMock(spec=TestDefinitionEntity)
|
|
entity_to_update.id = UUID(self.entity_id)
|
|
entity_to_update.description = "Updated description"
|
|
|
|
self.mock_ometa.create_or_update.return_value = entity_to_update
|
|
|
|
result = TestDefinition.update(self.entity_id, entity_to_update)
|
|
|
|
self.assertEqual(result.description, "Updated description")
|
|
self.mock_ometa.create_or_update.assert_called_once_with(entity_to_update)
|
|
|
|
def test_patch_test_definition(self):
|
|
"""Test patching a test definition"""
|
|
json_patch = [
|
|
{"op": "add", "path": "/description", "value": "Patched description"},
|
|
{"op": "add", "path": "/tags/0", "value": {"tagFQN": "Important.High"}},
|
|
]
|
|
|
|
patched_entity = MagicMock(spec=TestDefinitionEntity)
|
|
patched_entity.id = UUID(self.entity_id)
|
|
patched_entity.description = "Patched description"
|
|
|
|
self.mock_ometa.patch.return_value = patched_entity
|
|
|
|
result = TestDefinition.patch(self.entity_id, json_patch)
|
|
|
|
self.assertEqual(result.description, "Patched description")
|
|
self.mock_ometa.patch.assert_called_once_with(
|
|
entity=TestDefinitionEntity, entity_id=self.entity_id, json_patch=json_patch
|
|
)
|
|
|
|
def test_delete_test_definition(self):
|
|
"""Test deleting a test definition"""
|
|
TestDefinition.delete(self.entity_id, recursive=True, hard_delete=False)
|
|
|
|
self.mock_ometa.delete.assert_called_once_with(
|
|
entity=TestDefinitionEntity,
|
|
entity_id=self.entity_id,
|
|
recursive=True,
|
|
hard_delete=False,
|
|
)
|
|
|
|
def test_list_test_definitions(self):
|
|
"""Test listing test definitions"""
|
|
mock_entity1 = MagicMock(spec=TestDefinitionEntity)
|
|
mock_entity1.name = "entity1"
|
|
mock_entity2 = MagicMock(spec=TestDefinitionEntity)
|
|
mock_entity2.name = "entity2"
|
|
|
|
mock_response = MagicMock()
|
|
mock_response.entities = [mock_entity1, mock_entity2]
|
|
|
|
self.mock_ometa.list_entities.return_value = mock_response
|
|
|
|
result = TestDefinition.list(limit=10)
|
|
|
|
self.assertEqual(len(result), 2)
|
|
self.assertEqual(result[0].name, "entity1")
|
|
self.mock_ometa.list_entities.assert_called_once()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|