@@ -103,6 +103,16 @@ class RemoveQualRefTests(TestCase):
103103 },
104104 },
105105 },
106+ {
107+ "property" : {
108+ "id" : "P84267" ,
109+ "data_type" : "quantity" ,
110+ },
111+ "value" : {
112+ "type" : "value" ,
113+ "content" : {"amount" : "+42" , "unit" : "1" },
114+ },
115+ },
106116 ],
107117 },
108118 ],
@@ -194,11 +204,17 @@ def test_remove_qualifier(self):
194204 self .assertEqual (
195205 entity ["statements" ]["P65" ][0 ]["qualifiers" ][0 ]["property" ]["id" ], "P65"
196206 )
207+ with self .assertRaises (NoQualifiers ):
208+ # try to remove it again
209+ remove_p65_qual .update_entity_json (entity )
197210 # -----
198211 remove_p31_qual = batch .commands ()[1 ]
199212 self .assertQualCount (entity , "P31" , 1 )
200213 remove_p31_qual .update_entity_json (entity )
201214 self .assertQualCount (entity , "P31" , 0 )
215+ with self .assertRaises (NoQualifiers ):
216+ # try to remove it again
217+ remove_p31_qual .update_entity_json (entity )
202218 # -----
203219 remove_nothing = batch .commands ()[2 ]
204220 self .assertQualCount (entity , "P65" , 1 )
@@ -210,6 +226,8 @@ def test_remove_reference(self):
210226 text = """
211227 REMOVE_REF|Q12345678|P65|42|S31|somevalue
212228 REMOVE_REF|Q12345678|P31|somevalue|S93|"https://www.mediawiki.org/"
229+ REMOVE_REF|Q12345678|P31|somevalue|S84267|42
230+ REMOVE_REF|Q12345678|P31|somevalue|S84267|42
213231 """
214232 batch = self .parse (text )
215233 entity = copy .deepcopy (self .INITIAL )
@@ -219,14 +237,46 @@ def test_remove_reference(self):
219237 with self .assertRaises (NoReferenceParts ):
220238 remove_nothing .update_entity_json (entity )
221239 self .assertRefCount (entity , "P65" , 0 )
240+ # ---
241+ prop = entity ["statements" ]["P31" ][0 ]["references" ][0 ]["parts" ][0 ]["property" ]
242+ self .assertEqual (prop ["id" ], "P93" )
243+ prop = entity ["statements" ]["P31" ][0 ]["references" ][1 ]["parts" ][0 ]["property" ]
244+ self .assertEqual (prop ["id" ], "P93" )
222245 # -----
223246 remove_part_mediawiki = batch .commands ()[1 ]
224247 self .assertRefCount (entity , "P31" , 2 )
225248 self .assertRefPartsCount (entity , "P31" , 2 , ipart = 0 )
226- self .assertRefPartsCount (entity , "P31" , 2 , ipart = 1 )
249+ self .assertRefPartsCount (entity , "P31" , 3 , ipart = 1 )
227250 remove_part_mediawiki .update_entity_json (entity )
228251 self .assertRefCount (entity , "P31" , 2 )
229252 self .assertRefPartsCount (entity , "P31" , 2 , ipart = 0 )
253+ self .assertRefPartsCount (entity , "P31" , 2 , ipart = 1 )
254+ with self .assertRaises (NoReferenceParts ):
255+ # try to remove it again
256+ remove_part_mediawiki .update_entity_json (entity )
257+ # -----
258+ remove_42 = batch .commands ()[2 ]
259+ self .assertRefCount (entity , "P31" , 2 )
260+ self .assertRefPartsCount (entity , "P31" , 2 , ipart = 0 )
261+ self .assertRefPartsCount (entity , "P31" , 2 , ipart = 1 )
262+ remove_42 .update_entity_json (entity )
263+ self .assertRefCount (entity , "P31" , 2 )
264+ self .assertRefPartsCount (entity , "P31" , 1 , ipart = 0 )
265+ self .assertRefPartsCount (entity , "P31" , 2 , ipart = 1 )
266+ # -----
267+ remove_42_again = batch .commands ()[3 ]
268+ self .assertRefCount (entity , "P31" , 2 )
269+ self .assertRefPartsCount (entity , "P31" , 1 , ipart = 0 )
270+ self .assertRefPartsCount (entity , "P31" , 2 , ipart = 1 )
271+ remove_42_again .update_entity_json (entity )
272+ self .assertRefCount (entity , "P31" , 2 )
273+ self .assertRefPartsCount (entity , "P31" , 1 , ipart = 0 )
230274 self .assertRefPartsCount (entity , "P31" , 1 , ipart = 1 )
275+ with self .assertRaises (NoReferenceParts ):
276+ # try to remove it again
277+ remove_42_again .update_entity_json (entity )
278+ # ----
279+ prop = entity ["statements" ]["P31" ][0 ]["references" ][0 ]["parts" ][0 ]["property" ]
280+ self .assertEqual (prop ["id" ], "P93" )
231281 prop = entity ["statements" ]["P31" ][0 ]["references" ][1 ]["parts" ][0 ]["property" ]
232282 self .assertEqual (prop ["id" ], "P74" )
0 commit comments