@@ -235,6 +235,78 @@ def test_deletes_attributes(cadwork) -> None:
235235 cadwork .ac .set_user_attribute .assert_called_once_with ([123 ], 700 , "" )
236236
237237
238+ def test_contains_data (cadwork ) -> None :
239+ element = Element (123 )
240+
241+ # Without value
242+ cadwork .ac .get_additional_data .return_value = ""
243+ assert "first" not in element .data
244+ cadwork .ac .get_additional_data .assert_called_once_with (123 , "first" )
245+
246+ # With value
247+ cadwork .ac .get_additional_data .return_value = "Test Value"
248+ assert "second" in element .data
249+ cadwork .ac .get_additional_data .assert_called_with (123 , "second" )
250+
251+
252+ def test_gets_data (cadwork ) -> None :
253+ element = Element (123 )
254+
255+ # Without value
256+ cadwork .ac .get_additional_data .return_value = ""
257+ with pytest .raises (KeyError ):
258+ _ = element .data ["third" ]
259+ cadwork .ac .get_additional_data .assert_called_once_with (123 , "third" )
260+ assert element .data .get ("third" , None ) is None
261+ assert element .data .get ("third" , "Default" ) == "Default"
262+
263+ # With value
264+ cadwork .ac .get_additional_data .return_value = "Test Value"
265+ assert element .data ["fourth" ] == "Test Value"
266+ cadwork .ac .get_additional_data .assert_called_with (123 , "fourth" )
267+ assert element .data .get ("fourth" , None ) == "Test Value"
268+ assert element .data .get ("fourth" , "Default" ) == "Test Value"
269+
270+
271+ def test_sets_data (cadwork ) -> None :
272+ element = Element (123 )
273+
274+ # Base case
275+ element .data ["fifth" ] = "New Value"
276+ cadwork .ac .set_additional_data .assert_called_once_with ([123 ], "fifth" , "New Value" )
277+
278+ # Without value
279+ cadwork .ac .get_additional_data .side_effect = ["" , "Default Value" ]
280+ assert element .data .setdefault ("sixth" , "Default Value" ) == "Default Value"
281+ cadwork .ac .get_additional_data .assert_called_with (123 , "sixth" )
282+ cadwork .ac .set_additional_data .assert_called_with ([123 ], "sixth" , "Default Value" )
283+
284+ # With value
285+ cadwork .ac .set_additional_data .reset_mock ()
286+ cadwork .ac .get_additional_data .reset_mock (side_effect = True )
287+ cadwork .ac .get_additional_data .return_value = "Existing Value"
288+ assert element .data .setdefault ("seventh" , "Default Value" ) == "Existing Value"
289+ cadwork .ac .get_additional_data .assert_called_with (123 , "seventh" )
290+ cadwork .ac .set_additional_data .assert_not_called ()
291+
292+
293+ def test_deletes_data (cadwork ) -> None :
294+ element = Element (123 )
295+
296+ # Without value
297+ cadwork .ac .get_additional_data .return_value = ""
298+ with pytest .raises (KeyError ):
299+ del element .data ["first" ]
300+ cadwork .ac .get_additional_data .assert_called_once_with (123 , "first" )
301+
302+ # With value
303+ cadwork .ac .get_additional_data .return_value = "Test Value"
304+ del element .data ["second" ]
305+ cadwork .ac .get_additional_data .assert_called_with (123 , "second" )
306+ cadwork .ac .delete_additional_data .assert_called_once_with ([123 ], "second" )
307+ cadwork .ac .set_additional_data .assert_not_called ()
308+
309+
238310def test_deletes_element (cadwork ) -> None :
239311 element = Element (123 )
240312 element .delete ()
0 commit comments