@@ -2937,8 +2937,11 @@ def test_unified_asset_keys_spatial_geotiff(
2937
2937
2938
2938
assert len (items ) == 1
2939
2939
# single item ID can be anything (no spatial or temporal references)
2940
- assert job_metadata ["start_datetime" ] == "2025-04-01T00:00:00Z" # top-level rather than on Item
2941
- assert job_metadata ["end_datetime" ] == "2025-04-21T00:00:00Z" # ditto
2940
+
2941
+ # at job-level rather than on Item
2942
+ assert items [0 ]["properties" ].get ("datetime" ) is None
2943
+ assert job_metadata ["start_datetime" ] == "2025-04-01T00:00:00Z"
2944
+ assert job_metadata ["end_datetime" ] == "2025-04-21T00:00:00Z"
2942
2945
2943
2946
assert set (items [0 ]["assets" ].keys ()) == expected_asset_keys
2944
2947
@@ -3000,7 +3003,84 @@ def test_unified_asset_keys_stitch_geotiff(tmp_path):
3000
3003
3001
3004
assert len (items ) == 1
3002
3005
# single item ID can be anything (no spatial or temporal references)
3003
- assert job_metadata ["start_datetime" ] == "2025-04-01T00:00:00Z" # top-level rather than on Item
3004
- assert job_metadata ["end_datetime" ] == "2025-04-21T00:00:00Z" # ditto
3006
+
3007
+ # at job-level rather than on Item
3008
+ assert items [0 ]["properties" ].get ("datetime" ) is None
3009
+ assert job_metadata ["start_datetime" ] == "2025-04-01T00:00:00Z"
3010
+ assert job_metadata ["end_datetime" ] == "2025-04-21T00:00:00Z"
3005
3011
3006
3012
assert set (items [0 ]["assets" ].keys ()) == {"openEO" }
3013
+
3014
+
3015
+ def test_unified_asset_keys_stitch_tile_grid (tmp_path ):
3016
+ process_graph = {
3017
+ "load2" : {
3018
+ "process_id" : "load_collection" ,
3019
+ "arguments" : {
3020
+ "bands" : [
3021
+ "Flat:0" ,
3022
+ "Flat:1" ,
3023
+ "Flat:2" ,
3024
+ ],
3025
+ "id" : "TestCollection-LonLat16x16" ,
3026
+ "spatial_extent" : {
3027
+ "west" : 0 ,
3028
+ "south" : 50 ,
3029
+ "east" : 2 ,
3030
+ "north" : 51 ,
3031
+ },
3032
+ "temporal_extent" : ["2025-04-01" , "2025-04-21" ],
3033
+ },
3034
+ },
3035
+ "save1" : {
3036
+ "process_id" : "save_result" ,
3037
+ "arguments" : {
3038
+ "data" : {"from_node" : "load2" },
3039
+ "format" : "GTIFF" ,
3040
+ "options" : {
3041
+ "stitch" : True ,
3042
+ "tile_grid" : "wgs84-1degree" ,
3043
+ },
3044
+ },
3045
+ "result" : True ,
3046
+ },
3047
+ }
3048
+
3049
+ process = {
3050
+ "process_graph" : process_graph ,
3051
+ }
3052
+
3053
+ job_dir = tmp_path
3054
+ metadata_file = job_dir / "job_metadata.json"
3055
+
3056
+ run_job (
3057
+ process ,
3058
+ output_file = job_dir / "out" ,
3059
+ metadata_file = metadata_file ,
3060
+ api_version = "2.0.0" ,
3061
+ job_dir = job_dir ,
3062
+ dependencies = [],
3063
+ )
3064
+
3065
+ tiff_files = {file for file in os .listdir (job_dir ) if file .endswith (".tiff" )}
3066
+ assert tiff_files == {
3067
+ "openEO-N50E000.tiff" ,
3068
+ "openEO-N50E001.tiff" ,
3069
+ }
3070
+
3071
+ with open (metadata_file ) as f :
3072
+ job_metadata = json .load (f )
3073
+
3074
+ items = job_metadata ["items" ]
3075
+ print (f"items={ json .dumps (items , indent = 2 )} " )
3076
+
3077
+ assert len (items ) == 2
3078
+ assert len ({item ["id" ] for item in items }) == 2
3079
+
3080
+ # at job-level rather than on Item
3081
+ assert {item ["properties" ].get ("datetime" ) for item in items } == {None }
3082
+ assert job_metadata ["start_datetime" ] == "2025-04-01T00:00:00Z"
3083
+ assert job_metadata ["end_datetime" ] == "2025-04-21T00:00:00Z"
3084
+
3085
+ for item in items :
3086
+ assert set (item ["assets" ].keys ()) == {"openEO" }
0 commit comments