44
55import  osw .model .entity  as  model 
66from  osw .core  import  OSW , AddOverwriteClassOptions , OverwriteOptions 
7+ from  osw .utils .wiki  import  remove_empty_strings 
78from  osw .wtsite  import  WtPage 
89
910
@@ -55,7 +56,8 @@ def check_false(original: model.Entity, altered: model.Entity, stored: model.Ent
5556    but add those additionally present in the altered entity.""" 
5657    assert  stored .label [0 ].text  ==  original .label [0 ].text 
5758    assert  stored .name  ==  original .name 
58-     assert  stored .iri  ==  original .iri 
59+     # empty string property is removed on store and load: 
60+     assert  stored .iri  ==  altered .iri 
5961    if  len (original .description ) ==  0 :
6062        assert  stored .description  ==  original .description 
6163    else :
@@ -74,6 +76,7 @@ def check_only_empty(
7476    entity in the OSW that are empty, but are not empty in the altered entity.""" 
7577    assert  stored .label [0 ].text  ==  original .label [0 ].text 
7678    assert  stored .name  ==  original .name 
79+     # empty string property is removed on store and load: 
7780    assert  stored .iri  ==  altered .iri 
7881    assert  stored .description [0 ].text  ==  altered .description [0 ].text 
7982    assert  stored .query_label  ==  altered .query_label 
@@ -102,7 +105,9 @@ def check_keep_existing(
102105    'keep existing', which is supposed to keep the existing entity in the OSW.""" 
103106    assert  stored .label [0 ].text  ==  original .label [0 ].text 
104107    assert  stored .name  ==  original .name 
105-     assert  stored .iri  ==  original .iri 
108+     # assert stored.iri == original.iri 
109+     # empty string property is removed on store and load: 
110+     assert  getattr (stored , "iri" , None ) is  None 
106111    assert  stored .description  ==  original .description   # empty list 
107112    assert  stored .query_label  ==  original .query_label 
108113    assert  stored .image  ==  original .image 
@@ -135,7 +140,7 @@ def test_apply_overwrite_policy():
135140
136141    for  check  in  checks :
137142        # Create a new item with some properties 
138-         original_item  =  model .Item (
143+         original_item_local  =  model .Item (
139144            label = [model .Label (text = "My Item" )],
140145            name = "MyItem" ,
141146            iri = "" ,  # Empty string property 
@@ -146,11 +151,19 @@ def test_apply_overwrite_policy():
146151        original_page  =  OfflineWtPage (
147152            # wtSite=OSW.wt_site,  # todo: missing 
148153            title = "Item:" 
149-             +  OSW .get_osw_id (original_item .uuid )
150-         )
151-         original_page .set_slot_content (
152-             "jsondata" , json .loads (original_item .json (exclude_none = True ))
154+             +  OSW .get_osw_id (original_item_local .uuid )
153155        )
156+         jsondata  =  json .loads (original_item_local .json (exclude_none = True ))
157+         # Emulate the default setting for StoreEntityParam.remove_empty_strings, 
158+         #  which is True and applied on store_entity 
159+         remove_empty_strings (jsondata )
160+ 
161+         original_page .set_slot_content ("jsondata" , jsondata )
162+         # To reproduce what happens in the OSL instance, we need to get the content 
163+         #  from the page again 
164+         original_content  =  original_page .get_slot_content ("jsondata" )
165+         # And create the original item from that content 
166+         original_item  =  model .Item (** original_content )
154167        # Alter some of the property values 
155168        altered_props  =  {
156169            "label" : [model .Label (text = "My Item Duplicate" )],
0 commit comments