chore: migrate GRACE-Poly anchors to hierarchical dotted naming
Systematic rename of all semantic anchors (#region, [DEF], @RELATION) across 1400+ files — backend Python, frontend Svelte/TS, specs, docs: - Flat anchors become Namespace.Module.Entity - @RELATION references updated to match new anchor paths - Zero business logic changes
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# #region Test.DashboardReleaseModel [C:3] [TYPE Module] [SEMANTICS test,git,release,model]
|
||||
# @BRIEF Verify immutable dashboard release ledger fields.
|
||||
# @RELATION BINDS_TO -> [DashboardRelease]
|
||||
# @RELATION BINDS_TO -> [Models.DashboardRelease]
|
||||
# @TEST_CONTRACT: Valid release input -> immutable repository-scoped release record.
|
||||
# @TEST_EDGE: duplicate_version -> database unique constraint owns rejection.
|
||||
# @TEST_EDGE: missing_notes -> API schema rejects before persistence.
|
||||
@@ -11,7 +11,7 @@ from src.models.dashboard_release import DashboardRelease
|
||||
|
||||
|
||||
class TestDashboardRelease:
|
||||
# #region test_stores_pinned_candidate_hashes [C:2] [TYPE Function]
|
||||
# #region Test.DashboardReleaseModel.TestStoresPinnedCandidateHashes [C:2] [TYPE Function]
|
||||
# @BRIEF A release retains the exact commit and semantic content hash selected in PREPROD.
|
||||
def test_stores_pinned_candidate_hashes(self):
|
||||
release = DashboardRelease(
|
||||
@@ -28,7 +28,7 @@ class TestDashboardRelease:
|
||||
assert release.commit_hash == "a" * 40
|
||||
assert release.content_hash == "b" * 64
|
||||
assert release.status == "awaiting_approval"
|
||||
# #endregion test_stores_pinned_candidate_hashes
|
||||
# #endregion Test.DashboardReleaseModel.TestStoresPinnedCandidateHashes
|
||||
|
||||
|
||||
# #endregion Test.DashboardReleaseModel
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# #region Test.DeploymentModel [C:2] [TYPE Module] [SEMANTICS test, deployment, model, validation]
|
||||
# @BRIEF Python-level unit tests for DeploymentRecord model defaults.
|
||||
# @RELATION BINDS_TO -> [DeploymentModels]
|
||||
# @RELATION BINDS_TO -> [Models.Deployment.DeploymentModels]
|
||||
from src.models.deployment import DeploymentRecord
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# #region Test.FilterStateModels [C:3] [TYPE Module] [SEMANTICS test,filter_state,models]
|
||||
# @BRIEF Verify Pydantic filter-state models — creation, defaults, methods, and merge logic.
|
||||
# @RELATION BINDS_TO -> [FilterStateModels]
|
||||
# @RELATION BINDS_TO -> [Models.FilterState.FilterStateModels]
|
||||
# @TEST_EDGE: missing_filter_id -> get_extra_form_data returns empty dict
|
||||
# @TEST_EDGE: empty_dataMask -> has_filters returns False
|
||||
# @TEST_EDGE: append_non_list_fallback -> append key with non-list values falls through to override
|
||||
@@ -18,16 +18,16 @@ from src.models.filter_state import (
|
||||
class TestFilterStateModel:
|
||||
"""Verify FilterState creation and defaults."""
|
||||
|
||||
# #region test_filter_state_defaults [C:2] [TYPE Function]
|
||||
# #region Test.FilterStateModels.TestFilterStateDefaults [C:2] [TYPE Function]
|
||||
# @BRIEF FilterState with no args produces empty dicts for all three fields.
|
||||
def test_filter_state_defaults(self):
|
||||
fs = FilterState()
|
||||
assert fs.extraFormData == {}
|
||||
assert fs.filterState == {}
|
||||
assert fs.ownState == {}
|
||||
# #endregion test_filter_state_defaults
|
||||
# #endregion Test.FilterStateModels.TestFilterStateDefaults
|
||||
|
||||
# #region test_filter_state_all_fields [C:2] [TYPE Function]
|
||||
# #region Test.FilterStateModels.TestFilterStateAllFields [C:2] [TYPE Function]
|
||||
# @BRIEF FilterState with explicit values preserves every field.
|
||||
def test_filter_state_all_fields(self):
|
||||
fs = FilterState(
|
||||
@@ -38,13 +38,13 @@ class TestFilterStateModel:
|
||||
assert fs.extraFormData == {"time_range": "2024 : 2025"}
|
||||
assert fs.filterState == {"value": ["admin"]}
|
||||
assert fs.ownState == {"owner": "user_1"}
|
||||
# #endregion test_filter_state_all_fields
|
||||
# #endregion Test.FilterStateModels.TestFilterStateAllFields
|
||||
|
||||
|
||||
class TestNativeFilterDataMaskModel:
|
||||
"""Verify NativeFilterDataMask container methods."""
|
||||
|
||||
# #region test_get_filter_ids [C:2] [TYPE Function]
|
||||
# #region Test.FilterStateModels.TestGetFilterIds [C:2] [TYPE Function]
|
||||
# @BRIEF get_filter_ids returns all keys from the filters dict.
|
||||
def test_get_filter_ids(self):
|
||||
mask = NativeFilterDataMask(filters={
|
||||
@@ -52,56 +52,56 @@ class TestNativeFilterDataMaskModel:
|
||||
"NATIVE_FILTER_XYZ": FilterState(extraFormData={"col": "b"}),
|
||||
})
|
||||
assert mask.get_filter_ids() == ["NATIVE_FILTER_ABC", "NATIVE_FILTER_XYZ"]
|
||||
# #endregion test_get_filter_ids
|
||||
# #endregion Test.FilterStateModels.TestGetFilterIds
|
||||
|
||||
# #region test_get_extra_form_data_existing [C:2] [TYPE Function]
|
||||
# #region Test.FilterStateModels.TestGetExtraFormDataExisting [C:2] [TYPE Function]
|
||||
# @BRIEF get_extra_form_data returns extraFormData for a known filter ID.
|
||||
def test_get_extra_form_data_existing(self):
|
||||
mask = NativeFilterDataMask(filters={
|
||||
"NATIVE_FILTER_1": FilterState(extraFormData={"time_range": "Last week"}),
|
||||
})
|
||||
assert mask.get_extra_form_data("NATIVE_FILTER_1") == {"time_range": "Last week"}
|
||||
# #endregion test_get_extra_form_data_existing
|
||||
# #endregion Test.FilterStateModels.TestGetExtraFormDataExisting
|
||||
|
||||
# #region test_get_extra_form_data_missing [C:2] [TYPE Function]
|
||||
# #region Test.FilterStateModels.TestGetExtraFormDataMissing [C:2] [TYPE Function]
|
||||
# @BRIEF get_extra_form_data returns empty dict for unknown filter ID.
|
||||
def test_get_extra_form_data_missing(self):
|
||||
mask = NativeFilterDataMask(filters={
|
||||
"NATIVE_FILTER_1": FilterState(extraFormData={"col": "x"}),
|
||||
})
|
||||
assert mask.get_extra_form_data("NONEXISTENT_ID") == {}
|
||||
# #endregion test_get_extra_form_data_missing
|
||||
# #endregion Test.FilterStateModels.TestGetExtraFormDataMissing
|
||||
|
||||
|
||||
class TestParsedNativeFiltersModel:
|
||||
"""Verify ParsedNativeFilters query methods."""
|
||||
|
||||
# #region test_has_filters_true [C:2] [TYPE Function]
|
||||
# #region Test.FilterStateModels.TestHasFiltersTrue [C:2] [TYPE Function]
|
||||
# @BRIEF has_filters returns True when dataMask is non-empty.
|
||||
def test_has_filters_true(self):
|
||||
parsed = ParsedNativeFilters(dataMask={"f1": {}, "f2": {}})
|
||||
assert parsed.has_filters() is True
|
||||
# #endregion test_has_filters_true
|
||||
# #endregion Test.FilterStateModels.TestHasFiltersTrue
|
||||
|
||||
# #region test_has_filters_false [C:2] [TYPE Function]
|
||||
# #region Test.FilterStateModels.TestHasFiltersFalse [C:2] [TYPE Function]
|
||||
# @BRIEF has_filters returns False when dataMask is empty.
|
||||
def test_has_filters_false(self):
|
||||
parsed = ParsedNativeFilters()
|
||||
assert parsed.has_filters() is False
|
||||
# #endregion test_has_filters_false
|
||||
# #endregion Test.FilterStateModels.TestHasFiltersFalse
|
||||
|
||||
# #region test_get_filter_count [C:2] [TYPE Function]
|
||||
# #region Test.FilterStateModels.TestGetFilterCount [C:2] [TYPE Function]
|
||||
# @BRIEF get_filter_count returns the number of entries in dataMask.
|
||||
def test_get_filter_count(self):
|
||||
parsed = ParsedNativeFilters(dataMask={"a": {}, "b": {}, "c": {}})
|
||||
assert parsed.get_filter_count() == 3
|
||||
# #endregion test_get_filter_count
|
||||
# #endregion Test.FilterStateModels.TestGetFilterCount
|
||||
|
||||
|
||||
class TestDashboardURLFilterExtractionModel:
|
||||
"""Verify DashboardURLFilterExtraction creation and defaults."""
|
||||
|
||||
# #region test_dashboard_url_extraction_all_fields [C:2] [TYPE Function]
|
||||
# #region Test.FilterStateModels.TestDashboardUrlExtractionAllFields [C:2] [TYPE Function]
|
||||
# @BRIEF All fields populated are preserved correctly.
|
||||
def test_dashboard_url_extraction_all_fields(self):
|
||||
filters = ParsedNativeFilters(dataMask={"f1": {}})
|
||||
@@ -119,30 +119,30 @@ class TestDashboardURLFilterExtractionModel:
|
||||
assert extraction.filters is filters
|
||||
assert extraction.success is False
|
||||
assert extraction.error == "partial extraction"
|
||||
# #endregion test_dashboard_url_extraction_all_fields
|
||||
# #endregion Test.FilterStateModels.TestDashboardUrlExtractionAllFields
|
||||
|
||||
# #region test_dashboard_url_extraction_default_success [C:2] [TYPE Function]
|
||||
# #region Test.FilterStateModels.TestDashboardUrlExtractionDefaultSuccess [C:2] [TYPE Function]
|
||||
# @BRIEF success defaults to True when not specified.
|
||||
def test_dashboard_url_extraction_default_success(self):
|
||||
extraction = DashboardURLFilterExtraction(url="https://superset/dashboard/1")
|
||||
assert extraction.success is True
|
||||
assert extraction.error is None
|
||||
assert extraction.dashboard_id is None
|
||||
# #endregion test_dashboard_url_extraction_default_success
|
||||
# #endregion Test.FilterStateModels.TestDashboardUrlExtractionDefaultSuccess
|
||||
|
||||
|
||||
class TestExtraFormDataMergeModel:
|
||||
"""Verify ExtraFormDataMerge configuration and merge logic."""
|
||||
|
||||
# #region test_merge_default_config [C:2] [TYPE Function]
|
||||
# #region Test.FilterStateModels.TestMergeDefaultConfig [C:2] [TYPE Function]
|
||||
# @BRIEF Default append_keys and override_keys match the documented lists.
|
||||
def test_merge_default_config(self):
|
||||
cfg = ExtraFormDataMerge()
|
||||
assert cfg.append_keys == ["filters", "extras", "columns", "metrics"]
|
||||
assert cfg.override_keys == ["time_range", "time_grain_sqla", "time_column", "granularity"]
|
||||
# #endregion test_merge_default_config
|
||||
# #endregion Test.FilterStateModels.TestMergeDefaultConfig
|
||||
|
||||
# #region test_merge_override_keys [C:2] [TYPE Function]
|
||||
# #region Test.FilterStateModels.TestMergeOverrideKeys [C:2] [TYPE Function]
|
||||
# @BRIEF Override keys replace original values entirely.
|
||||
def test_merge_override_keys(self):
|
||||
cfg = ExtraFormDataMerge()
|
||||
@@ -151,9 +151,9 @@ class TestExtraFormDataMergeModel:
|
||||
result = cfg.merge(original, new)
|
||||
assert result["time_range"] == "2024 : 2025"
|
||||
assert result["time_grain_sqla"] == "MONTH"
|
||||
# #endregion test_merge_override_keys
|
||||
# #endregion Test.FilterStateModels.TestMergeOverrideKeys
|
||||
|
||||
# #region test_merge_append_keys [C:2] [TYPE Function]
|
||||
# #region Test.FilterStateModels.TestMergeAppendKeys [C:2] [TYPE Function]
|
||||
# @BRIEF Append keys concatenate lists from original and new.
|
||||
def test_merge_append_keys(self):
|
||||
cfg = ExtraFormDataMerge()
|
||||
@@ -162,9 +162,9 @@ class TestExtraFormDataMergeModel:
|
||||
result = cfg.merge(original, new)
|
||||
assert result["filters"] == [{"col": "a"}, {"col": "b"}]
|
||||
assert result["columns"] == ["x", "y", "z"]
|
||||
# #endregion test_merge_append_keys
|
||||
# #endregion Test.FilterStateModels.TestMergeAppendKeys
|
||||
|
||||
# #region test_merge_non_special_keys [C:2] [TYPE Function]
|
||||
# #region Test.FilterStateModels.TestMergeNonSpecialKeys [C:2] [TYPE Function]
|
||||
# @BRIEF Keys not in override or append lists fall through — new replaces original.
|
||||
def test_merge_non_special_keys(self):
|
||||
cfg = ExtraFormDataMerge()
|
||||
@@ -174,9 +174,9 @@ class TestExtraFormDataMergeModel:
|
||||
assert result["custom_key"] == "new_value"
|
||||
assert result["another"] == 1
|
||||
assert result["brand_new"] is True
|
||||
# #endregion test_merge_non_special_keys
|
||||
# #endregion Test.FilterStateModels.TestMergeNonSpecialKeys
|
||||
|
||||
# #region test_merge_append_non_list_fallback [C:2] [TYPE Function]
|
||||
# #region Test.FilterStateModels.TestMergeAppendNonListFallback [C:2] [TYPE Function]
|
||||
# @BRIEF Append key with non-list values falls through to simple override.
|
||||
def test_merge_append_non_list_fallback(self):
|
||||
cfg = ExtraFormDataMerge()
|
||||
@@ -184,7 +184,7 @@ class TestExtraFormDataMergeModel:
|
||||
new = {"filters": ["real_filter"]}
|
||||
result = cfg.merge(original, new)
|
||||
assert result["filters"] == ["real_filter"]
|
||||
# #endregion test_merge_append_non_list_fallback
|
||||
# #endregion Test.FilterStateModels.TestMergeAppendNonListFallback
|
||||
|
||||
|
||||
# #endregion Test.FilterStateModels
|
||||
|
||||
Reference in New Issue
Block a user