Spaces:
Sleeping
Sleeping
| # test_properties_dataset_metadata.py | |
| """ | |
| Property-based tests for dataset metadata display. | |
| Tests that dataset metadata is accurately displayed in the verification UI. | |
| **Feature: verification-mode, Property 12: Dataset Metadata is Displayed** | |
| **Validates: Requirements 7.2, 7.3** | |
| """ | |
| import pytest | |
| from hypothesis import given, strategies as st | |
| from src.core.test_datasets import TestDatasetManager | |
| from src.interface.verification_ui import VerificationUIComponents | |
| from src.core.verification_models import TestDataset, TestMessage | |
| class TestDatasetMetadataDisplay: | |
| """Property-based tests for dataset metadata display.""" | |
| def test_dataset_metadata_is_displayed(self, dataset: TestDataset): | |
| """ | |
| Property: For any dataset, when rendered, the metadata display should contain | |
| the dataset name, description, and accurate message count. | |
| **Feature: verification-mode, Property 12: Dataset Metadata is Displayed** | |
| **Validates: Requirements 7.2, 7.3** | |
| """ | |
| # Render the dataset metadata | |
| rendered = VerificationUIComponents.render_dataset_metadata(dataset) | |
| # Verify dataset name is displayed | |
| assert dataset.name in rendered, \ | |
| f"Dataset name '{dataset.name}' not found in rendered metadata" | |
| # Verify description is displayed | |
| assert dataset.description in rendered, \ | |
| f"Dataset description '{dataset.description}' not found in rendered metadata" | |
| # Verify message count is displayed | |
| assert str(dataset.message_count) in rendered, \ | |
| f"Message count '{dataset.message_count}' not found in rendered metadata" | |
| # Verify dataset ID is displayed | |
| assert dataset.dataset_id in rendered, \ | |
| f"Dataset ID '{dataset.dataset_id}' not found in rendered metadata" | |
| def test_dataset_metadata_accuracy(self, dataset: TestDataset): | |
| """ | |
| Property: For any dataset, the displayed message count should exactly match | |
| the actual number of messages in the dataset. | |
| **Feature: verification-mode, Property 12: Dataset Metadata is Displayed** | |
| **Validates: Requirements 7.2, 7.3** | |
| """ | |
| # Render the dataset metadata | |
| rendered = VerificationUIComponents.render_dataset_metadata(dataset) | |
| # Extract the message count from rendered output | |
| # The format is "Message Count: X messages" | |
| lines = rendered.split('\n') | |
| message_count_line = [l for l in lines if 'Message Count:' in l] | |
| assert len(message_count_line) > 0, \ | |
| "Message count line not found in rendered metadata" | |
| # Verify the displayed count matches actual count | |
| actual_count = dataset.message_count | |
| assert str(actual_count) in message_count_line[0], \ | |
| f"Displayed message count does not match actual count {actual_count}" | |
| def test_dataset_selection_confirmation_contains_metadata(self, dataset: TestDataset): | |
| """ | |
| Property: For any dataset, the selection confirmation should display | |
| the dataset name and message count. | |
| **Feature: verification-mode, Property 12: Dataset Metadata is Displayed** | |
| **Validates: Requirements 7.2, 7.3** | |
| """ | |
| # Render the selection confirmation | |
| confirmation = VerificationUIComponents.render_dataset_selection_confirmation(dataset) | |
| # Verify dataset name is in confirmation | |
| assert dataset.name in confirmation, \ | |
| f"Dataset name '{dataset.name}' not found in confirmation" | |
| # Verify message count is in confirmation | |
| assert str(dataset.message_count) in confirmation, \ | |
| f"Message count '{dataset.message_count}' not found in confirmation" | |
| def test_dataset_metadata_display_with_none_dataset(self): | |
| """Test that metadata display handles None dataset gracefully.""" | |
| rendered = VerificationUIComponents.render_dataset_metadata(None) | |
| assert "No dataset selected" in rendered | |
| def test_dataset_selection_confirmation_with_none_dataset(self): | |
| """Test that selection confirmation handles None dataset gracefully.""" | |
| confirmation = VerificationUIComponents.render_dataset_selection_confirmation(None) | |
| assert "No dataset selected" in confirmation | |
| def test_all_datasets_have_metadata(self): | |
| """Test that all datasets have required metadata fields.""" | |
| datasets = TestDatasetManager.get_all_datasets() | |
| for dataset_id, dataset in datasets.items(): | |
| # Verify all required fields exist | |
| assert dataset.dataset_id, f"Dataset {dataset_id} missing dataset_id" | |
| assert dataset.name, f"Dataset {dataset_id} missing name" | |
| assert dataset.description, f"Dataset {dataset_id} missing description" | |
| assert dataset.message_count > 0, f"Dataset {dataset_id} has no messages" | |
| # Verify metadata is displayable | |
| rendered = VerificationUIComponents.render_dataset_metadata(dataset) | |
| assert dataset.name in rendered | |
| assert dataset.description in rendered | |
| assert str(dataset.message_count) in rendered | |