|
11 | 11 | import pytest |
12 | 12 |
|
13 | 13 | from openminds import IRI |
| 14 | +from openminds.base import LinkedNodeEmbedding |
14 | 15 |
|
15 | 16 | from fairgraph.utility import as_list |
16 | 17 | from fairgraph.kgproxy import KGProxy |
17 | 18 | from fairgraph.kgquery import KGQuery |
18 | 19 | from fairgraph.kgobject import KGObject |
19 | 20 | import fairgraph.openminds.core as omcore |
20 | 21 | import fairgraph.openminds.controlled_terms as omterms |
21 | | -from fairgraph.utility import ActivityLog, sha1sum |
| 22 | +from fairgraph.utility import ActivityLog, sha1sum, normalize_data |
22 | 23 |
|
23 | 24 | from test.utils import mock_client, kg_client, skip_if_no_connection, skip_if_using_production_server |
24 | 25 |
|
@@ -433,6 +434,40 @@ def test_exists_method_without_id(kg_client): |
433 | 434 | assert new_model == model |
434 | 435 |
|
435 | 436 |
|
| 437 | +def test_modified_data_method_with_local_changes(): |
| 438 | + dsv = omcore.DatasetVersion( |
| 439 | + id="https://kg.ebrains.eu/api/instances/12345678-90ab-cdef-0123-4567890abcde", full_name="test1234" |
| 440 | + ) |
| 441 | + dsv.remote_data = normalize_data( |
| 442 | + dsv.to_jsonld(include_empty_properties=True, embed_linked_nodes=LinkedNodeEmbedding.NEVER), dsv.context |
| 443 | + ) |
| 444 | + assert dsv.modified_data() == {} |
| 445 | + dsv.repository = omcore.FileRepository(iri="http://example.org") |
| 446 | + assert dsv.modified_data() == { |
| 447 | + "https://openminds.om-i.org/props/repository": { |
| 448 | + "@type": "https://openminds.om-i.org/types/FileRepository", |
| 449 | + "https://openminds.om-i.org/props/IRI": "http://example.org", |
| 450 | + "https://openminds.om-i.org/props/contentTypePattern": None, |
| 451 | + "https://openminds.om-i.org/props/format": None, |
| 452 | + "https://openminds.om-i.org/props/hash": None, |
| 453 | + "https://openminds.om-i.org/props/hostedBy": None, |
| 454 | + "https://openminds.om-i.org/props/name": None, |
| 455 | + "https://openminds.om-i.org/props/storageSize": None, |
| 456 | + "https://openminds.om-i.org/props/structurePattern": None, |
| 457 | + "https://openminds.om-i.org/props/type": None, |
| 458 | + } |
| 459 | + } |
| 460 | + dsv.repository = omcore.FileRepository( |
| 461 | + id="https://kg.ebrains.eu/api/instances/23456789-0abc-def0-1234-567890abcdef", |
| 462 | + iri="http://example.org" |
| 463 | + ) |
| 464 | + assert dsv.modified_data() == { |
| 465 | + "https://openminds.om-i.org/props/repository": { |
| 466 | + "@id": dsv.repository.id |
| 467 | + } |
| 468 | + } |
| 469 | + |
| 470 | + |
436 | 471 | def test__update(): |
437 | 472 | example_data = { |
438 | 473 | "@id": "https://kg.ebrains.eu/api/instances/e90fc25a-fc35-4066-9ff2-ca3583a2d008", |
@@ -518,9 +553,11 @@ def test_to_jsonld(): |
518 | 553 | "familyName": "Oakenshield", |
519 | 554 | "givenName": "Thorin", |
520 | 555 | } |
521 | | - assert person1.to_jsonld(embed_linked_nodes=True, include_empty_properties=False) == expected1 |
| 556 | + assert ( |
| 557 | + person1.to_jsonld(embed_linked_nodes=LinkedNodeEmbedding.ALWAYS, include_empty_properties=False) == expected1 |
| 558 | + ) |
522 | 559 | with pytest.raises(ValueError) as err: |
523 | | - person1.to_jsonld(embed_linked_nodes=False, include_empty_properties=False) |
| 560 | + person1.to_jsonld(embed_linked_nodes=LinkedNodeEmbedding.NEVER, include_empty_properties=False) |
524 | 561 | assert "Exporting as a stand-alone JSON-LD document requires @id to be defined" in err |
525 | 562 |
|
526 | 563 | person2 = omcore.Person( |
@@ -559,8 +596,12 @@ def test_to_jsonld(): |
559 | 596 | "familyName": "Oakenshield", |
560 | 597 | "givenName": "Thorin", |
561 | 598 | } |
562 | | - assert person2.to_jsonld(embed_linked_nodes=True, include_empty_properties=False) == expected2a |
563 | | - assert person2.to_jsonld(embed_linked_nodes=False, include_empty_properties=False) == expected2b |
| 599 | + assert ( |
| 600 | + person2.to_jsonld(embed_linked_nodes=LinkedNodeEmbedding.ALWAYS, include_empty_properties=False) == expected2a |
| 601 | + ) |
| 602 | + assert ( |
| 603 | + person2.to_jsonld(embed_linked_nodes=LinkedNodeEmbedding.NEVER, include_empty_properties=False) == expected2b |
| 604 | + ) |
564 | 605 |
|
565 | 606 |
|
566 | 607 | @skip_if_using_production_server |
|
0 commit comments