From 5ac25da548c71107e73f7b1407f2b68a7578f513 Mon Sep 17 00:00:00 2001 From: nlebovits Date: Sat, 4 Oct 2025 15:01:57 -0300 Subject: [PATCH] Add test coverage for ConformanceClasses enum - Add tests for get_by_name() method including error cases and valid lookups - Add tests for valid_uri property that generates STAC API conformance URIs - Add tests for pattern property that creates regex patterns for URI matching - Achieve 100% test coverage for conformance.py module --- CHANGELOG.md | 3 +++ tests/test_conformance.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 tests/test_conformance.py diff --git a/CHANGELOG.md b/CHANGELOG.md index a3d763cb..9ee93213 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Make `get_collection` raise if `collection_id` is empty ([#809](https://github.com/stac-utils/pystac-client/pull/809)) +### Added +- Add comprehensive test coverage for ConformanceClasses enum ([#834](https://github.com/stac-utils/pystac-client/pull/834)) + ## [v0.9.0] - 2025-07-17 ### Added diff --git a/tests/test_conformance.py b/tests/test_conformance.py new file mode 100644 index 00000000..d2dc873d --- /dev/null +++ b/tests/test_conformance.py @@ -0,0 +1,32 @@ +import pytest + +from pystac_client.conformance import ConformanceClasses + + +class TestConformanceClasses: + def test_get_by_name_raises_for_invalid_names(self) -> None: + """Test get_by_name raises ValueError for invalid conformance class names.""" + with pytest.raises(ValueError, match="Invalid conformance class 'invalid'"): + ConformanceClasses.get_by_name("invalid") + + with pytest.raises(ValueError, match="Invalid conformance class 'nonexistent'"): + ConformanceClasses.get_by_name("nonexistent") + + with pytest.raises(ValueError, match="Invalid conformance class ''"): + ConformanceClasses.get_by_name("") + + def test_get_by_name_valid(self) -> None: + """Test get_by_name with valid conformance class names.""" + assert ConformanceClasses.get_by_name("core") == ConformanceClasses.CORE + assert ConformanceClasses.get_by_name("CORE") == ConformanceClasses.CORE + + def test_valid_uri_property(self) -> None: + """Test valid_uri property returns correct URI pattern.""" + assert ( + ConformanceClasses.CORE.valid_uri == "https://api.stacspec.org/v1.0.*/core" + ) + + def test_pattern_property(self) -> None: + """Test pattern property returns compiled regex.""" + core_pattern = ConformanceClasses.CORE.pattern + assert core_pattern.match("https://api.stacspec.org/v1.0.0/core")