@@ -50,3 +50,72 @@ def fake_resolve(path: Path, source: str):
5050
5151 assert found == candidate
5252 assert seen_sources == ["cwd-cache" ]
53+
54+
55+ @pytest .mark .parametrize (
56+ (
57+ "module" ,
58+ "discover_name" ,
59+ "resolve_name" ,
60+ "env_name" ,
61+ "url_env_name" ,
62+ "snapshot_path_name" ,
63+ ),
64+ [
65+ (
66+ map_store ,
67+ "discover_map_store" ,
68+ "_resolve_map_store" ,
69+ "TEADATA_MAP_STORE" ,
70+ "TEADATA_MAP_STORE_URL" ,
71+ "map_store_path_for_snapshot" ,
72+ ),
73+ (
74+ boundary_store ,
75+ "discover_boundary_store" ,
76+ "_resolve_boundary_store" ,
77+ "TEADATA_BOUNDARY_STORE" ,
78+ "TEADATA_BOUNDARY_STORE_URL" ,
79+ "boundary_store_path_for_snapshot" ,
80+ ),
81+ (
82+ entity_store ,
83+ "discover_entity_store" ,
84+ "_resolve_entity_store" ,
85+ "TEADATA_ENTITY_STORE" ,
86+ "TEADATA_ENTITY_STORE_URL" ,
87+ "entity_store_path_for_snapshot" ,
88+ ),
89+ ],
90+ )
91+ def test_discover_store_uses_snapshot_candidate_when_url_is_configured (
92+ monkeypatch ,
93+ tmp_path : Path ,
94+ module ,
95+ discover_name : str ,
96+ resolve_name : str ,
97+ env_name : str ,
98+ url_env_name : str ,
99+ snapshot_path_name : str ,
100+ ):
101+ monkeypatch .delenv (env_name , raising = False )
102+ monkeypatch .setenv (url_env_name , "https://example.com/store.sqlite" )
103+
104+ snapshot = tmp_path / "repo_test.pkl.gz"
105+ expected = getattr (module , snapshot_path_name )(snapshot )
106+ assert expected is not None
107+
108+ seen_sources : list [str ] = []
109+
110+ def fake_resolve (path : Path , source : str ):
111+ seen_sources .append (source )
112+ return path
113+
114+ monkeypatch .setattr (module , "_discover_snapshot" , lambda : snapshot )
115+ monkeypatch .setattr (module , resolve_name , fake_resolve )
116+
117+ discover = getattr (module , discover_name )
118+ found = discover ()
119+
120+ assert found == expected
121+ assert seen_sources == ["snapshot" ]
0 commit comments