diff --git a/tests/table/test_init.py b/tests/table/test_init.py index 69bbab527e..71a26fb9d8 100644 --- a/tests/table/test_init.py +++ b/tests/table/test_init.py @@ -1378,3 +1378,13 @@ def test_remove_statistics_update(table_v2_with_statistics: Table) -> None: table_v2_with_statistics.metadata, (RemoveStatisticsUpdate(snapshot_id=123456789),), ) + + +def test_all_table_updates_have_dispatch() -> None: + # ensures that every TableUpdate subclass has a corresponding `_apply_table_update` dispatch function. + from pyiceberg.table.update import TableUpdate, _apply_table_update + + table_update_classes = set(TableUpdate.__origin__.__args__) # type: ignore + dispatch_classes = set(_apply_table_update.registry.keys()) + missing_dispatch = table_update_classes - dispatch_classes + assert not missing_dispatch, f"Missing dispatch function for: {missing_dispatch}"