"""Unit tests for the is_deleted predicate helper.""" import pytest from abacus_worksheet.models.worksheet_adjustment import WorksheetAdjustment from abacus_worksheet.utils.deletion_status import predicates def _sql(pred): return str(pred.compile(compile_kwargs={'literal_binds': True})) def test_predicates_active_deleted_all(): """False/True return the expected column predicates; None returns [].""" active = predicates(WorksheetAdjustment, False) deleted = predicates(WorksheetAdjustment, True) assert [_sql(p) for p in active] == [ 'worksheet_adjustment.deleted_at IS NULL', 'worksheet_adjustment.deleted_by IS NULL', ] assert len(deleted) == 1 dsql = _sql(deleted[0]) assert 'deleted_at IS NOT NULL' in dsql assert 'deleted_by IS NOT NULL' in dsql assert ' OR ' in dsql assert predicates(WorksheetAdjustment, None) == [] def test_predicates_rejects_non_bool(): """A non-bool, non-None value raises ValueError.""" with pytest.raises(ValueError): predicates(WorksheetAdjustment, 'garbage')