11"""Tests for pystac.tests.extensions.scientific."""
22
3- import unittest
43from datetime import datetime , timedelta
54
65import pytest
76
87import pystac
9- from pystac import ExtensionTypeError , Item , Collection
8+ from pystac import Collection , ExtensionTypeError , Item
109from pystac .errors import ExtensionNotImplemented
1110from pystac .extensions import scientific
1211from pystac .extensions .scientific import (
@@ -76,7 +75,7 @@ def collection() -> Collection:
7675
7776
7877@pytest .fixture
79- def collection_with_summaries (collection ) -> Collection :
78+ def collection_with_summaries (collection : Collection ) -> Collection :
8079 collection .summaries = Summaries (
8180 summaries = {"sci:citation" : [CITATION ], "sci:doi" : [PUB1_DOI , PUB2_DOI ]}
8281 )
@@ -139,6 +138,7 @@ def test_citation(item: Item) -> None:
139138 assert not item .get_links (ScientificRelType .CITE_AS )
140139 item .validate ()
141140
141+
142142@pytest .mark .vcr ()
143143def test_publications_one (item : Item ) -> None :
144144 publications = PUBLICATIONS [:1 ]
@@ -153,6 +153,7 @@ def test_publications_one(item: Item) -> None:
153153 assert expected == doi_urls
154154 item .validate ()
155155
156+
156157@pytest .mark .vcr ()
157158def test_publications (item : Item ) -> None :
158159 ScientificExtension .ext (item ).apply (publications = PUBLICATIONS )
@@ -165,6 +166,7 @@ def test_publications(item: Item) -> None:
165166 assert expected == doi_urls
166167 item .validate ()
167168
169+
168170@pytest .mark .vcr ()
169171def test_remove_publication_one (item : Item ) -> None :
170172 publications = PUBLICATIONS [:1 ]
@@ -176,6 +178,7 @@ def test_remove_publication_one(item: Item) -> None:
176178 assert DOI_URL == links [0 ].target
177179 item .validate ()
178180
181+
179182@pytest .mark .vcr ()
180183def test_remove_all_publications_one (item : Item ) -> None :
181184 publications = PUBLICATIONS [:1 ]
@@ -187,12 +190,13 @@ def test_remove_all_publications_one(item: Item) -> None:
187190 assert DOI_URL == links [0 ].target
188191 item .validate ()
189192
193+
190194@pytest .mark .vcr ()
191195def test_remove_publication_forward (item : Item ) -> None :
192196 ScientificExtension .ext (item ).apply (DOI , publications = PUBLICATIONS )
193197
194198 ScientificExtension .ext (item ).remove_publication (PUBLICATIONS [0 ])
195- assert [PUBLICATIONS [1 ]] == ScientificExtension .ext (item ).publications
199+ assert [PUBLICATIONS [1 ]] == ScientificExtension .ext (item ).publications
196200 links = item .get_links (ScientificRelType .CITE_AS )
197201 assert 2 == len (links )
198202 assert DOI_URL == links [0 ].target
@@ -206,12 +210,13 @@ def test_remove_publication_forward(item: Item) -> None:
206210 assert DOI_URL == links [0 ].target
207211 item .validate ()
208212
213+
209214@pytest .mark .vcr ()
210215def test_remove_publication_reverse (item : Item ) -> None :
211216 ScientificExtension .ext (item ).apply (DOI , publications = PUBLICATIONS )
212217
213218 ScientificExtension .ext (item ).remove_publication (PUBLICATIONS [1 ])
214- assert [PUBLICATIONS [0 ]] == ScientificExtension .ext (item ).publications
219+ assert [PUBLICATIONS [0 ]] == ScientificExtension .ext (item ).publications
215220 links = item .get_links (ScientificRelType .CITE_AS )
216221 assert 2 == len (links )
217222 assert PUB1_DOI_URL == links [1 ].target
@@ -223,6 +228,7 @@ def test_remove_publication_reverse(item: Item) -> None:
223228 assert DOI_URL == links [0 ].target
224229 item .validate ()
225230
231+
226232@pytest .mark .vcr ()
227233def test_remove_all_publications_with_some (item : Item ) -> None :
228234 ScientificExtension .ext (item ).apply (DOI , publications = PUBLICATIONS )
@@ -233,6 +239,7 @@ def test_remove_all_publications_with_some(item: Item) -> None:
233239 assert DOI_URL == links [0 ].target
234240 item .validate ()
235241
242+
236243@pytest .mark .vcr ()
237244def test_remove_all_publications_with_none (item : Item ) -> None :
238245 ScientificExtension .ext (item ).apply (DOI )
@@ -243,13 +250,15 @@ def test_remove_all_publications_with_none(item: Item) -> None:
243250 assert DOI_URL == links [0 ].target
244251 item .validate ()
245252
253+
246254def test_extension_not_implemented (ext_item : Item ) -> None :
247255 # Should raise exception if Item does not include extension URI
248256 ext_item .stac_extensions .remove (ScientificExtension .get_schema_uri ())
249257
250258 with pytest .raises (pystac .ExtensionNotImplemented ):
251259 _ = ScientificExtension .ext (ext_item )
252260
261+
253262def test_ext_add_to (ext_item : Item ) -> None :
254263 ext_item .stac_extensions .remove (ScientificExtension .get_schema_uri ())
255264 assert ScientificExtension .get_schema_uri () not in ext_item .stac_extensions
@@ -286,6 +295,7 @@ def test_collection_doi(collection: Collection) -> None:
286295 assert PUB1_DOI_URL == link .get_href ()
287296 collection .validate ()
288297
298+
289299@pytest .mark .vcr ()
290300def test_collection_citation (collection : Collection ) -> None :
291301 ScientificExtension .ext (collection ).apply (citation = CITATION )
@@ -294,11 +304,12 @@ def test_collection_citation(collection: Collection) -> None:
294304 assert not collection .get_links (ScientificRelType .CITE_AS )
295305 collection .validate ()
296306
307+
297308@pytest .mark .vcr ()
298309def test_collection_publications_one (collection : Collection ) -> None :
299310 publications = PUBLICATIONS [:1 ]
300311 ScientificExtension .ext (collection ).apply (publications = publications )
301- assert publications == ScientificExtension .ext (collection ).publications
312+ assert publications == ScientificExtension .ext (collection ).publications
302313 assert scientific .PUBLICATIONS_PROP in collection .extra_fields
303314
304315 links = collection .get_links (ScientificRelType .CITE_AS )
@@ -308,10 +319,11 @@ def test_collection_publications_one(collection: Collection) -> None:
308319
309320 collection .validate ()
310321
322+
311323@pytest .mark .vcr ()
312324def test_collection_publications (collection : Collection ) -> None :
313325 ScientificExtension .ext (collection ).apply (publications = PUBLICATIONS )
314- assert PUBLICATIONS == ScientificExtension .ext (collection ).publications
326+ assert PUBLICATIONS == ScientificExtension .ext (collection ).publications
315327 assert scientific .PUBLICATIONS_PROP in collection .extra_fields
316328
317329 links = collection .get_links (ScientificRelType .CITE_AS )
@@ -321,6 +333,7 @@ def test_collection_publications(collection: Collection) -> None:
321333
322334 collection .validate ()
323335
336+
324337@pytest .mark .vcr ()
325338def test_collection_remove_publication_one (collection : Collection ) -> None :
326339 publications = PUBLICATIONS [:1 ]
@@ -332,6 +345,7 @@ def test_collection_remove_publication_one(collection: Collection) -> None:
332345 assert DOI_URL == links [0 ].target
333346 collection .validate ()
334347
348+
335349@pytest .mark .vcr ()
336350def test_collection_remove_all_publications_one (collection : Collection ) -> None :
337351 publications = PUBLICATIONS [:1 ]
@@ -343,12 +357,13 @@ def test_collection_remove_all_publications_one(collection: Collection) -> None:
343357 assert DOI_URL == links [0 ].target
344358 collection .validate ()
345359
360+
346361@pytest .mark .vcr ()
347362def test_collection_remove_publication_forward (collection : Collection ) -> None :
348363 ScientificExtension .ext (collection ).apply (DOI , publications = PUBLICATIONS )
349364
350365 ScientificExtension .ext (collection ).remove_publication (PUBLICATIONS [0 ])
351- assert [PUBLICATIONS [1 ]] == ScientificExtension .ext (collection ).publications
366+ assert [PUBLICATIONS [1 ]] == ScientificExtension .ext (collection ).publications
352367 links = collection .get_links (ScientificRelType .CITE_AS )
353368 assert 2 == len (links )
354369 assert DOI_URL == links [0 ].target
@@ -362,12 +377,13 @@ def test_collection_remove_publication_forward(collection: Collection) -> None:
362377 assert DOI_URL == links [0 ].target
363378 collection .validate ()
364379
380+
365381@pytest .mark .vcr ()
366382def test_collection_remove_publication_reverse (collection : Collection ) -> None :
367383 ScientificExtension .ext (collection ).apply (DOI , publications = PUBLICATIONS )
368384
369385 ScientificExtension .ext (collection ).remove_publication (PUBLICATIONS [1 ])
370- assert [PUBLICATIONS [0 ]] == ScientificExtension .ext (collection ).publications
386+ assert [PUBLICATIONS [0 ]] == ScientificExtension .ext (collection ).publications
371387 links = collection .get_links (ScientificRelType .CITE_AS )
372388 assert 2 == len (links )
373389 assert PUB1_DOI_URL == links [1 ].target
@@ -379,6 +395,7 @@ def test_collection_remove_publication_reverse(collection: Collection) -> None:
379395 assert DOI_URL == links [0 ].target
380396 collection .validate ()
381397
398+
382399@pytest .mark .vcr ()
383400def test_collection_remove_all_publications_with_some (collection : Collection ) -> None :
384401 ScientificExtension .ext (collection ).apply (DOI , publications = PUBLICATIONS )
@@ -389,6 +406,7 @@ def test_collection_remove_all_publications_with_some(collection: Collection) ->
389406 assert DOI_URL == links [0 ].target
390407 collection .validate ()
391408
409+
392410@pytest .mark .vcr ()
393411def test_collection_remove_all_publications_with_none (collection : Collection ) -> None :
394412 ScientificExtension .ext (collection ).apply (DOI )
@@ -399,6 +417,7 @@ def test_collection_remove_all_publications_with_none(collection: Collection) ->
399417 assert DOI_URL == links [0 ].target
400418 collection .validate ()
401419
420+
402421def test_collection_extension_not_implemented (collection : Collection ) -> None :
403422 # Should raise exception if Collection does not include extension URI
404423 collection = pystac .Collection .from_file (
@@ -409,24 +428,26 @@ def test_collection_extension_not_implemented(collection: Collection) -> None:
409428 with pytest .raises (pystac .ExtensionNotImplemented ):
410429 _ = ScientificExtension .ext (collection )
411430
431+
412432def test_collection_ext_add_to () -> None :
413433 collection = pystac .Collection .from_file (
414434 TestCases .get_path ("data-files/scientific/collection.json" )
415435 )
416436 collection .stac_extensions .remove (ScientificExtension .get_schema_uri ())
417- assert ScientificExtension .get_schema_uri () not in collection .stac_extensions
437+ assert ScientificExtension .get_schema_uri () not in collection .stac_extensions
418438
419439 _ = ScientificExtension .ext (collection , add_if_missing = True )
420440
421441 assert ScientificExtension .get_schema_uri () in collection .stac_extensions
422442
443+
423444def test_should_raise_exception_when_passing_invalid_extension_object () -> None :
424445 with pytest .raises (
425446 ExtensionTypeError ,
426- match = r"^ScientificExtension does not apply to type 'object'$"
447+ match = r"^ScientificExtension does not apply to type 'object'$" ,
427448 ):
428449 # calling it wrong on purpose so -----------v
429- ScientificExtension .ext (object ()) # type: ignore
450+ ScientificExtension .ext (object ()) # type: ignore
430451
431452
432453def test_get_citation_summaries (collection_with_summaries : Collection ) -> None :
@@ -435,18 +456,21 @@ def test_get_citation_summaries(collection_with_summaries: Collection) -> None:
435456 assert citations is not None
436457 assert [CITATION ] == citations
437458
459+
438460def test_set_citation_summaries (collection_with_summaries : Collection ) -> None :
439461 sci_summaries = ScientificExtension .summaries (collection_with_summaries )
440462
441463 sci_summaries .citation = None
442464 assert sci_summaries .citation is None
443465
466+
444467def test_get_doi_summaries (collection_with_summaries : Collection ) -> None :
445468 dois = ScientificExtension .summaries (collection_with_summaries ).doi
446469
447470 assert dois is not None
448471 assert [PUB1_DOI , PUB2_DOI ] == dois
449472
473+
450474def test_set_doi_summaries (collection_with_summaries : Collection ) -> None :
451475 collection = collection_with_summaries
452476 sci_summaries = ScientificExtension .summaries (collection )
@@ -457,6 +481,7 @@ def test_set_doi_summaries(collection_with_summaries: Collection) -> None:
457481 assert new_dois is not None
458482 assert [PUB2_DOI ] == new_dois
459483
484+
460485def test_summaries_adds_uri (collection_with_summaries : Collection ) -> None :
461486 collection = collection_with_summaries
462487 collection .stac_extensions = []
@@ -471,7 +496,7 @@ def test_summaries_adds_uri(collection_with_summaries: Collection) -> None:
471496 assert ScientificExtension .get_schema_uri () in collection .stac_extensions
472497
473498 ScientificExtension .remove_from (collection )
474- assert ScientificExtension .get_schema_uri () not in collection .stac_extensions
499+ assert ScientificExtension .get_schema_uri () not in collection .stac_extensions
475500
476501
477502def test_ext_syntax (ext_item : pystac .Item ) -> None :
0 commit comments