@@ -427,6 +427,49 @@ def test_remove_reference(self):
427427 prop = entity ["statements" ]["P31" ][0 ]["references" ][1 ]["parts" ][0 ]["property" ]
428428 self .assertEqual (prop ["id" ], "P74" )
429429
430+ def test_remove_reference_block (self ):
431+ text = """
432+ REMOVE_REF_BLOCK|Q12345678|P65|42|S31|somevalue
433+ REMOVE_REF_BLOCK|Q12345678|P31|somevalue|S93|"https://www.mediawiki.org/"
434+ REMOVE_REF_BLOCK|Q12345678|P31|somevalue|S84267|42
435+ REMOVE_REF_BLOCK|Q12345678|P31|somevalue|S84267|42
436+ """
437+ batch = self .parse (text )
438+ entity = copy .deepcopy (self .INITIAL )
439+ # -----
440+ remove_nothing = batch .commands ()[0 ]
441+ self .assertRefCount (entity , "P65" , 0 )
442+ with self .assertRaises (NoReferenceParts ):
443+ remove_nothing .update_entity_json (entity )
444+ self .assertRefCount (entity , "P65" , 0 )
445+ # ---
446+ prop = entity ["statements" ]["P31" ][0 ]["references" ][0 ]["parts" ][0 ]["property" ]
447+ self .assertEqual (prop ["id" ], "P93" )
448+ prop = entity ["statements" ]["P31" ][0 ]["references" ][1 ]["parts" ][0 ]["property" ]
449+ self .assertEqual (prop ["id" ], "P93" )
450+ # -----
451+ remove_part_mediawiki = batch .commands ()[1 ]
452+ self .assertRefCount (entity , "P31" , 2 )
453+ self .assertRefPartsCount (entity , "P31" , 2 , ipart = 0 )
454+ self .assertRefPartsCount (entity , "P31" , 3 , ipart = 1 )
455+ remove_part_mediawiki .update_entity_json (entity )
456+ self .assertRefCount (entity , "P31" , 1 )
457+ self .assertRefPartsCount (entity , "P31" , 2 , ipart = 0 )
458+ with self .assertRaises (NoReferenceParts ):
459+ # try to remove it again
460+ remove_part_mediawiki .update_entity_json (entity )
461+ # -----
462+ remove_42 = batch .commands ()[2 ]
463+ self .assertRefCount (entity , "P31" , 1 )
464+ self .assertRefPartsCount (entity , "P31" , 2 , ipart = 0 )
465+ remove_42 .update_entity_json (entity )
466+ self .assertRefCount (entity , "P31" , 0 )
467+ # -----
468+ remove_42_again = batch .commands ()[3 ]
469+ with self .assertRaises (NoReferenceParts ):
470+ # try to remove it again
471+ remove_42_again .update_entity_json (entity )
472+
430473 def test_add_reference (self ):
431474 text = """
432475 Q12345678|P31|somevalue|S93|"https://example.com/"
0 commit comments