@@ -2538,6 +2538,32 @@ def test_graph_scene_cache_is_warm_and_invalidates_on_store_write():
25382538 assert refreshed ["meta" ]["index_generation" ] > first ["meta" ]["index_generation" ]
25392539
25402540
2541+ @pytest .mark .parametrize ("layer_order" , [(None , []), ([], None )],
2542+ ids = ["all-then-none" , "none-then-all" ])
2543+ def test_graph_scene_cache_distinguishes_all_layers_from_no_layers (monkeypatch , layer_order ):
2544+ service , _alpha , _beta , _gamma = _seed_service ()
2545+ try :
2546+ cold_scenes = []
2547+ for layers in layer_order :
2548+ scene = service .graph_scene (workspace = "acme" , layers = layers )
2549+ assert len (scene ["edges" ]) == (2 if layers is None else 0 )
2550+ assert scene ["meta" ]["cache_hit" ] is False
2551+ cold_scenes .append (scene )
2552+
2553+ def fail_if_rebuilt (** _kwargs ):
2554+ pytest .fail ("repeating either layer selection must use its own warm scene" )
2555+
2556+ monkeypatch .setattr (service , "_graph_scene_rows" , fail_if_rebuilt )
2557+ for layers , cold in zip (layer_order , cold_scenes ):
2558+ warm = service .graph_scene (workspace = "acme" , layers = layers )
2559+ assert warm ["meta" ]["cache_hit" ] is True
2560+ assert warm ["nodes" ] == cold ["nodes" ]
2561+ assert warm ["edges" ] == cold ["edges" ]
2562+ assert warm ["meta" ]["scene_hash" ] == cold ["meta" ]["scene_hash" ]
2563+ finally :
2564+ service .store .close ()
2565+
2566+
25412567@pytest .mark .parametrize ("level" , ["overview" , "complete" ])
25422568@pytest .mark .parametrize ("mutate_cache_hit" , [False , True ])
25432569def test_quality_scene_cache_isolated_from_nested_response_mutation (level , mutate_cache_hit ):
0 commit comments