Skip to content

Commit

Permalink
993 progress: convert last 4 files outside of extensions/ (#1530)
Browse files Browse the repository at this point in the history
* 993 convert assertions in test_cache.py

* 993 declass test_cache.py

* 993 finalize test_cache.py w/ pre-commit

* 993 prep test_common_metadata.py for pytest

* 993 convert assertions to pytest

* 993 declass ITEM_1 test functions

* 993 declass ITEM_2 tests

* 993 prep TestAssetCommonMetadata for conversion

* 993 convert first test into new class

* 993 convert TestAssetCommonMetadata to pytest

* 993 ruff gettin rough with my formatting

* 993 convert validation/test_schema_uri_map.py to pytest

* 993 convert test_identify.py to pytest

* 993 forgot to remove a comment
  • Loading branch information
teks authored Feb 20, 2025
1 parent 6d0bf65 commit ff453bb
Show file tree
Hide file tree
Showing 4 changed files with 385 additions and 420 deletions.
81 changes: 40 additions & 41 deletions tests/serialization/test_identify.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import unittest

import pytest

import pystac
Expand Down Expand Up @@ -93,42 +91,43 @@ def test_identify_invalid_with_stac_version(self) -> None:
assert identify_stac_object_type(not_stac) is None


class VersionTest(unittest.TestCase):
def test_version_ordering(self) -> None:
self.assertEqual(STACVersionID("0.9.0"), STACVersionID("0.9.0"))
self.assertFalse(STACVersionID("0.9.0") < STACVersionID("0.9.0"))
self.assertFalse(STACVersionID("0.9.0") != STACVersionID("0.9.0"))
self.assertFalse(STACVersionID("0.9.0") > STACVersionID("0.9.0"))
self.assertTrue(STACVersionID("1.0.0-beta.2") < "1.0.0")
self.assertTrue(STACVersionID("0.9.1") > "0.9.0")
self.assertFalse(STACVersionID("0.9.0") > "0.9.0")
self.assertTrue(STACVersionID("0.9.0") <= "0.9.0")
self.assertTrue(STACVersionID("1.0.0-beta.1") <= STACVersionID("1.0.0-beta.2"))
self.assertFalse(STACVersionID("1.0.0") < STACVersionID("1.0.0-beta.2"))

def test_version_range_ordering(self) -> None:
version_range = STACVersionRange("0.9.0", "1.0.0-beta.2")
self.assertIsInstance(str(version_range), str)
self.assertTrue(version_range.contains("1.0.0-beta.1"))
self.assertFalse(version_range.contains("1.0.0"))
self.assertTrue(version_range.is_later_than("0.8.9"))

version_range = STACVersionRange("0.9.0", "1.0.0-beta.1")
self.assertFalse(version_range.contains("1.0.0-beta.2"))

version_range = STACVersionRange(min_version="0.6.0-rc1", max_version="0.9.0")
self.assertTrue(version_range.contains("0.9.0"))

def test_version_range_set_to_single(self) -> None:
version_range = STACVersionRange()
version_range.set_min("1.0.0-beta.1")
version_range.set_to_single("1.0.0")

self.assertTrue(version_range.contains("1.0.0"))

def test_version_range_set_min_and_max_directly(self) -> None:
version_range = STACVersionRange()
version_range.min_version = "1.0.0-beta.1" # type:ignore
version_range.max_version = "1.1.0" # type:ignore

self.assertTrue(version_range.contains("1.0.0"))
def test_version_ordering() -> None:
assert STACVersionID("0.9.0") == STACVersionID("0.9.0")
assert not STACVersionID("0.9.0") != STACVersionID("0.9.0")
assert not STACVersionID("0.9.0") > STACVersionID("0.9.0")
assert STACVersionID("1.0.0-beta.2") < "1.0.0"
assert STACVersionID("0.9.1") > "0.9.0"
assert not STACVersionID("0.9.0") > "0.9.0"
assert STACVersionID("0.9.0") <= "0.9.0"
assert STACVersionID("1.0.0-beta.1") <= STACVersionID("1.0.0-beta.2")
assert not STACVersionID("1.0.0") < STACVersionID("1.0.0-beta.2")


def test_version_range_ordering() -> None:
version_range = STACVersionRange("0.9.0", "1.0.0-beta.2")
assert isinstance(str(version_range), str)
assert version_range.contains("1.0.0-beta.1")
assert not version_range.contains("1.0.0")
assert version_range.is_later_than("0.8.9")

version_range = STACVersionRange("0.9.0", "1.0.0-beta.1")
assert not version_range.contains("1.0.0-beta.2")

version_range = STACVersionRange(min_version="0.6.0-rc1", max_version="0.9.0")
assert version_range.contains("0.9.0")


def test_version_range_set_to_single() -> None:
version_range = STACVersionRange()
version_range.set_min("1.0.0-beta.1")
version_range.set_to_single("1.0.0")

assert version_range.contains("1.0.0")


def test_version_range_set_min_and_max_directly() -> None:
version_range = STACVersionRange()
version_range.min_version = "1.0.0-beta.1" # type:ignore
version_range.max_version = "1.1.0" # type:ignore

assert version_range.contains("1.0.0")
132 changes: 63 additions & 69 deletions tests/test_cache.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import unittest
from typing import Any

import pystac
Expand All @@ -15,71 +14,66 @@ def create_catalog(suffix: Any, include_href: bool = True) -> pystac.Catalog:
)


class ResolvedObjectCacheTest(unittest.TestCase):
def tests_get_or_cache_returns_previously_cached_href(self) -> None:
cache = ResolvedObjectCache()
cat = create_catalog(1)
cache_result_1 = cache.get_or_cache(cat)
self.assertIs(cache_result_1, cat)

identical_cat = create_catalog(1)
cache_result_2 = cache.get_or_cache(identical_cat)
self.assertIs(cache_result_2, cat)

def test_get_or_cache_returns_previously_cached_id(self) -> None:
cache = ResolvedObjectCache()
cat = create_catalog(1, include_href=False)
cache_result_1 = cache.get_or_cache(cat)
self.assertIs(cache_result_1, cat)

identical_cat = create_catalog(1, include_href=False)
cache_result_2 = cache.get_or_cache(identical_cat)
self.assertIs(cache_result_2, cat)


class ResolvedObjectCollectionCacheTest(unittest.TestCase):
def test_merge(self) -> None:
cat1 = create_catalog(1, include_href=False)
cat2 = create_catalog(2)
cat3 = create_catalog(3, include_href=False)
cat4 = create_catalog(4)

identical_cat1 = create_catalog(1, include_href=False)
identical_cat2 = create_catalog(2)

cached_ids_1: dict[str, Any] = {cat1.id: cat1}
cached_hrefs_1: dict[str, Any] = {get_opt(cat2.get_self_href()): cat2}
cached_ids_2: dict[str, Any] = {cat3.id: cat3, cat1.id: identical_cat1}
cached_hrefs_2: dict[str, Any] = {
get_opt(cat4.get_self_href()): cat4,
get_opt(cat2.get_self_href()): identical_cat2,
}
cache1 = ResolvedObjectCollectionCache(
ResolvedObjectCache(), cached_ids=cached_ids_1, cached_hrefs=cached_hrefs_1
)
cache2 = ResolvedObjectCollectionCache(
ResolvedObjectCache(), cached_ids=cached_ids_2, cached_hrefs=cached_hrefs_2
)

merged = ResolvedObjectCollectionCache.merge(
ResolvedObjectCache(), cache1, cache2
)

self.assertEqual(
set(merged.cached_ids.keys()), {cat.id for cat in [cat1, cat3]}
)
self.assertIs(merged.get_by_id(cat1.id), cat1)
self.assertEqual(
set(merged.cached_hrefs.keys()),
{cat.get_self_href() for cat in [cat2, cat4]},
)
self.assertIs(merged.get_by_href(get_opt(cat2.get_self_href())), cat2)

def test_cache(self) -> None:
cache = ResolvedObjectCache().as_collection_cache()
collection = TestCases.case_8()
collection_json = collection.to_dict()
cache.cache(collection_json, collection.get_self_href())
cached = cache.get_by_id(collection.id)
assert isinstance(cached, dict)
self.assertEqual(cached["id"], collection.id)
def test_ResolvedObjectCache_get_or_cache_returns_previously_cached_href() -> None:
cache = ResolvedObjectCache()
cat = create_catalog(1)
cache_result_1 = cache.get_or_cache(cat)
assert cache_result_1 is cat

identical_cat = create_catalog(1)
cache_result_2 = cache.get_or_cache(identical_cat)
assert cache_result_2 is cat


def test_ResolvedObjectCache_get_or_cache_returns_previously_cached_id() -> None:
cache = ResolvedObjectCache()
cat = create_catalog(1, include_href=False)
cache_result_1 = cache.get_or_cache(cat)
assert cache_result_1 is cat

identical_cat = create_catalog(1, include_href=False)
cache_result_2 = cache.get_or_cache(identical_cat)
assert cache_result_2 is cat


def test_ResolvedObjectCollectionCache_merge() -> None:
cat1 = create_catalog(1, include_href=False)
cat2 = create_catalog(2)
cat3 = create_catalog(3, include_href=False)
cat4 = create_catalog(4)

identical_cat1 = create_catalog(1, include_href=False)
identical_cat2 = create_catalog(2)

cached_ids_1: dict[str, Any] = {cat1.id: cat1}
cached_hrefs_1: dict[str, Any] = {get_opt(cat2.get_self_href()): cat2}
cached_ids_2: dict[str, Any] = {cat3.id: cat3, cat1.id: identical_cat1}
cached_hrefs_2: dict[str, Any] = {
get_opt(cat4.get_self_href()): cat4,
get_opt(cat2.get_self_href()): identical_cat2,
}
cache1 = ResolvedObjectCollectionCache(
ResolvedObjectCache(), cached_ids=cached_ids_1, cached_hrefs=cached_hrefs_1
)
cache2 = ResolvedObjectCollectionCache(
ResolvedObjectCache(), cached_ids=cached_ids_2, cached_hrefs=cached_hrefs_2
)

merged = ResolvedObjectCollectionCache.merge(ResolvedObjectCache(), cache1, cache2)

assert set(merged.cached_ids.keys()) == {cat.id for cat in [cat1, cat3]}
assert merged.get_by_id(cat1.id) is cat1
assert set(merged.cached_hrefs.keys()) == {
cat.get_self_href() for cat in [cat2, cat4]
}
assert merged.get_by_href(get_opt(cat2.get_self_href())) is cat2


def test_ResolvedObjectCollectionCache_cache() -> None:
cache = ResolvedObjectCache().as_collection_cache()
collection = TestCases.case_8()
collection_json = collection.to_dict()
cache.cache(collection_json, collection.get_self_href())
cached = cache.get_by_id(collection.id)
assert isinstance(cached, dict)
assert cached["id"] == collection.id
Loading

0 comments on commit ff453bb

Please sign in to comment.