1- import unittest
21from typing import Any
32
43import pystac
@@ -15,71 +14,66 @@ def create_catalog(suffix: Any, include_href: bool = True) -> pystac.Catalog:
1514 )
1615
1716
18- class ResolvedObjectCacheTest (unittest .TestCase ):
19- def tests_get_or_cache_returns_previously_cached_href (self ) -> None :
20- cache = ResolvedObjectCache ()
21- cat = create_catalog (1 )
22- cache_result_1 = cache .get_or_cache (cat )
23- self .assertIs (cache_result_1 , cat )
24-
25- identical_cat = create_catalog (1 )
26- cache_result_2 = cache .get_or_cache (identical_cat )
27- self .assertIs (cache_result_2 , cat )
28-
29- def test_get_or_cache_returns_previously_cached_id (self ) -> None :
30- cache = ResolvedObjectCache ()
31- cat = create_catalog (1 , include_href = False )
32- cache_result_1 = cache .get_or_cache (cat )
33- self .assertIs (cache_result_1 , cat )
34-
35- identical_cat = create_catalog (1 , include_href = False )
36- cache_result_2 = cache .get_or_cache (identical_cat )
37- self .assertIs (cache_result_2 , cat )
38-
39-
40- class ResolvedObjectCollectionCacheTest (unittest .TestCase ):
41- def test_merge (self ) -> None :
42- cat1 = create_catalog (1 , include_href = False )
43- cat2 = create_catalog (2 )
44- cat3 = create_catalog (3 , include_href = False )
45- cat4 = create_catalog (4 )
46-
47- identical_cat1 = create_catalog (1 , include_href = False )
48- identical_cat2 = create_catalog (2 )
49-
50- cached_ids_1 : dict [str , Any ] = {cat1 .id : cat1 }
51- cached_hrefs_1 : dict [str , Any ] = {get_opt (cat2 .get_self_href ()): cat2 }
52- cached_ids_2 : dict [str , Any ] = {cat3 .id : cat3 , cat1 .id : identical_cat1 }
53- cached_hrefs_2 : dict [str , Any ] = {
54- get_opt (cat4 .get_self_href ()): cat4 ,
55- get_opt (cat2 .get_self_href ()): identical_cat2 ,
56- }
57- cache1 = ResolvedObjectCollectionCache (
58- ResolvedObjectCache (), cached_ids = cached_ids_1 , cached_hrefs = cached_hrefs_1
59- )
60- cache2 = ResolvedObjectCollectionCache (
61- ResolvedObjectCache (), cached_ids = cached_ids_2 , cached_hrefs = cached_hrefs_2
62- )
63-
64- merged = ResolvedObjectCollectionCache .merge (
65- ResolvedObjectCache (), cache1 , cache2
66- )
67-
68- self .assertEqual (
69- set (merged .cached_ids .keys ()), {cat .id for cat in [cat1 , cat3 ]}
70- )
71- self .assertIs (merged .get_by_id (cat1 .id ), cat1 )
72- self .assertEqual (
73- set (merged .cached_hrefs .keys ()),
74- {cat .get_self_href () for cat in [cat2 , cat4 ]},
75- )
76- self .assertIs (merged .get_by_href (get_opt (cat2 .get_self_href ())), cat2 )
77-
78- def test_cache (self ) -> None :
79- cache = ResolvedObjectCache ().as_collection_cache ()
80- collection = TestCases .case_8 ()
81- collection_json = collection .to_dict ()
82- cache .cache (collection_json , collection .get_self_href ())
83- cached = cache .get_by_id (collection .id )
84- assert isinstance (cached , dict )
85- self .assertEqual (cached ["id" ], collection .id )
17+ def test_ResolvedObjectCache_get_or_cache_returns_previously_cached_href () -> None :
18+ cache = ResolvedObjectCache ()
19+ cat = create_catalog (1 )
20+ cache_result_1 = cache .get_or_cache (cat )
21+ assert cache_result_1 is cat
22+
23+ identical_cat = create_catalog (1 )
24+ cache_result_2 = cache .get_or_cache (identical_cat )
25+ assert cache_result_2 is cat
26+
27+
28+ def test_ResolvedObjectCache_get_or_cache_returns_previously_cached_id () -> None :
29+ cache = ResolvedObjectCache ()
30+ cat = create_catalog (1 , include_href = False )
31+ cache_result_1 = cache .get_or_cache (cat )
32+ assert cache_result_1 is cat
33+
34+ identical_cat = create_catalog (1 , include_href = False )
35+ cache_result_2 = cache .get_or_cache (identical_cat )
36+ assert cache_result_2 is cat
37+
38+
39+ def test_ResolvedObjectCollectionCache_merge () -> None :
40+ cat1 = create_catalog (1 , include_href = False )
41+ cat2 = create_catalog (2 )
42+ cat3 = create_catalog (3 , include_href = False )
43+ cat4 = create_catalog (4 )
44+
45+ identical_cat1 = create_catalog (1 , include_href = False )
46+ identical_cat2 = create_catalog (2 )
47+
48+ cached_ids_1 : dict [str , Any ] = {cat1 .id : cat1 }
49+ cached_hrefs_1 : dict [str , Any ] = {get_opt (cat2 .get_self_href ()): cat2 }
50+ cached_ids_2 : dict [str , Any ] = {cat3 .id : cat3 , cat1 .id : identical_cat1 }
51+ cached_hrefs_2 : dict [str , Any ] = {
52+ get_opt (cat4 .get_self_href ()): cat4 ,
53+ get_opt (cat2 .get_self_href ()): identical_cat2 ,
54+ }
55+ cache1 = ResolvedObjectCollectionCache (
56+ ResolvedObjectCache (), cached_ids = cached_ids_1 , cached_hrefs = cached_hrefs_1
57+ )
58+ cache2 = ResolvedObjectCollectionCache (
59+ ResolvedObjectCache (), cached_ids = cached_ids_2 , cached_hrefs = cached_hrefs_2
60+ )
61+
62+ merged = ResolvedObjectCollectionCache .merge (ResolvedObjectCache (), cache1 , cache2 )
63+
64+ assert set (merged .cached_ids .keys ()) == {cat .id for cat in [cat1 , cat3 ]}
65+ assert merged .get_by_id (cat1 .id ) is cat1
66+ assert set (merged .cached_hrefs .keys ()) == {
67+ cat .get_self_href () for cat in [cat2 , cat4 ]
68+ }
69+ assert merged .get_by_href (get_opt (cat2 .get_self_href ())) is cat2
70+
71+
72+ def test_ResolvedObjectCollectionCache_cache () -> None :
73+ cache = ResolvedObjectCache ().as_collection_cache ()
74+ collection = TestCases .case_8 ()
75+ collection_json = collection .to_dict ()
76+ cache .cache (collection_json , collection .get_self_href ())
77+ cached = cache .get_by_id (collection .id )
78+ assert isinstance (cached , dict )
79+ assert cached ["id" ] == collection .id
0 commit comments